Gérer des formulaires sur access vba

penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 - 28 mars 2006 à 09:31
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 - 29 mars 2006 à 17:00
Salut tout le monde, débutant sur vba j'ai un p'tit problème à vous poser:
J'ai 2 formulaires:
Sur le formulaire 1 un champ nombre
Je veux faire un bouton qui ouvre le formulaire 2 et affecte la somme des nombres (Dsum je pense) à un contrôle .
J'ai essayé mais impossible dans la procédure du formulaire 1 d'écrire sur un controle d'un autre formulaire (il ne le reconnait pas)??
Comment faire et que me proposez vous????

Merci d'avance

21 réponses

rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
28 mars 2006 à 15:36
Salut penny,

quelle version d'Access, s'il te plait?
Comment le formulaire 1 ouvre-t-il le formulaire 2? (Quelle commande ou instruction?)

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
28 mars 2006 à 15:44
Merci de me répondre
Voila ce que je veux faire:
J'explique, j'ai 2 formulaires:
formulaire 1: qui donne les heures (format numérique) pour chaque article "rcn" et cela pour chaque mois(ex: 200502)
C'est a dire rcn1 200h 200602
rcn1 125h 200601 etc...
rcn2 144h 200602
rcn2 155h 200601 etc....

Dans le formulaire 2, je veux faire un tableau croisé dynamique donnant :
Pour chaque rcn la somme des heures sur une période de 6 mois données .
Pour l'instant j'arrive a faire la somme des heures mais pas a la spécifier a chaque rcn comment faire??
Et surtout comment afficher sur ce formulaire2
RCN1 avec son total sur 6 mois
RCN2 avec son total sur 6 mois
etc....

Je me sers de vba pour définir mon outil que je veux utiliser a des fins scientifiques c'est le plus pratique et je n'ai qu quelques jours de vba un vrai débutant.

Merci de me répondre .
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
28 mars 2006 à 15:50
version Access?
c'est important!


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
28 mars 2006 à 16:19
malheureusement on a que ca c'est pas faisable ou dit moi ce qui l'ai.

Merci
0

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

Posez votre question
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
28 mars 2006 à 16:28
Si c'est faisable, pour l'instant, je n'en sais rien,
mais lis sur mes lèvres :

Quel est la version de ton Access? :
a- Access 97
b- Access 2000
c- Access 2002 (XP)
d- Access 2003
e- Access 2006


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
28 mars 2006 à 16:58
Bon, je part du principe que tu as Access 2000 (tant pis si je me trompe)

