OVH Cloud OVH Cloud

Appliquer à 50 controls la même fonction

1 réponse
Avatar
La Rota
Bonjour,
J'ai dans un userform 50 label nommés de "J1" à "J50". Je voudrais qu'à
chaque clic sur un control un texte différent apparisse.

Exemple :
Private Sub J1_click ( )
If J1.caption = "" Then
J1.caption = "toto"
ElseIf J1.caption = "toto" Then
J1.caption = ""
End If
End Sub

Comment faire pour éviter de répéter 50 fois cette procédure ?
Merci

1 réponse

Avatar
anonymousA
bonjour,

Ecrire un module de classe appelé p.e Classe1

Dans le module de classe écrire

Public WithEvents lbl As MSForms.Label

Private Sub lbl_Click()
If lbl.caption = "" Then
lbl.caption = "toto"
ElseIf lbl.caption = "toto" Then
lbl.caption = ""
end if
End Sub

Dans le module du UF écrire si on suppose que les labels protent les
noms label1, label2 et ainsi de suite. Si c'esa utre chose faire autrement.

Dim labelsuf(1 To 4) As New Classe1

Private Sub UserForm_Initialize()

For i = 1 To 4
Set labelsuf(i).lbl = Me.Controls("label" & i)
Next

End Sub

A+

Bonjour,
J'ai dans un userform 50 label nommés de "J1" à "J50". Je voudrais qu'à
chaque clic sur un control un texte différent apparisse.

Exemple :
Private Sub J1_click ( )
If J1.caption = "" Then
J1.caption = "toto"
ElseIf J1.caption = "toto" Then
J1.caption = ""
End If
End Sub

Comment faire pour éviter de répéter 50 fois cette procédure ?
Merci