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 :
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
Merci d'avance du temps que vous prendrez à lire mon code de débutant.