none
Petit code boucle VBA qui ne fonctionne pas RRS feed

  • 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
    jeudi 29 mars 2012 07:31

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 ?

    jeudi 29 mars 2012 09:41
  • Vous parlez de "formulaire", c'est un formulaire au sens Word ou c'est un UserForm ?

    Bonjour,

    C'est un formulaire au sens Word. Si tu le souhaite je te laisse le lien de mon fichier :

    http://cjoint.com/?0CDkEk0MKBq


    jeudi 29 mars 2012 10:30
  • 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/?0CDkEk0MKBq

    Ok, je regarderai un peu plus tard.

    jeudi 29 mars 2012 11:51
  • 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"

    jeudi 29 mars 2012 13:45
  • 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

    jeudi 29 mars 2012 18:26