Utilisation de Checkbox dans une page Word

Signaler
Messages postés
2
Date d'inscription
vendredi 2 avril 2021
Statut
Membre
Dernière intervention
3 avril 2021
-
Messages postés
2
Date d'inscription
vendredi 2 avril 2021
Statut
Membre
Dernière intervention
3 avril 2021
-
Bonjour à tous,
J'ai créé un document Word avec une centaine de cases à cocher.
Je n'ai pas utilisé de formulaire, mes cases sont directement sur ma page Word.
Toutes les cases sont du type "Contrôles ActiveX"
je cherche a les cochées toutes ou bien les décochées toutes suivant l'état d'un bouton, lui aussi directement sur ma page Word.
Vue le nombre important de cases, je ne peux les traiter individuellement, je cherche donc à accéder à mes checkbox avec leurs noms tous identiques ( case1, case2, ... ,case100)
Etant novice en Vba, j'ai déjà essayé beaucoup de "solutions" trouvées dans différents sites, mais aucune ne fonctionne :-(
dont celles-ci :

For Each aField In ActiveDocument.FormFields
If aField.Type = wdFieldFormCheckBox Then Count = Count + 1
Next aField
MsgBox "There are " & Count & " check boxes in this document"


Ce qui semble logique car mes cases ne sont pas dans un formulaire

ou alors

For Each ctrl In ActiveDocument.ContentControls
 If ctrl.Type = wdContentControlCheckBox Then Count = Count + 1
Next ctrl
MsgBox "There are " & Count & " check boxes in this document"


Le retour est toujours zéro, j'ai donc un problème de "type" de checkbox.

Si quelqu'un pouvait bien m'aiguiller sur un début de solution, ce serait très sympa.
Cordialement
Arno

2 réponses

Messages postés
7329
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
8 avril 2021
122
Bonjour,

comme ceci:

Sub TestValueCkb()
Dim Controle As InlineShape
Dim Check As MSForms.CheckBox
With ActiveDocument
    For Each Controle In .InlineShapes
        If StrComp(Left(Controle.OLEFormat.Object.Name, 3), "Che", vbTextCompare) = 0 Then
            Set Check = Controle.OLEFormat.Object
            If Check.Value = True Then
              MsgBox Check.Name
           End If
End If
Next
End With
Set Controle = Nothing
Set Check = Nothing
End Sub
Sub cocher()
Dim Controle As InlineShape
Dim Check As MSForms.CheckBox
With ActiveDocument
    For Each Controle In .InlineShapes
        If StrComp(Left(Controle.OLEFormat.Object.Name, 3), "Che", vbTextCompare) = 0 Then
            Set Check = Controle.OLEFormat.Object
           'Check.Value = False 'tout decocher
           Check.Value = True 'tout cocher
          End If
Next
End With
Set Controle = Nothing
Set Check = Nothing
End Sub


voilà
Messages postés
2
Date d'inscription
vendredi 2 avril 2021
Statut
Membre
Dernière intervention
3 avril 2021

Merci à toi pour ta réponse rapide,
Je vais le mettre en pratique dès le début de semaine au travail.
En core merci
Arno