Variable contenant les critères_Dsum

Résolu
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 - Modifié par Whismeril le 27/11/2014 à 16:08
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 27 nov. 2014 à 22:40
Bonjour,
Ca va faire bientôt 3h que je cherche sur le net sans résultat.
A l'aide de boite de dialogue, je réalise un filtre en fonctions des choix de l'utilisateur. J'applique alors ce filtre à mon form.

Je voudrais une textbox contenant le sous-total des éléments filtrés.

Il y a sans doutes plusieurs solutions.
Ici, je voulais simplement mettre ma variable string contenant le filtre en toutes lettres dans la fonction Dsum du control source de ma textbox.

J'ai essayé:

= Dsum("Somme"; "T_Dépenses"; 'Filtre')
= Dsum("Somme"; "T_Dépenses"; " & Filtre &")
= Dsum("Somme"; "T_Dépenses"; "'" & Filtre "'")


sans succès !

Help pls !
(Ps: s'il y a une solution qui fais la somme directement sur ce qui est déjà trié sans utiliser ma variable 'Filtre' ça m'arrange encore mieux !)

Merci

EDIT: Ajout de la coloration syntaxique.

5 réponses

Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
27 nov. 2014 à 16:07
Bonjour quelle version de VB?
VBA, VB6; VBS, VB.Net?

D'ou viennent tes valeurs, ton filtre (excel, base de données avec requette stoquées ou non, Linq.....)

Pour pouvoir répondre à une question, il faut la poser avec tous les éléments.....
0
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 2
27 nov. 2014 à 16:25
Désolé, je croyais tellement avoir mis le sujet dans une catégorie qui en fait n'existe pas, la catégorie access !

J'utilise access 2010. J'ai une base de donnée on ne peut plus simple, avec un champ date, un champ somme, un champ article, un champ catégorie. Le formulaire affiche simplement la base donnée sous forme de grille.

J'ai créé un 2ème formulaire qui fais office de boite de dialogue. Ce formulaire permet de sélectionner une ou plusieurs catégories.

A la fermeture du formulaire, ma variable filtre contient ceci par exemple:
"[Catégorie] Like 'Divers'"


J'ai un bouton filtrer qui utilise ce code:
    Me.Filter = Filtre
Me.FilterOn = True


Je voudrais simplement avoir une textbox qui contient le sous-total des éléments ainsi filtrés.
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
27 nov. 2014 à 16:31
La rubrique ACCESS n'existe pas. .pour cause... c'est du VBA...
je déplace au bon endroit. ..
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2014 à 17:30
Bonjour,
le signe = doit se trouver lui-même entre guillemets, puisque la propriété controlsource est du type string
L'aspect devrait donc être du genre :

Me.Ta_textbox.ControlSource = "=DSum('[........]','......','[.....]')"

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 2
27 nov. 2014 à 17:48
Ça ne fonctionne pas, la textbox affiche toujours #error
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2014 à 17:55
on ne sait pas ce que tu as finalement écrit, ni ce que contient ta variable filtre !
Tes ";" devraient être des ","
Lis ceci, analyse et adapte :
http://bytes.com/topic/access/answers/725292-dsum-controlsource-text-box-report-not-working
0
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 2
27 nov. 2014 à 18:34
J'ai noté au dessus ce que peut contenir ma variable filtre.
J'ai noté ceci comme vous me l'avez conseillé:
Me.Text_Dsum.ControlSource = "=DSum('[Somme]','[T_Dépenses]','[Filtre]')"

J'ai également essayé ceci ne sachant pas si c'était une erreur de votre part:
Me.Text_Dsum.ControlSource = "=DSum('[Somme]','T_Dépenses','[Filtre]')"


j'avais également déjà essayé le lien que vous m'avez donné mais cela permet d'utiliser une variable comme valeur et non comme critère complet
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2014 à 19:09
Et où et comment (je ne le vois pas) est définie la variable filtre ?
(c'est la seconde fois que je te le demande).

0
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 2
27 nov. 2014 à 20:28
J'ai un module "module_var" qui contient le code suivant:
Option Compare Database
Global Filtre As String

Je voulais mettre la variable globale dans le fameux dsum mais je n'arrivais pas alors je copie le fichier dans une variable locale Filtre que je dimensionne dans (general) comme ceci:
Public Filtre as String


(Je crois que je vais refaire ça en c#, access commence vraiment à m'énerver)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2014 à 20:33
Et on attend encore la définition demandée....
Bref ...
0
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 2
Modifié par edwinzap le 27/11/2014 à 21:29
C'est chipoter sur des détails !!! Car le problème n'est pas là !
J'ai donné plus haut ce que peut contenir Filtre !
Mais puis-ce que vous y tenez tellement à voir le code:

For i = 0 To List_categories.ListCount - 1
If Filtre <> "" Then
Filtre = Filtre & " OR [Catégorie] Like '" & List_categories.ItemData(i) & "'"
Else
Filtre = "[Catégorie] Like '" & List_categories.ItemData(i) & "'"
End If
Next
Text_filtre = Filtre
0
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 2
Modifié par edwinzap le 27/11/2014 à 22:04
En fait ma question est simple, c'est comment mettre une variable globale dans une chaine de caractères?

Comment mettre mon module_var.filtre (donc la variable globale filtre) dans une chaine de caractère?

En fait mon module_var.filtre doit se trouver comme chaine complète de critères dans la fonction Dsum
0
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 2
27 nov. 2014 à 22:10
ça va, je ne suis pas le seul incompris ayant le même problème tjrs non résolu:
http://bytes.com/topic/access/answers/943437-get-sum-strwhere-table-filter
0
edwinzap Messages postés 149 Date d'inscription samedi 29 septembre 2012 Statut Membre Dernière intervention 21 juin 2016 2
27 nov. 2014 à 22:17
Sujet résolu !
Il faut utiliser =sum à la place de =Dsum
Bizarre que personne ne me l'ai dit, pourtant je l'ai bien dis clairement:
"Je voudrais simplement avoir une textbox qui contient le sous-total des éléments ainsi filtrés."
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2014 à 22:40
Si (et seulement si) ta question n'est finalement que cela (comment construire une chaine de caractères dont une partie est une variable string (et plus rien à alors voir avec la question, telle que posée) :
===>> le plus simplement du monde : en concaténant directement !
en te rappelant toutefois que si la variable doit être mise entre guillemets, il convient de "doubler" ces derniers.
exemples :
titi = "bonjour"
MsgBox "toto " & """" & titi & """"

titi = "'blabla'"
MsgBox "toto " & """" & titi & """"

0
Rejoignez-nous