speedy31
21 sept. 2007 à 09:17
Bonjour,
Ta macro fonctionne à merveille, même dans plusieurs tableaux, je te le confirme !
Par contre, j'ai eu un problème ce matin, en voulant utiliser ta macro dans mon document définitif.
Je place mes CheckBox, copie-colle ta macro, mais rien à faire... j'avais toujours l'erreur :
Variable objet ou variable bloc With non définie (erreur 91)
Pourtant, tout fonctionne parfaitement dans mon essai de document réalisé hier soir.
J'ai cherché un bon bout de temps, et j'ai fini par trouver...un truc de fou...
Dans le template de document que j'utilise (qui est assez complexe, y des sections, des champs, des commentaires,des tableaux, bref, tout un paquet d'objets), il y a en première page le logo de la boite. je me suis aperçu que le fait d'enlever ce logo solutionnait mon problème.
En cherchant encore, j'ai trouvé la manip suivante :
Clic droit sur l'image / Objet Image / Convertir....
Là, je sélectionne "Activer comme...." et dans la liste je choisi "Image Microsoft Word".
Et là, j'enregistre le doc, et c'est gagné...
Voilà, je pense que ta boucle qui parse les objets du documents ne devait pas aimer de tomber sur l'image dans un format qu'elle ne connaissait pas, et cette manip permet de lire correctement l'objet image...enfin c'est ce que je pense.
Donc voilà, super grand merci, maintenant, c'est NICKEL, mon doc est fini, j'ai mes 300 checkbox dans pleins de tableaux, et cela fonctionne à merveille, à la fin, tout est calculé automatique.
MERCI !
1- les cases à cocher ont été insérées via la boite à outils Formulaires.
2- si la case à cocher
3- il s'agit bien de cases à cocher et non de radio-boutons.
Pour mon document, je peux tout à fait utiliser une case à cocher par test (avec la fameuse option TripleState correspondant à mes état OK, KO et NON TESTE), dans ce cas, il me faudrait savoir comment compatibiliser les cases à OK, KO etc... pour faire le compte rendu des tests à la fin.
Tu définit la propriéte "Name" de chaque CheckBox ainsi : ckb1, ckb2, ckb3, ..., ckb20.
Tu définit la propriéte "TripleState" de chaque CheckBox à True.
A partir de là, chaque CheckBox pour être affecté de 3 valeur :
pas coché = NON TESTE = False
coché = TEST OK = True
coché grisé = TEST PAS OK = Null.
Voici un bout de code que tu pourras adapté à ta guise :
Sub TestValueCkb() Dim Ctrl As Variant Dim Controle As InlineShape Dim Check As MSForms.CheckBox With ActiveDocument For Each Controle In .InlineShapes If StrComp(Left(Controle.OLEFormat.Object.Name, 3), "ckb", vbTextCompare) = 0 Then Set Check = Controle.OLEFormat.Object If IsNull(Check.Value) Then Ctrl = 1 Else Ctrl = Check.Value End If Select Case Ctrl Case True 'TEST OK MsgBox Controle.OLEFormat.Object.Name & " True", vbOKOnly, "" Case False 'TEST PAS OK MsgBox Controle.OLEFormat.Object.Name & " False", vbOKOnly, "" Case 1 'PAS DE TEST MsgBox Controle.OLEFormat.Object.Name & " Null", vbOKOnly, "" End Select End If Next End With Set Controle = Nothing Set Check = Nothing End Sub