Pour répondre à ta question initiale, comment écrire dans le formulaire 2,
dans ton formulaire 1(que j'ai nommé, dans cet exemple, Formulaire1), écris :

'il faut un bouton nommé Commande0, dans le formulaire 1
Private Sub Commande0_Click()
Dim varTermes() As Variant
Dim strOpenArgs As String
'prépare les valeurs à passer
ReDim varTermes(2)
varTermes(0) = "txtChamp1=123"
varTermes(1) = "txtChamp2=ABC"
varTermes(2) = "txtChamp3=" & Now
'concatène la chaine d'arguments
strOpenArgs = Join(varTermes, ";")

DoCmd.OpenForm "Formulaire2", acNormal, , , acFormEdit, acDialog, strOpenArgs


DoCmd.Close acForm, "Formulaire2", acSaveNo
End Sub

et dans ton formulaire 2 (que j'ai nommé, dans cet exemple, Formulaire2), écris :

'il faut un bouton nommé Commande6, dans le formulaire 2
Private Sub Commande6_Click()
With Me
.Tag = vbYes
.Visible = False
End With
End Sub


'il faut un bouton nommé Commande7, dans le formulaire 2
Private Sub Commande7_Click()
With Me
.Tag = vbYes
.Visible = False
End With
End Sub


'il faut 3 champs nommés txtChamp1,txtChamp2,txtChamp3, dans le formulaire 2
Private Sub Form_Load()
Dim varTermes As Variant
Dim strOpenArgs As String
'récupère la chaine d'arguments
strOpenArgs = Me.OpenArgs
'sépare les mots de la chaine
varTermes = Split(strOpenArgs, ";")
'mets les valeurs dans les champs
Me.txtChamp1.SetFocus
Me.txtChamp1.Text = Split(varTermes(0), "=")(1)
Me.txtChamp2.SetFocus
Me.txtChamp2.Text = Split(varTermes(1), "=")(1)
Me.txtChamp3.SetFocus
Me.txtChamp3.Text = Split(varTermes(2), "=")(1)
End Sub

voilà, essayes (copie/colle dans ton code, et vérifie que les évènements sont bien rattachés aux boutons, en regardant dans les propriétés)

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
29 mars 2006 à 09:22
Bonjour!!
Merci pour le code que tu m 'as donné trés utile!!
Mais le gros soucis que j'ai c'est que les données que j'ai sont nombreux : et cela pour chaque "rcn" serait il possible de faire une boucle pour chaque rcn par exemple...

merci d'avance
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
29 mars 2006 à 10:06
Quelques soucis avec le code précédent d'abord,
sur le-dit form2 les champs que je dois creer qui portent le meme non ("txtchamp1") je les met en mode création sous une zone de texte et lui affecte le meme nom au niveau de la source ou pas??
ensuite si vous pouvez me renseigner sur la fonction split son fonctionnement car l'erreur que j'ai est "l'indice n'appartient pas à la slection" de quoi peut il s'agir??

thanks!
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
29 mars 2006 à 10:21
Non, non,
il y a 3 champs txtChamp1, txtChamp2, txtChamp3.

ensuite "l'indice n'appartient pas à la sélection" est une erreur qui se doit se déclencher par ce que :

- soit tu n'as rien mis dans strOpenArgs dans la procédure Commande0_Click du formulaire 1 :

'prépare les valeurs à passer
ReDim varTermes(2)
varTermes(0) = "txtChamp1=123"
varTermes(1) = "txtChamp2=ABC"
varTermes(2) = "txtChamp3=" & Now
'concatène la chaine d'arguments
strOpenArgs = Join(varTermes, ";")

- soit tu ne passes pas cette chaine lors de l'ouverture du formulaire 2 :
DoCmd.OpenForm "Formulaire2", acNormal, , , acFormEdit, acDialog, strOpenArgs

- soit c'est à cause de "je ne sais pas encore mais je te propose un petit test", ajoutes la modification en rouge ci-dessous (dans le Form_Load du formulaire 2) :
'sépare les mots de la chaine
varTermes = Split(strOpenArgs, ";")
msgbox ubound(varTermes )
'mets les valeurs dans les champs
Me.txtChamp1.SetFocus
Me.txtChamp1.Text = Split(varTermes(0), "=")(1)

et dis-moi ce que te dit la boite quand elle s'ouvre (si jamais elle s'ouvre)

à tout de suite,
bon, en plus, j'ai regardé ton besoin, et je ne suis pas tout à fait sûr que la solution est adpatée au besoin (mais ça t'aura appris quelque chose). Je t'en dirai plus après.


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
29 mars 2006 à 10:50
j'ai fais un test en me limitant d'abord a un seul champ et la boite de dialogue m'affiche 0! j'aimerai bien savoir ce que fait cette boite qu'est ce que cela signifie t'il?

Sur mon problème hier j'ai fait grace a tout ca un petit code qui me permet de faire la somme des élements d'un champ heures sur un critère date fixé c'est celui la:
un bouton qui lors du click
Private Sub statsperRCN_Click()
Dim SQL As Double
je copie les données du formulaire 1
Dim rs As Object
Set rs = Me.Recordset.Clone
je fais la somme des heures qui sont >200509

sommeh = DSum("[SommeDeFiability hours]", "classementideal", (("(classementideal.annéemois)=" & 200509)))
puis j'ouvre le formulaire 1
DoCmd.OpenForm "formulaire1", acNormal

End Sub

ensuite dans le formulaire 1 j'ai crée un controle:
Private Sub Form_Load()
Me.Étiquette1.Caption = sommeh

End Sub

qui correspond quand je vérifie.


Mais le hic c'est que ca concerne toutes les valeurs rcn correspondantes


est ce que la boucle for each rcn pourra me permettre de faire ca? et comment? c'est pour cela que je pense que c'est faisable enfin je crois parce que si je veux afficher aprés pour chaque rcn sur une page différente je sais pas faire....


A plus
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
29 mars 2006 à 11:50
Ubound(varTermes) renvoie le plus grand indice du tableau, si c'est un tableau, sinon, il renvoie une erreur (crois-je). Ici, cela corrobore tes spécifications, puisque tu n'a passé qu'un champ dans strOpenArgs (ravi de voir que tu t'appropries l'exemple et que tu le modifies pour comprendre, c'est la bonne démarche!).

Tiens, pour ta culture perso, quand tu ne sait pas ce que fait un instruction, tu la double-cliques (pour la surligner), et tu appuies sur la touche [F1], et l'aide t'en dira toujours bien plus que moi.

Ensuite, dans l'appel de DSum, tu peux affiner ton critère en utilisant l'opérateur AND :

