OVH Cloud OVH Cloud

USERFORM

7 réponses
Avatar
Kamel
Bonsoir,

J'ai un userform avec plusieur taxtbox et label (une 30aine) ...
Je voudrais que le texte entré dans le textbox numéro i soit écrite dans le
label numéro i. Je peux le faire à la main avec des copiers collés mais
est-il possible de faire une macro du genre :

for i = 1 to 30
label & i = textbox & i .value ..... ??

Merci ....
--
Bon courage ...
Kamel

7 réponses

Avatar
Michel Laffaurge
"Kamel" a écrit dans le message de news:

Bonsoir,

J'ai un userform avec plusieur taxtbox et label (une 30aine) ...
Je voudrais que le texte entré dans le textbox numéro i soit écrite dans
le

label numéro i. Je peux le faire à la main avec des copiers collés mais
est-il possible de faire une macro du genre :

for i = 1 to 30
label & i = textbox & i .value ..... ??

Merci ....
--
Bon courage ...
Kamel




En fait, faut créer l'indice de l'objet, faut grouper les champs texte et
label.


for i=1 to 30

label1(i).caption=textbox1(i).text

next i

Avatar
Kamel
Désolé mais je ne vois pas comment grouper des label ou textbox ....

Y aurait il pas une solution avec un objet du genre controls qui
contiendrait les objets du userform .... ??

--
Bon courage ...
Kamel
"Kamel" a écrit dans le message de
news:
Bonsoir,

J'ai un userform avec plusieur taxtbox et label (une 30aine) ...
Je voudrais que le texte entré dans le textbox numéro i soit écrite dans
le

label numéro i. Je peux le faire à la main avec des copiers collés mais
est-il possible de faire une macro du genre :

for i = 1 to 30
label & i = textbox & i .value ..... ??

Merci ....
--
Bon courage ...
Kamel




Avatar
isabelle
bonjour Kamel,

une solution serait de mettre les textbox dans un frame et les label
dans un autre,

For i = 0 To Controls("Frame2").Count - 1
Frame2.Controls.Item(i) = Frame1.Controls.Item(i)
Next

isabelle


Désolé mais je ne vois pas comment grouper des label ou textbox ....

Y aurait il pas une solution avec un objet du genre controls qui
contiendrait les objets du userform .... ??

--
Bon courage ...
Kamel
"Kamel" a écrit dans le message de
news:
Bonsoir,

J'ai un userform avec plusieur taxtbox et label (une 30aine) ...
Je voudrais que le texte entré dans le textbox numéro i soit écrite dans
le

label numéro i. Je peux le faire à la main avec des copiers collés mais
est-il possible de faire une macro du genre :

for i = 1 to 30
label & i = textbox & i .value ..... ??

Merci ....
--
Bon courage ...
Kamel






Avatar
Michel Gaboly
Bonjour,

On peut y arriver avec un module de classe:

1 - Insère un module de classe et nomme-le "ClasseTextBoxes"

2 - Colle le code suivant dans ce module :


Public WithEvents TextBoxes As MSForms.TextBox

Private Sub TextBoxes_Change()
Dim Ref As String
' Ref stocke le numéro de TextBox, à adapter si les TextBox et les Labels
' ne s'appellent pas Textbox1, Textbox2, ... et Label1, Label2, ...
' Le dernier argument de Ref, 3 permet de gérer 3 positions donc jusqu'à
' TextBox999
Ref = Mid(TextBoxes.Name, 8, 3)
TextBoxes.Parent.Controls("Label" & Ref) = TextBoxes
End Sub


