OVH Cloud OVH Cloud

VBA Word + Form

3 réponses
Avatar
Jocaste
Bonjour =E0 tous,

J'ai =E9crit une macro en VBA qui affiche un fen=EAtre=20
(Feuille)

Dans cette Feuille j'ai 3 Label et 3 EditBox.
Dans ma macro je souhaiterais parcourir les 3 label pour=20
leur assigner une valeur (Caption =3D ...) et les 3 EditBox=20
pour leur Assigner une valeur (Text =3D ....)

Le probl=E8me c'est que je voudarais faire cela dans une=20
bouble mais j'ignore la m=E9thode =E0 suivre.

Dans l'attente d'une id=E9e, je vous en remercie d'avance.

3 réponses

Avatar
Jocaste
Pour la Feuille en question, il s'agit d'un UserForm


-----Message d'origine-----
Bonjour à tous,

J'ai écrit une macro en VBA qui affiche un fenêtre
(Feuille)

Dans cette Feuille j'ai 3 Label et 3 EditBox.
Dans ma macro je souhaiterais parcourir les 3 label pour
leur assigner une valeur (Caption = ...) et les 3 EditBox
pour leur Assigner une valeur (Text = ....)

Le problème c'est que je voudarais faire cela dans une
bouble mais j'ignore la méthode à suivre.

Dans l'attente d'une idée, je vous en remercie d'avance.
.



Avatar
Papou
Bonjour
For Each ctr In Me.Controls
If TypeOf ctr Is MSForms.Label Then
ctr.Caption = "Ton caption"
ElseIf TypeOf ctr Is MSForms.TextBox Then
ctr.Text = "Ton texte"
End If
Next ctr

Cordialement
Pascal



"Jocaste" a écrit dans le message de
news: c6a001c438c4$81299cf0$
Bonjour à tous,

J'ai écrit une macro en VBA qui affiche un fenêtre
(Feuille)

Dans cette Feuille j'ai 3 Label et 3 EditBox.
Dans ma macro je souhaiterais parcourir les 3 label pour
leur assigner une valeur (Caption = ...) et les 3 EditBox
pour leur Assigner une valeur (Text = ....)

Le problème c'est que je voudarais faire cela dans une
bouble mais j'ignore la méthode à suivre.

Dans l'attente d'une idée, je vous en remercie d'avance.
Avatar
Guy Moncomble
Bonjour à tous,
dans le message ,

| Bonjour
| For Each ctr In Me.Controls
| If TypeOf ctr Is MSForms.Label Then
| ctr.Caption = "Ton caption"
| ElseIf TypeOf ctr Is MSForms.TextBox Then
| ctr.Text = "Ton texte"
| End If
| Next ctr

Très bonne idée, comme cela il a les mêmes valeurs dans ses objets ! A
moins d'avoir une motivation importante, modifier aussi peu d'objets
dans une ou deux boucles n'est vraiment pas une bonne idée, à moins
précisément de vouloir la même valeur partout. Mais si les valeurs sont
différentes, cela se gâte. Dans l'exemple que tu donnes, il n'est pas
très facile de repérer les objets pour leur donner la valeur à insérer.
On peut stocker ces valeurs dans un tableau ou dans une collection, mais
de toutes manières, le problème de l'identification demeure. Il est
résolu assez simplement en donnant aux objets un nom qui se termine par
une valeur numérique ce qui permet de faire varier le nom dans une
boucle, quelque chose du genre "nomdebase" & cstr(indice de la boucle).
Si l'on tient à des noms différents, il est presque aussi simple de
stocker ces noms dans un tableau comme pour les valeurs à insérer. En
résumé, tu peux avoir, par exemple :

- me.controls("nomdebase" & cstr(indicedela boucle)).caption=chaîne
- me.controls(tableaudesnoms(indicedelaboucle)).caption=chaîne

A adapter selon les besoins, souvent marteaupilonnesque ]];)))
--
A+

G.M. MVP Word

P.-S. Bien entendu ton exemple peut être adapté à des valeurs variables,
il suffit de comparer le nom de l'objet aux noms stockés, soit dans un
tableau, soit dans une collection. Quelle simplicité !