sommeh = DSum("[SommeDeFiability hours]", "classementideal", ( ("(classementideal.annéemois)=" & 200509) AND ( "(classementideal.article) ='rcn1'" ) ) )

bien sûr, pour ce que j'écris fonctionne, il faut que le champ article (de type chaine) existe dans classementideal (requête?), et que la valeur rcn1 existe aussi, à moins qu'il ait un identifiant numérique (ce qui est mieux), genre 1.

en ce qui concerne for each, dans l'état des informations que je possède sur ton code, non.

Pour ta culture perso des forums, évites de mettre plein de questions dans un seul post, ou même d'enchainer les post avant d'avoir une réponse. On met beaucoup plus de temps à te répondre, et toi, pendant ce temps, tu pars encore plus loin dans tes investigations, et tu reviens avec un wagon de questions.

Enfin, ta problématique (qui n'est pas un problème, mais un besoin) n'est pas une problématique insurmontable, même pas rare (je ne cherche pas à blesser ton orgueil), mais si tu ne t'organises pas mieux dans la définition exacte de ton besoin (sans mélanger besoins et solutions envisageables), tu vas te retrouver avec une problématique insurmontable (je ne cherche pas à frimer, mais c'est mon métier, je sais donc de quoi je parle).

Ce qui m'étonne le plus dans ton problème est l'ergonomie d'utilisation. Je m'explique :

d'ordinaire, on affiche une synthèse, et ensuite, éventuellement, sur spécification de l'utilisateur, les détails. Ce qui, transposé à ton cas, donne : on affiche les sommes regroupées par semestre et par article, et si l'utilisateur clique un semestre, on affiche les détails du semestre, donc regroupés par mois et article. Tu as l'air de faire le contraire. Qu'est-ce qui motive ce choix?

Qu'en penses-tu?


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
29 mars 2006 à 13:24
C'est vrai que c'est pas trop clair. L'utilisation de vba pour mon application m'est venu à l'esprit quand j'ai vu les fonctionnalités proposées. Je veux m'en servir pour faire une analyse de fiabilité aéronautique.
Le but final pour moi est de détecter tous les équipements qui posent problèmes donc dans un premier temps je veux afficher pour chaque article (nommé rcn) ses chiffres par semestre sachant que je dispose de toutes les données par mois. ensuite je ferai un graphe évolutif pour chaque article, afin d'en voir le comportement. J'espere que tu me comprends.

Je me limite à ca pour l'instant avant de développer plus.

Pour revenir sur vba la fonction dsum calcule en fonction d'un critère, et j'ai testé mettre les deux comme tu m'as proposé cependant j'ai une incompatibilité de type pourtant l'article est numérique et rcn1 aussi.
Bizarre surtout que quand je fais sommeh DSum("[SommeDeFiability hours]", "classementideal", (RCN) 9) ca marche mais les deux non.
D'ou ma question qu'est ce qu'une incompatibilité de type?
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
29 mars 2006 à 13:24
C'est vrai que c'est pas trop clair. L'utilisation de vba pour mon application m'est venu à l'esprit quand j'ai vu les fonctionnalités proposées. Je veux m'en servir pour faire une analyse de fiabilité aéronautique.
Le but final pour moi est de détecter tous les équipements qui posent problèmes donc dans un premier temps je veux afficher pour chaque article (nommé rcn) ses chiffres par semestre sachant que je dispose de toutes les données par mois. ensuite je ferai un graphe évolutif pour chaque article, afin d'en voir le comportement. J'espere que tu me comprends.

Je me limite à ca pour l'instant avant de développer plus.

Pour revenir sur vba la fonction dsum calcule en fonction d'un critère, et j'ai testé mettre les deux comme tu m'as proposé cependant j'ai une incompatibilité de type pourtant l'article est numérique et rcn1 aussi.
Bizarre surtout que quand je fais sommeh DSum("[SommeDeFiability hours]", "classementideal", (RCN) 9) ca marche mais les deux non.
D'ou ma question qu'est ce qu'une incompatibilité de type?
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
29 mars 2006 à 13:54
Dans ce que je t'ai donné, il y a une erreur, il faut écrire :

sommeh = DSum("[SommeDeFiability hours]", "classementideal", "annéemois' 200509<gras>' AND rcn</gras>9")

comme tu peux le voir, dans notre cas, il n'est pas nécessaire de préciser le nom du domaine dans les termes de l'expression :
(classementideal.annéemois) devient annéemois
un mot d'ordre simple, se débarraser des parenthèses inutiles.

