lenemmasque
Messages postés33Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention23 mars 2007
-
25 juil. 2006 à 16:20
lenemmasque
Messages postés33Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention23 mars 2007
-
26 juil. 2006 à 08:25
Bonjour,
Je bloque actuellement dans mon programme sur Excel.
Je vous explique mon problème : J'ai plusieurs labels (disons 3), qui se nomment respectivement Label1, Label2 et Label3.
Je souhaiterais changer le contenu de ces labels en utilisant une boucle For ... Next. J'ai essayé quelque chose comme ça :
For i = 1 To 3
Label(i).Caption = i
Next
Mais ça ne marche pas...
Pouvez-vous m'aider ? Merci d'avance.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 25 juil. 2006 à 16:33
'Déclaration d'une variable de type Object
Dim Ctrl As Object
'Boucle passant en revue tout les
'controles du Userform dans lequel
'tu places ce code (collection Me.Controls)
For Each Ctrl In Me.Controls
'Si le type du Control est Label
'=> Alors ON modifie la propriété Caption
If TypeOf Ctrl Is MSForms.Label Then Ctrl.Caption = "BONJOUR"
Next Ctrl
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 25 juil. 2006 à 16:44
Re,
Essaie ceci.
Dim Ctrl As Object
'Boucle passant en revue tout les
'controles du Userform dans lequel
'tu places ce code (collection Me.Controls)
For Each Ctrl In Me.Controls
'Si le type du Control est Label
'=> Alors ON modifie la propriété Caption
If TypeOf Ctrl Is MSForms.Label Then
'Selon le nom du Control
Select Case Ctrl.Name
'Si c'est le Label1 => ..
Case "Label1": Ctrl.Caption = "Ceci est le Label 1"
'Sinon
Case Else: Ctrl.Caption = "Bonjour"
End Select
End If
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 26 juil. 2006 à 03:42
Salut,
Je préciserai même que si tu as plusieurs labels (par exemple 10) mais que tu souhaites modifier le texte de seulement 3, tu peux utiliser la propriété Tag.
Après pour gérer les évènements de type MouseMove, Click, etc..
que sur ces 3 labels, il faut passer par un Module de Classe, pas très complexe à faire.
'ici dans un Module.
'N'appelle pas ton UserForm (lorsque tu en as besoins) mais la
'procédure suivante
Dim Labels(1 To 3) As New LabelMoisClass
Sub Attribuer_Controls()
' pour le module de classe (evenement lbl_MouseMove
Dim ctl As Control
' initialise le compteur de controle
Dim lblXYZCount As Integer
lblXYZCount = 0
' le fait de mettre "lblXYZ" a la propriete Tag des controles
' ca permet de trier avec les autres (ex. tu as 20 labels,
' tu veux que le Module de Classe s'applique
' seulement a 3 labels, a ceux la tu leur mets la propriete Tag)
For Each ctl In NomDeTaForm.Controls
If ctl.Tag = "lblXYZ" Then
lblXYZCount = lblXYZCount + 1
Set Labels(lblXYZCount).lblXYZ = ctl
End If
Next ctl
NomDeTaForm.Show 'met le nom de ta form
End Sub
' ici à placer dans un Module de Classe (nommé ModuleLabels)
Public WithEvents lblXYZ As MSForms.Label
Private Sub lblMois_MouseMove _
ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
'bah le code que tu veux qu'il produise lors du survol sur tes LABELS;
'il suffit de dire lblXYZ.Caption = "Salut", par exemple, et ça s'affiche
'après le survol de la souris sur les labels