Dans le module du UserForm, ajoute en haut (après le Option Explicit,
s'il est présent) :


Dim TextBoxes() As New ClasseTextBoxes, DecalC As Integer


Rajoute cete procédure, à compléter avec ce que tu as déjà éventuellement
dans le Userform_Initialize().


Private Sub Userform_Initialize()
Dim TextBoxesCount As Integer, C As Control
' Création de la collection de TextBoxes, gérée par le module de classe
TextBoxesCount = 0
For Each C In Controls
Select Case TypeName(C)
Case "TextBox"
TextBoxesCount = TextBoxesCount + 1
ReDim Preserve TextBoxes(1 To TextBoxesCount)
Set TextBoxes(TextBoxesCount).TextBoxes = C
Case "Label"
C = ""
End Select
Next C
End Sub


Le principe consiste à définir une classe de TextBoxes et à écrire une
procédure Change s'appliquant à n'importe quel TextBox du UserForm.
Pour cela une boucle For ... Each explore tous les contrôles du UserForm
quand celui-ci est chargé. Cette boucle efface également les Caption de
tous les Label.

Ensuite quand un TextBox est modifié, le Label correspondant est mis à
jour en temps réel.

Je peux t'envoyer en Bal le fichier exemple si tu veux.



Bonsoir,

J'ai un userform avec plusieur taxtbox et label (une 30aine) ...
Je voudrais que le texte entré dans le textbox numéro i soit écrite dans le
label numéro i. Je peux le faire à la main avec des copiers collés mais
est-il possible de faire une macro du genre :

for i = 1 to 30
label & i = textbox & i .value ..... ??

Merci ....
--
Bon courage ...
Kamel


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
Chris MICHEL
si tes contrôles sont bien nommés (label1...lable30 d'un
côté et textbox1...textbox30 de l'autre), tu peux faire:

for i=1 to 30
controls("label" & i).caption= controls("textbox" &
i).value
next

Chris.
-----Message d'origine-----
Bonsoir,

J'ai un userform avec plusieur taxtbox et label (une
30aine) ...

Je voudrais que le texte entré dans le textbox numéro i
soit écrite dans le

label numéro i. Je peux le faire à la main avec des
copiers collés mais

est-il possible de faire une macro du genre :

for i = 1 to 30
label & i = textbox & i .value ..... ??

Merci ....
--
Bon courage ...
Kamel


.



Avatar
Kamel
Si tu pouvais m'envoyer le fichier à cette adresse ça serait magnifique car
c'est de l'or ce que tu viens de me dire là ... je ne savais pas que cela
était faisable ...

Envoi le moi à cette adresse stp k* avec un underscore ( _ )
à la place de * et chez hotmail ...

Merci bcp

--
Bon courage ...
Kamel
"Michel Gaboly" a écrit dans le message de
news:
Bonjour,

On peut y arriver avec un module de classe:

1 - Insère un module de classe et nomme-le "ClasseTextBoxes"

2 - Colle le code suivant dans ce module :


Public WithEvents TextBoxes As MSForms.TextBox

Private Sub TextBoxes_Change()
Dim Ref As String
' Ref stocke le numéro de TextBox, à adapter si les TextBox et les
Labels

' ne s'appellent pas Textbox1, Textbox2, ... et Label1, Label2, ...
' Le dernier argument de Ref, 3 permet de gérer 3 positions donc
jusqu'à

' TextBox999
Ref = Mid(TextBoxes.Name, 8, 3)
TextBoxes.Parent.Controls("Label" & Ref) = TextBoxes
End Sub


Dans le module du UserForm, ajoute en haut (après le Option Explicit,
s'il est présent) :


Dim TextBoxes() As New ClasseTextBoxes, DecalC As Integer


Rajoute cete procédure, à compléter avec ce que tu as déjà éventuellement
dans le Userform_Initialize().


Private Sub Userform_Initialize()
Dim TextBoxesCount As Integer, C As Control
' Création de la collection de TextBoxes, gérée par le module de
classe

TextBoxesCount = 0
For Each C In Controls
Select Case TypeName(C)
Case "TextBox"
TextBoxesCount = TextBoxesCount + 1
ReDim Preserve TextBoxes(1 To TextBoxesCount)
Set TextBoxes(TextBoxesCount).TextBoxes = C
Case "Label"
C = ""
End Select
Next C
End Sub


Le principe consiste à définir une classe de TextBoxes et à écrire une
procédure Change s'appliquant à n'importe quel TextBox du UserForm.
Pour cela une boucle For ... Each explore tous les contrôles du UserForm
quand celui-ci est chargé. Cette boucle efface également les Caption de
tous les Label.

Ensuite quand un TextBox est modifié, le Label correspondant est mis à
jour en temps réel.

Je peux t'envoyer en Bal le fichier exemple si tu veux.



Bonsoir,

J'ai un userform avec plusieur taxtbox et label (une 30aine) ...
Je voudrais que le texte entré dans le textbox numéro i soit écrite dans
le


label numéro i. Je peux le faire à la main avec des copiers collés mais
est-il possible de faire une macro du genre :

for i = 1 to 30
label & i = textbox & i .value ..... ??

Merci ....
--
Bon courage ...
Kamel


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
Michel Gaboly
Bonsoir,

C'est parti ;-))


Si tu pouvais m'envoyer le fichier à cette adresse ça serait magnifique car
c'est de l'or ce que tu viens de me dire là ... je ne savais pas que cela
était faisable ...

Envoi le moi à cette adresse stp k* avec un underscore ( _ )
à la place de * et chez hotmail ...

Merci bcp

--
Bon courage ...
Kamel
"Michel Gaboly" a écrit dans le message de
news:
Bonjour,

On peut y arriver avec un module de classe:

1 - Insère un module de classe et nomme-le "ClasseTextBoxes"

2 - Colle le code suivant dans ce module :


Public WithEvents TextBoxes As MSForms.TextBox

Private Sub TextBoxes_Change()
Dim Ref As String
' Ref stocke le numéro de TextBox, à adapter si les TextBox et les
Labels

' ne s'appellent pas Textbox1, Textbox2, ... et Label1, Label2, ...
' Le dernier argument de Ref, 3 permet de gérer 3 positions donc
jusqu'à

' TextBox999
Ref = Mid(TextBoxes.Name, 8, 3)
TextBoxes.Parent.Controls("Label" & Ref) = TextBoxes
End Sub


Dans le module du UserForm, ajoute en haut (après le Option Explicit,
s'il est présent) :


Dim TextBoxes() As New ClasseTextBoxes, DecalC As Integer


Rajoute cete procédure, à compléter avec ce que tu as déjà éventuellement
dans le Userform_Initialize().


Private Sub Userform_Initialize()
Dim TextBoxesCount As Integer, C As Control
' Création de la collection de TextBoxes, gérée par le module de
classe

TextBoxesCount = 0
For Each C In Controls
Select Case TypeName(C)
Case "TextBox"
TextBoxesCount = TextBoxesCount + 1
ReDim Preserve TextBoxes(1 To TextBoxesCount)
Set TextBoxes(TextBoxesCount).TextBoxes = C
Case "Label"
C = ""
End Select
Next C
End Sub


Le principe consiste à définir une classe de TextBoxes et à écrire une
procédure Change s'appliquant à n'importe quel TextBox du UserForm.
Pour cela une boucle For ... Each explore tous les contrôles du UserForm
quand celui-ci est chargé. Cette boucle efface également les Caption de
tous les Label.

Ensuite quand un TextBox est modifié, le Label correspondant est mis à
jour en temps réel.

Je peux t'envoyer en Bal le fichier exemple si tu veux.



Bonsoir,

J'ai un userform avec plusieur taxtbox et label (une 30aine) ...
Je voudrais que le texte entré dans le textbox numéro i soit écrite dans
le


label numéro i. Je peux le faire à la main avec des copiers collés mais
est-il possible de faire une macro du genre :

for i = 1 to 30
label & i = textbox & i .value ..... ??

Merci ....
--
Bon courage ...
Kamel


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com