attention, si tu copies/colles cet exemple, j'ai inséré un retour chariot juste avant le critère (le critère est entouré de guillemets verts), et est composé de 2 expressions :
- la première travaille sur des données de type Texte, et, à ce titre, la valeur (à droite du signe égal) doit être entourée d'apostrophes.
- la seconde travaille sur des données numériques, et la valeur ne doit pas être entourée de quoi que se soit (si ce n'est des parenthèses, si la valeur est une expression).

si on met une valeur de type Texte dans une variable de type numérique, VB essaye automatiquement de la transtyper (on appelle ça "caster", parce qu'en anglais "cast").
si la valeur ne contient que des caractères représentant des chiffres, VB parvient à la transtyper, sinon, une erreur survient et te dit "incompatibilité de type". Ca a l'air simple vu comme ça, mais ça n'est pas toujours le cas, il existe des subtilités qui font qu'on ne voit pas toujours au 1er coup d'oeil qu'on est sur le point de transgresser la loi de la "Compatibilité des Types". Je ne peux pas tous te les citer, j'en connais au moins un 30aine, et au moins autant que je ne connais pas encore!

voilà, essaies comme ça.


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
29 mars 2006 à 14:32
Ton avis me serait fort utile parce que sur les deux requetes quand je lance l'un ca marche nickel, l'autre tout seul ca marche aussi sans problème. Mais les deux non, un vrai mystère que j'arrive pas à comprendre:

sommeh = DSum("[SommeDeFiability hours]", "classementideal", "annéemois >= 200509" ) ok sans pb
sommeh = DSum("[SommeDeFiability hours]", "classementideal", "RCN=9")
sans soucis
mais les deux non:
sommeh = DSum("[SommeDeFiability hours]", "classementideal", "annéemois >= 200509" And "RCN=9")

Eclaire ma lanterne c'est le black out total.
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
29 mars 2006 à 14:53
CA MARCHE!!! c'est fou
j'experimente et je tiens au courant!!
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
29 mars 2006 à 15:10
D'abord,

lis bien ce que j'ai écris, l'argument critères est composé de 2 expressions et est entouré de guillemets :

"annéemois >= 200509" And "RCN=9", non

"annéemois >= 200509 And RCN=9", oui

ensuite, je crois comprendre que le stockage d'annéemois fonctionne, mais à plus ou moins long terme, ça va "partir en cacahuète". Ici, s'il fonctionne, c'est parce qu'il est de type numérique. Mais on n'a jamais vu personne stocker ce genre de données, c'est très barbare. Tu as le choix :
- 2 champs de type numérique dans la table, un pour année, et un pour mois
- 1 champ de type Date dans la table, mais il te faut une date à stocker (et une vraie date, pas une chaine contenant la représentation littérale d'une date, à cause des problème de format).(la date, c'est vraiment ce qu'il y a de mieux, je ne te dis pas pourquoi, parce que je vais te dire plein d'autres choses, mais il faut me croire)

Si tu n'as pas de date à stocker, alors choisis la 1ère solution, et ça te fera un critère tel que suit :

"annee > = 2005 And mois>=09 And RCN=9"

ah oui, j'oubliait, on ne mets pas d'accent dans les noms d'identificateurs (de tables, de champs, de contrôles, de formulaire,...), Access le tolère, mais très peu d'autres langages, et encore moins d'autres base de données, et comme j'ai cru comprendre que tu réalises une maquette, vaut mieux suivre ce conseil!

D'ailleurs, c'est un très bon choix de ta part que de choisir Access pour réaliser une maquette. J'en profites pour te dire que, dans mon domaine professionnel, je rencontre beaucoup de projets qui sont passés par une phase de maquettage (souvent d'ailleurs pour aider à spécifier le besoin, et plus particulièrement dans le domaine scientifique).

Malheureusement, le maquettage est parfois long, et il grignote pas mal les budgets alloués (qui ne sont pas, comme beaucoup le croient, extensibles à volonté).

Alors un jour, un décideur se penche sur l'avancement du projet, et décide (c'est son métier, et il est très fort dans ce domaine) de mesurer combien a coûté le maquettage, et combien va coûter la réalisation de l'application définitive (démarche très méthodique de sa part, il est vraiment bon!).

Le problème est, que quand, dans la maquette, on n'a pas pris le soin de développer méthodiquement (certains diraient proprement), le portage (la récupération) de ce qu'on a maquetté va coûter exessivement cher, car la cible vers laquelle on porte n'est pas aussi tolérante que la source qui nous a permis de maquetter, et il y a beaucoup de corrections à faire, parfois même fonctionnelles.

