Arn044
Messages postés2Date d'inscriptionvendredi 2 avril 2021StatutMembreDernière intervention 3 avril 2021
-
Modifié le 2 avril 2021 à 19:04
Arn044
Messages postés2Date d'inscriptionvendredi 2 avril 2021StatutMembreDerniè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
cs_Le Pivert
Messages postés7885Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention28 mars 2023137 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