Utiliser une boucle For pour parcourir toutes mes cases à cocher

loots007 Messages postés 10 Date d'inscription jeudi 8 juillet 2004 Statut Membre Dernière intervention 18 mars 2005 - 8 juil. 2004 à 20:59
loots007 Messages postés 10 Date d'inscription jeudi 8 juillet 2004 Statut Membre Dernière intervention 18 mars 2005 - 13 juil. 2004 à 12:54
Bonjour,

Je débute en VBA et tous simplement en programmation. Je cherche à faire un truc en VBA dans le cadre d'une application access.
J'ai un formulaire avec environ 200 cases à cocher et je cherche à automatiser une partie du processus d'enregistrement des données grace à une boucles For.

Voici à quoi j'aurai voulu que ça ressemble (il s'agit d'un exemple de tous ce que j'ai essayé pour le moment, je passe tous les autres exemples ... ):

(Toutes mes cases à cocher commencent par "MC" suivient par leur numéro d'ordre ex: MC1, MC2, ... )

For i = 1 To 200
i = i + 1
Case_Des = ["MC" & i ]
If Case_Des.Value = True then
...

J'imagine que vous avez tous de suite vu qu'il y avait des problèmes dans ce que je viens d'écrire, mais je voulais essentiellement montrer le principe.

Alors ???

Merci d'avance

4 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 36
8 juil. 2004 à 21:25
Il suffit d'utiliser les indexs des controles.

tu mets 0 .. 200 dans la priorite index des controles

et le mem nom pour tous les controles

apres tu peux boucler

for i = 0 to ncontrole-1
case(i).text = "valeur" & i
next

-->
solution deux pour vb ou/et vb.net
tu mets le tag du controlesur le meme nom

for each ctl as control in myform.control
if ctl is checkbox and ctl.tag = "nom" then
ctl.txt= "valeur"
end if

ici il faut maitrise un peu plus le vb !
cet exemple ne tourne pas car je l'ai pas sous la main

voila

voila
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
9 juil. 2004 à 02:34
le pb sur vba, je pense, c'est que les index n'existent pas, donc pas de solution apparente.

je pense que le "for each" est plus approprié.

bonne prog
liquide
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
9 juil. 2004 à 10:32
2 pistes possibles pour que tu puisses te débrouiller

1/
Tout d'abord il te faut préfixer correctement et de manière distincte tes cases à cocher.
Après tu fais un For Each oControle in Form(..).Controls
et tu testes que tu es sur un de tes contrôles.

2/
Tu peux aussi nommer tous tes contrôles de cette façon
opt1, opt2, ... optn
For lcpt=1 to n
Me.Controls("opt" & lcpt). .....
next lcpt
0
loots007 Messages postés 10 Date d'inscription jeudi 8 juillet 2004 Statut Membre Dernière intervention 18 mars 2005
13 juil. 2004 à 12:54
Voilà, ça fonctionne. La solution :

For NumberCase = 0 To 5
If Me.Controls("Cocher" & NumberCase) = False Then
Resume Next
Else
MsgBox "Cocher" & NumberCase
End If
Next NumberCase

PS : il y'a sur le formulaire de test 3 cases à cocher qui se nomment respectivement "Cocher0", "Cocher2" et "Cocher4". J'avais essayé au début au début de mettre mon action quand la valeur de ma case prenait la valeur "VRAI", mais mon action se répétait même pour les cases à cocher qui n'existaient pas ???
Enfin, ça fonctionne, encore merci !
0