Alors le décideur (encore lui!), malin comme un outil d'aide à la décision, va :
- 1./ décider qu'il n'y aura pas de portage.
- 2./ décider qu'on va utiliser la maquette finalisée comme une application finale.
- 3./ décider que le budget restant va être divisé en 2 (voire moins encore) pour la finalisation, parce qu'il y a forcément moins de boulot (il n'y a pas de portage!).
- 4./ décider que les fonctions supplémentaires prévues pour l'application finale, il va falloir les implémenter dans la maquette finalisée (et souvent, la maquette ne sait pas le faire).

Alors, l'outil livré (en retard sûrement), ne correspond pas exactement à ce que veulent les utilisateurs, a pleins de problèmes de fonctionnement, est très limité au niveau évolutif (quoi changer l'icone pour avoir un nouvel état, 2 semaines ?!?),

et on dira que c'est de la faute des développeurs, et les développeurs n'auront pas d'autre choix que de dire : "C'est encore un bug de Microsoft, on attend le patch", et Microsoft de dire "le produit est trop vieux, il n'y a plus de support!", alors les utilisateurs descendent dans la rue et protestent contre le CPE et la loi contre le téléchargement !! non, j'déconne.

je t'ai sûrement saoûlé, mais j'adore que les projets aboutissent (même si ce n'est pas les miens, à part ceux de la concurrence bien sûr :))


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
29 mars 2006 à 15:38
Non tu m'as surtout pas soulé parce que a long terme si ce que je dois faire marche bien il sera surement développé pour usage courant dans la compagnie enfin j'espere.

Je découvre et c'est vraiment passionnant.
Pour en revenir à mon problème maintenant que ca marche pour un article je me suis dit pourquoi pas spécifier.
Je m'explique:
j'ai crée un modifiable qui filtre les données rcn en cliquant sur un article t'affiche que les heures de cet article (ca marche nickel)
maintenant mon soucis c'est dans l'autre formulaire de faire la somme pour cet article facile je me suis dis je remplace la valeur que je rentrais (rcn=9) par modifiable et le tour est joué! C'était sans compté sur la tenacité de VBA!!!
'je nomme myvalrcn cette valeur
dim myvalrcn as string
MyValRCN = CStr(Me![Modifiable45])


sommeh = DSum("[SommeDeFiability hours]", "classementideal", "annéemois >= 200509 And RCN=MyValRCN")
DoCmd.OpenForm "formulaire1", acNormal

Est ce le string qui dérange?? qu'en penses tu?
j'avais défini en string pour le filtre sur le modifiable.

Penny
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
29 mars 2006 à 16:00
J'ai toujours été contre les String, c'est vulgaire :)
non, sans blaguer.
une chaine de caractères constante, est un groupe de caractères entouré de guillemets (le groupe est entouré). Donc :
"annéemois >= 200509 And RCN=MyValRCN" est une constante de chaine (et il y a une erreur car MyValRCN n'est pas un nombre (mais une chaine de caractères), alors que RCN attend à être comparée à un nombre).

On a le droit de construire une variable de chaine en concaténant plusieurs variables ou plusieurs constantes. Donc :
"annéemois > =" & 200509 & " And RCN= " & MyValRCN 'attention aux espaces

Là, 200509 est un constante de type numérique, et MyValRCN une variable de type String . Quand on concatène le tout, on a bien une variable de type String, que l'on peut passer en temps qu'argument critère.

Par contre, cela ne fonctionne que si tu mets un nombre dans ton champ de saisie (modifiable n'est pas le terme approprié, il existe des listes modifiables...). Pourquoi?
Quand tu récupères ce qu'il a dans Me![Modifiable45], tu récupères une valeur de type String, c'est normal.
Par contre, tu as intérêt à essayer tout de suite de le mettre dans une variable numérique (de type Integer, Long, Single, Double, Currency...), car si l'utilisateur à écris "ABC" dans le champ de saisie, tu as tout de suite une erreur, tu peux dire à l'utilisateur qu'il faut saisir des chiffres.
Sinon, la valeur ira tranquillement jusqu'à ton filtre (critères), et l'erreur ne se déclenchera qu'ici (on appelle ça de la propagation d'erreur, et on lutte contre, car ici, on a que 2 niveaux, mais parfois, il y a de nombreux niveaux avant que l'erreur apparaisse).
Donc :

Dim lngMyValRCN As Long
lngMyValRCN = Clng(Me![Modifiable45])

et :

"annéemois >= 200509 And RCN=" & Cstr(lngMyValRCN)

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
29 mars 2006 à 16:33
Alors merci pour l'astuce ca marche comme sur des roulettes!
Je vais maintenant faire tous les autres calculs necessaires a mettre sur mon tableau avant de mettre en place le graphique dont je te parlais surement que ton aide me sera indispensable.

A+
0
Rejoignez-nous