De VBA à VB besoin d'aide sur Module de classe

Résolu
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005 - 27 nov. 2004 à 11:19
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005 - 27 nov. 2004 à 12:39
Bonjour à tous,

Je suis débutant en programmation et n'est aucune formation à ce sujet, alors je me débrouille grace au net à essayer de faire un programme.

J'ai un projet sous VBA avec :
- 1 UserForm nommés Userform1
- 20 Labels nommés Label1_1 à Label1_10 pour les 10 premiers avec la propriété Tag de A à J et Labels2_1 à Label2_10 pour les 10 derniers avec , là aussi, la propriété Tag de A à J.
- 1 Label Nommé Resultat

Le but recherché est :
Chaque passage de la souris sur un label affiche le tag de ce label dans le label resultat.

J'ai bien réussi à le faire fonctionner sous VBA (voir code plus loin)mais je souhaitant passer sous VB, je n'arrive pas à le faire fonctionner en réutilisant le même code. (J'ai quand même changé Userform par Form en passant sous VB)

Si quelqu'un peut m'indiquer une voie de solution, car là je patauge...

Merci Beaucoup,

Voici le Code......

Code du UserForm

Private Sub UserForm_Initialize()
Dim nb As Integer
Dim Ctrl As Control

nb = 0
'Module pour les Label
For Each Ctrl In UserForm1.Controls
If TypeName(Ctrl) = "Label" Then
nb = nb + 1
ReDim Preserve Label(1 To nb)
Set Label(nb).GroupeLabel = Ctrl
End If
Next
End Sub

Code du module de classe

Public WithEvents GroupeLabel As msforms.Label

Private Sub GroupeLabel_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'Affichage du numéro selectionné au passage de la souris
UserForm1.Resultat.Caption = GroupeLabel.Tag

End Sub

3 réponses

Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
27 nov. 2004 à 12:02
Ben, il me semble (jai pas lu tt ton code) que sous vb, il suffirait de rajouter dans l'évènement MouseMove de tes labels le code suivant :

Resultat.Caption = Label1_"Actuel".Tag

Mais il faudrait mieux que tu crée unb groupe de label, tous nommés Label1, mais dont les index variraient de 1 à 10. Ensuite, il te suffirai, dans la propriété MouseMove du groupe de label, de mettre :

Resultat.Caption = Label1(index).Tag

Voilà, dsl si c'est pas ça que tu voulais.
3
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005
27 nov. 2004 à 11:43
C'est encore moi,

J'ai oublié de préciser le nom du module : Classe1
Et j'ai oublié cette ligne dans le code de la form :
Dim Label() As New Classe1

De plus, losque je lance le projet, le message d'erreur sous VB est qu'il me surligne "WithEvents GroupeLabel As msforms.Label" en m'indiquant une erreur de complilation Type défini par l'utilisateur non défini !

Voici pour finir le code sous VB

Code du module de classe class1

Public WithEvents GroupeLabel As msforms.Label

Private Sub GroupeLabel_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'Affichage du numéro selectionné au passage de la souris
Form1.Resultat.Caption = GroupeLabel.Tag

End Sub

Code de la Form Form1

Dim Label() As New Class1

Private Sub Form_Load()
Dim nb As Integer
Dim Ctrl As Control

nb = 0
'Module pour les Label
For Each Ctrl In Form1.Controls
If TypeName(Ctrl) = "Label" Then
nb = nb + 1
ReDim Preserve Label(1 To nb)
Set Label(nb).GroupeLabel = Ctrl
End If
Next
End Sub

Voilà j'espère avoir précis...
Merci
0
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005
27 nov. 2004 à 12:39
C'est parfait, après un p'tit cafouillage j'ai trouvé grace à ton aide...

Merci beaucoup
0
Rejoignez-nous