Groupe controle sous VBA

Résolu
Tidauph0 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 17 novembre 2006 - 16 nov. 2006 à 11:19
Tidauph0 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 17 novembre 2006 - 17 nov. 2006 à 12:52
Salut,
Je sort d'un poste résolu pour poser une nouvelle question...

Voilà : Sous VBA Excel, dans mon userform j'ai 24 labels où sur un clic j'exécute une action :
Private Sub Label1_Click()
    Nom.Caption = Label1.Caption
    Ligne.Caption = Label31.Caption
End Sub
Private Sub Label2_Click()
    Nom.Caption = Label2.Caption
    Ligne.Caption = Label32.Caption
End Sub
etc..

Comme j'ai la même structure pour chaque label, je voulais savoir s'il était possible de regrouper tous ces labels dans une fonction comme il serait possible de le faire avec un groupe de contrôle dans VB6. J'ai cherché sur le net mais je n'ai rien trouvé de simple à comprendre. Si vous avez une source ou un code...

Merci

6 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 nov. 2006 à 16:14
Salut, (merci Ju pour la pub)

il faut placer une chaine de caractère dans la propriété Tag de tes Labels à traiter, afin de les différencier.
Ensuite, dans la Class, au lieu de mettre l'evènement MouseMove, met     _Click()

' Dans la propriété Tag de Tes Labels à faire en groupe de contrôle,
' met : MonLabel
__________________________________________________________________________
' Dans un Module de classe : nommé Label_cls

Public WithEvents lblMonLabel As MSForms.Label
  
Private Sub lblMonLabel_Click()

' ici tu met ce que tu veux faire pour chaque click de tes labels

End Sub

__________________________________________________________________________

' Dans un Module : nommé Module1

Dim Labels(1 To 10) As New Label_cls
' 1 To Nbre de Labels à traiter, à modifier

Sub Attribuer_Controls()
    Dim ctl As Control
     
    Dim lblCount As Integer
    lblCount =  0

    For Each ctl In NomDeTonUserform.Controls ' n'oublie pas la modif ici
        If ctl.Tag = "MonLabel" Then
            lblCount = lblCount + 1

            Set Labels(lblCount).lblMonLabel = ctl
        End If
    Next ctl
    NomDeTonUserform.Show ' encore une modif ici
  
End Sub

__________________________________________________________________________

A l'initialize de ton UserForm, il te suffit d'appeler Attribuer_Controls

~<small> Mortalino </small>~

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
16 nov. 2006 à 11:25
Salut,

Je pense que tu devrais adapter la source de Mortalino pour tes besoin va donc la télécharger ICI

@+: Ju£i?n
Pensez: Réponse acceptée
0
Tidauph0 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 17 novembre 2006
16 nov. 2006 à 12:00
Merci


je suis en train de plancher sur la source. Elle est plutôt simple mais j'ai du mal à savoir ce qu'il faut garder, modifier ou ignorer.


Si quelqu'un à quelque chose de plus simple je suis preneur. Sinon je vaisessayer de me débrouiller avec ça.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 nov. 2006 à 12:59
tu trouveras difficilement plus simple que du tout cuit, ce qui est déjà le cas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 nov. 2006 à 18:57
grrrr !
et s'il y a plus de 10 labels?
un tableau çà se redimentionne ;)

et voilà justement un cas où une collection peut être à préférer
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
Tidauph0 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 17 novembre 2006
17 nov. 2006 à 12:52
Merci Mortalino!
J'ai été un peu long à répondre mais ça marche!!
0
Rejoignez-nous