Checkbox

Signaler
Messages postés
11
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
9 octobre 2009
-
Messages postés
11
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
9 octobre 2009
-
Bonjour,

je suis actuellement en train de travailler sur un document en Word 2007 qui contient pusieurs CheckBox. J'ai parmi ceux-ci un CheckBox qui active tous les autres. Jusque là pas de souci.

Mon problème est le suivant : à terme, ce fichier va servir de template pour en créer d'autres, et le nombre de CheckBox risque de varier. Il faut donc que je parvienne à créer une boucle qui va parcourir tous les CheckBox, quels que soient leur nombre et leurs noms, et leur assigner la valeur désirée. C'est là que je coince, je ne parviens pas à parcourir la liste des CheckBox présents sur la page.

Quelqu'un aurait-il une solution ?

Merci

8 réponses

Messages postés
580
Date d'inscription
mercredi 20 août 2008
Statut
Membre
Dernière intervention
20 avril 2010
3
bonjour

For Each Control In Me.Controls
If TypeOf Control Is CheckBox Then
'ici tu fait le traitement que tu veut, changer leurs caption, check, uncheck ...
Control.Value = vbChecked 'active le check dans tout les check box
End If
Next


No comment
Messages postés
580
Date d'inscription
mercredi 20 août 2008
Statut
Membre
Dernière intervention
20 avril 2010
3
Messages postés
580
Date d'inscription
mercredi 20 août 2008
Statut
Membre
Dernière intervention
20 avril 2010
3
ah c'été du vb6 voila le code vba

Dim ctrl As Control
For Each ctrl In UserForm1.Controls
    If TypeName(ctrl) = "checkBox" Then
        'ton traitement
    End If
Next ctrl


^^
Messages postés
11
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
9 octobre 2009

J'ai déjà essayé cela mais sans succès. Me.Controls n'est pas reconnu, j'obtiens le message d'erreur suivant : Method or data member not found.
Messages postés
11
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
9 octobre 2009

Oups nos messages se sont croisés, j'essaie la dernière solution donnée.
Messages postés
11
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
9 octobre 2009

Et bien cela ne fonctionne toujours pas, j'ai le message d'erreur suivant : Object required.
Cela est peut-être important, la fonction se trouve dans un évenement Click : CheckBox1_Click()...
Messages postés
580
Date d'inscription
mercredi 20 août 2008
Statut
Membre
Dernière intervention
20 avril 2010
3
tu nous montre ton code stp?


No comment
Messages postés
11
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
9 octobre 2009

Voici mon code

Private Sub CheckBox1_Click()

Dim CheckStatus As Boolean
Dim ctrl As control
CheckStatus = CheckBox1.Value

for each ctrl in userform1.controls
    if typename(ctrl) = "checkbox" then
        ctrl.Value = CheckStatus
    end if
next ctrl

End Sub

J'ai également essayé ceci :


Private Sub CheckBox1_Click()

Dim CheckStatus As Boolean
Dim ctrl As control
Dim chk As checkbox
CheckStatus = CheckBox1.Value

for each ctrl in userform1.controls
    if typename(ctrl) = "checkbox" then
        chk = ctrl
        chk.Value = CheckStatus
    end if
next ctrl

End Sub


Mais sans résultats, le chk = ctrl ne semble pas fonctionner (cela venait d'une source msdn).

Et via d'autres conseils j'ai également testé ceci :


Private Sub CheckBox1_Click()
 
Dim CheckStatus As Boolean
CheckStatus = CheckBox1.Value
 
Dim intI As Integer
 
For intI = 1 To ActiveDocument.FormFields
If TypeName(ActiveDocument.FormFields(intI)) = "CheckBox" Then
ActiveDocument.FormFields(intI).Value = CheckStatus
End If
Next intI
 
End Sub


Et ça ne marche toujours pas, j'ai une erreur à la compilation : Argument not optional, sur l'ActiveDocument.FormFields

J'ai du mal, je ne suis pas habitué au VBA, je programme généralement en C#