Bonjour à toutes et tous,

J'ai un souci (je ne comprends pas la raison).

J'explique:

J'ai crée un userform qui contient un "texte box" et un bouton "Sauve" (exemple pour bien comprendre).
Lorsque je l’appelle, dans l'initialisation de ce formulaire, je rempli le texte boxe (donnée venant d'une feuille).

Ce que j'aimerais, est, quand je clique sur le bouton "Sauve", que cela enregistre UNIQUEMENT quand le contenu du texte box à CHANGE.

Pour ce faire, j'ai deux drapeaux (boolean):
Je les ais déclarés dans le module : module1 dans la partie déclarative.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Public fgSave As Boolean
Public fgInit As Boolean
fgInit : Celui-ci est mis à "vrais" quand j'initialise le formulaire. Cela empêche que l’événement "After-Update" déclenche.
Une fois l'initialisation terminé, je le met sur "faux".

fgSave : A la fin de l'initialisation il est mis à "faux". Quand on modifie le contenu du texte box, il ce mets sur "vrais".

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Private Sub T_Text_AfterUpdate()
    If Not fgInit Then
        fgSave = True    ' J'ai placé un break point ici
    End If
End Sub
Lorsque j'exécute le code en "pas à pas", tout fonctionne très bien.
Lorsque je le laisse fonctionner tous seul sans toucher à quoi que se soit, le programme s'arrête au break point. Ce n'est pas logique !...

Comment se fait il que cet événement ce déclenche ?
Comment l'éviter?

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
Private Sub UserForm_Initialize()
    Dim feuille as Worksheet
    Set feuille = ActiveWorkbook.Worksheets("Sheet1")    
    fgInit = True
 
    With Nom_UserForm
        If  Numero_ID > 0 Then
            .T_Text.text = feuille.Cells(Numero_ID, 1)
        End If
    End With
    fgInit = False
    fgSave = False
End Sub
Private Sub BT_Save_Click()
    If Not fgSave Then
        MsgBox "No change", vbInformation + vbOKOnly, "Remark"
        fgSave = False
    End If
End Sub
J'en perds mon latin. Quelqu'un aurait-il une idée?
Merci d'avance de votre aide

Bonne après-midi
André