Variable contenant les critères_Dsum [Résolu]

Signaler
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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

Messages postés
16032
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 juin 2021
551
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.....
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
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.
Messages postés
32958
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 juin 2021
351
La rubrique ACCESS n'existe pas. .pour cause... c'est du VBA...
je déplace au bon endroit. ..
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
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
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
Ça ne fonctionne pas, la textbox affiche toujours #error
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
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
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
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).

Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
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)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Et on attend encore la définition demandée....
Bref ...
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
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
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
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
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
ç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
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Statut
Membre
Dernière intervention
21 juin 2016
2
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."
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
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 & """"