Utilisation de Checkbox dans une page Word

Arn044 Messages postés 2 Date d'inscription vendredi 2 avril 2021 Statut Membre Dernière intervention 3 avril 2021 - Modifié le 2 avril 2021 à 19:04
Arn044 Messages postés 2 Date d'inscription vendredi 2 avril 2021 Statut Membre Dernière intervention 3 avril 2021 - 3 avril 2021 à 18:30
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
A voir également:

2 réponses

cs_Le Pivert Messages postés 7885 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 28 mars 2023 137
3 avril 2021 à 09:27
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à
0
Arn044 Messages postés 2 Date d'inscription vendredi 2 avril 2021 Statut Membre Dernière intervention 3 avril 2021
3 avril 2021 à 18:30
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
0
Rejoignez-nous