Besoin d'aide sur module de classe / usf

BenHarber

XLDnaute Occasionnel
Bonjour le Forum,

Je souhaite créer un évènement ‘MouseMove’ attaché à mon formulaire ‘usfChoix’ et qui, à chaque fois que ma souris passe sur un contrôle label nommé ‘lblNom+n°’, déclenchera sa mise en gras.

Au début, j’ai crée la sub suivante :
Private Sub lblNom1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
Me.Controls("lblNom1").Font.Bold = True
End Sub

Mais vu que j’ai 40 labels, (lblNom1 à lblNom40), je me dis qu’il serait judicieux de passer par un module de classe (et non pas écrire 40 sub…)

C’est à ce stade que je commence à sécher.
1) J’ai créé un module de classe ‘MeF’ dans le quel je déclare d'un évènement dynamique sur la collection :
Public WithEvents labelSelect As MSForms.Label

Puis écrit la private sub suivante :
Private Sub labelSelect_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
labelSelect.ForeColor = &HC0E0FF
labelSelect.Font.Bold = True
End Sub

2) 'Derrière' mon usfChoix, j’ai écrit le code suivant :
Private labelSelect () As New MeF

Mais maintenant, je suppose que je dois initialiser labelSelect () ?
J’ai essayer plusieurs solutions, en vain !

Quelqu’un peut-il me venir en aide ?

Merci beaucoup !

Bien cordialement,
BenHarber
 

Pierrot93

XLDnaute Barbatruc
Re : Besoin d'aide sur module de classe / usf

Bonjour BenHarber

regarde l'exemple ci dessous pour des commandbutton, à placer dans le module de l'USF, à adapter à ton projet, se déclenche à l'initialisation :

Code:
Option Explicit
Private MesObjets() As New Classe1
Private Sub UserForm_Initialize()
Dim ctrl As Control, i As Byte
For Each ctrl In Me.Controls
    If TypeOf ctrl Is MSForms.CommandButton Then
        ReDim Preserve MesObjets(0 To i)
        Set MesObjets(i).MesBoutons = ctrl
        i = i + 1
    End If
Next ctrl
End Sub

par contre dans le module de classe, modifies le nom de la variable, il ne peut pas être identique à celui utilisé lors de la déclaration de la classe :

Code:
Public WithEvents [B]labelSelect [/B]As MSForms.Label

mets un nom différent, "monlabel" par exemple, ce qui donnerait lors de l'initialisation :

Code:
Set labelSelect(i).monlabel = ctrl

j'espère avoir été clair... sinon mets ton fichier avec le code, sans données confidentielles, en pièce jointe.

bonne journée
@+
 

BenHarber

XLDnaute Occasionnel
Re : Besoin d'aide sur module de classe / usf

Bonjour Pierrot,
Merci beaucoup pour ta réponse : après quelques essais et déboires, j'ai pu adapter ton code à ce que je souhaitais faire.

Une fois de plus, je te dois une 'bougie orgueilleuse'.....ou plutôt une 'fière chandelle' !

J'en profite pour insérer un lien qui peut être utile à tout ceux qui essaient de comprendre le fonctionnement des modules de classe. La présentation est bien faite (même les non informaticiens de mon style doivent s'accrocher pour suivre...) et le thème, trop rare sur le sujet, mérite d'être signalé : Les modules de classe

Merci encore !

Cordialement,

BenHarber
 

Discussions similaires

Réponses
29
Affichages
1 K

Statistiques des forums

Discussions
312 931
Messages
2 093 721
Membres
105 796
dernier inscrit
Max...26