
Option Explicit
'------------------------------------
'Déclaration des collections
Dim CollectBouton As Collection
Dim CollectLabel As Collection
Dim ClLabel
Dim ClBouton
'------------------------------------
'Déclaration pour les instances de classe
Dim mBouton As CL_DemoCC
Dim mLabel As CL_DemoCC
'------------------------------------
Dim MemIndex As Integer
Private Sub UserForm_Initialize()
Dim Ctl As Control
'--------------------------------------------------------
'Crée les collection de classe
Set CollectBouton = New Collection
Set CollectLabel = New Collection
'--------------------------------------------------------
'Crée les collections d'objet
Set ClBouton = New Collection
Set ClLabel = New Collection
'--------------------------------------------------------
For Each Ctl In Me.Controls
'verifie s'il s'agit d'un bouton
If TypeOf Ctl Is MSForms.CommandButton Then
'Ajoute dans la collection des classes boutons
Set mBouton = New CL_DemoCC
Set mBouton.GroupBoutons = Ctl
CollectBouton.Add mBouton
'Ajoute dans la collection des Objets boutons
ClBouton.Add Ctl
ElseIf TypeOf Ctl Is MSForms.Label Then
'Ajoute dans la collection des classes labels
Set mLabel = New CL_DemoCC
Set mLabel.GroupLabels = Ctl
CollectLabel.Add mLabel
'Ajoute dans la collection des Objets labels
ClLabel.Add Ctl
End If
Next Ctl
End Sub
Public Sub BoutonMouseMove(ByVal Index As Integer, Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'Evite de réinitialiser si l'index n'a pas changé.
'6 c'est pour le bouton QUITTE qui n'a pas de label associé.
If MemIndex = Index Or Index = 6 Then Exit Sub
Remet
'Marque les contrôles survolé par le pointeur de souris
ClLabel(Index).SpecialEffect = 1
ClLabel(Index).ForeColor = &HFFFF&
ClBouton(Index).BackStyle = 0
ClBouton(Index).ForeColor = &H8080FF
MemIndex = Index
End Sub
'Réinitialise les contrôles sélectionnés en mode d'origine
Sub Remet()
If MemIndex = 0 Then Exit Sub
ClLabel(MemIndex).SpecialEffect = 0
ClLabel(MemIndex).ForeColor = &HFFFF00
ClBouton(MemIndex).BackStyle = 1
ClBouton(MemIndex).ForeColor = &HFFFF&
End Sub
Sub BoutonClick(ByVal Index As Integer)
If Index = 6 Then 'Bouton QUITTE LA DEMO
Unload Me
Else
Transfer(1) = ClBouton(Index).Name
Transfer(2) = ClBouton(Index).Caption
Transfer(3) = Index
Transfer(4) = ClLabel(Index).Name
Transfer(5) = ClLabel(Index).Caption
Transfer(6) = "Bouton"
`Eventuellement un UF d'affichage joint dans la démo mais pas dans cet exemple
` Affiche.Show
End If
End Sub
Sub LabelClick(ByVal Index As Integer)
Transfer(1) = ClLabel(Index).Name
Transfer(2) = ClLabel(Index).Caption
Transfer(3) = Index
Transfer(4) = ClBouton(Index).Name
Transfer(5) = ClBouton(Index).Caption
Transfer(6) = "Label"
`Eventuellement un UF d'affichage joint dans la démo mais pas dans cet exemple
` Affiche.Show
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Remet
MemIndex = 0
End Sub
Option Explicit
Public WithEvents GroupBoutons As MSForms.CommandButton
Public WithEvents GroupLabels As MSForms.Label
Private Sub GroupBoutons_Click()
Call UF_DemoCC.BoutonClick(GroupBoutons.Tag)
End Sub
Private Sub GroupBoutons_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'Pour exemple
' Call UF_DemoCC.BoutonMouseDown(GroupLabels.Tag, Button, Shift, X, Y)
End Sub
Private Sub GroupBoutons_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call UF_DemoCC.BoutonMouseMove(GroupBoutons.Tag, Button, Shift, X, Y)
End Sub
Private Sub GroupLabels_Click()
Call UF_DemoCC.LabelClick(GroupLabels.Tag)
End Sub
Private Sub GroupLabels_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
End Sub
Private Sub GroupLabels_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call UF_DemoCC.BoutonMouseMove(GroupLabels.Tag, Button, Shift, X, Y)
End Sub End Sub
Private Sub GroupLabels_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
`Ne sert pas, juste comme exemple.
End Sub
Private Sub GroupLabels_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call UF_DemoCC.GroupMouseMove(GroupLabels.Tag, Button, Shift, X, Y)
End Sub
Option Explicit Public Transfer(6)
Combien cela coûte-t-il au total ? Quelles aides apportent l'état et les acteurs du marché pour alléger cette charge non choisie ? Tous les détails sur Commentçamarche.net.