Auteur de questions
Petit code boucle VBA qui ne fonctionne pas

Discussion générale
-
Bonjour,
Pourriez vous m'aider à résoudre ce problème! J'ai un code VBA que j'ai un peu adapté mais il ne veut fonctionner, j'obtiens le code erreur : erreur de compilation sur "Me.controls"
Dim ctl As Control 'Pour chaque contrôle du formulaire For Each ctl In Me.Controls ' On verifie que le contrôle soit bien une zone de texte If TypeOf ctl Is textBox Then ctl.Locked = True End If Next ctl
Je suis sous word 2007. Merci d'avance!- Type modifié Ciprian Duduiala vendredi 27 avril 2012 10:36 attente de feedback
Toutes les réponses
-
Bonjour à santadrix qui nous a écrit :
Pourriez vous m'aider à résoudre ce problème! J'ai un code VBA que j'ai un peu adapté mais il ne veut fonctionner, j'obtiens le code erreur : erreur de compilation sur "Me.controls"
Vous parlez de "formulaire", c'est un formulaire au sens Word ou c'est un UserForm ?
-
-
Bonjour
C'est un formulaire au sens Word.
Dans ce cas, remplacez Me par Activedocument.
Si tu le souhaite je te laisse le lien de mon fichier :
http://cjoint.com/?0CDkEk0MKBqOk, je regarderai un peu plus tard.
-
Ok, je regarderai un peu plus tard.
Merci bcp de ta part!
Et tiens ce ne sont des controls mais des objets...on vient de me le faire remarquer!!! Pardon ;)
Mais bon lorsque je change la macro et que j'utilise "Dim obj As OLEObject", j'ai le message erreur de compilation : Type défini par l'utilisateur non défini" -
Re
Les formulaires c'est plutôt galère à traiter par macro.
Les contrôles ne sont pas des "Controls", mais des champs dont le code est "Control".
L'ennui c'est que ces champs ne sont pas documentés dnas la version 2010.Voici une macro qui est censée faire ce que vous voulez, sauf qu'elle a l'air de ne rien verrouiller et que je nsais aps où récupérer les valeurs en vba :
Private Sub essai()
Dim ctl As Field
Dim codeChamp As Range
'Pour chaque contrôle du formulaire
For Each ctl In ActiveDocument.Fields
' On verifie que le contrôle soit bien une zone de texte
If ctl.Type = wdFieldOCX Then
Set codeChamp = ctl.Code
If codeChamp.Text = " CONTROL Forms.TextBox.1 " Then
ctl.Locked = True
End If
End If
Next ctl
End Sub