Bonjour,
Je cale un peu sur une erreur que je fait dans un module de classe.
Mon "projet" est de réussir a faire tout un tas d'opération (vérif, lancement de procedure,etc...) lorsque mon textbox change en fonction de son tag.
Je pense que la partie module normal fonctionne (avec des valeurs espionne j'ai pu voir que mes textbox "entraient" bien dans la classe mais la classe ne réagi pas quand je change la valeur. Pourriez vous m'éclairer de vos lumières car là, j'avais l'impression de commencer à comprendre le fonctionement de VBA mais les classes ça me donne l'impression d'etre arrivé à l'entré du chateau du boss de fin de vba ...
Module normal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub IntegrerTextbox() Dim LeCalculeur(1000) As BoxAcalculer 'je sais que je devrait faire des redim pour économiser de la mémoire mais j'ai pas encore fait ... Dim i As Integer Dim Ctu As MSForms.Control i = 0 For Each Ctu In Porte1.Controls If Ctu.Tag <> "" Then Set LeCalculeur(i) = New BoxAcalculer Set LeCalculeur(i).LaTextbox = Ctu i = i + 1 End If Next Ctu Porte1.Show 0 End Sub
Le module de classe :
Merci d'avance du temps que vous prendrez à lire mon code de débutant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 'on déclare une variable de notre classe dans laquelle on va placer le controle Public WithEvents LaTextbox As MSForms.TextBox Private Sub LaTextbox_Change() 'cette fonction se déclenche si la valeur du controle est "changé" Dim infosTag As Variant 'Dans cette variable nous allons stocker les infos qui sont dans le tag If LaTextbox.Tag <> "" Then 'on ne lance en fait cette sub que si le champs tag est rempli infosTag = Split(LaTextbox.Tag, ",") 'on découpe les info du tag pour les mettre dans un tableau Select Case infotag(0) ' on verifi ce que lon doit faire en fonction de la preiere partie du tag Case Is = "A" ' si le tag commence par A msgbox "A" Case Is = "B" ' si le tag commence par B MsgBox "B" End Select End If End Sub
Partager