Bonjour à tous,

tout nouveau sur le vba mais avec des bases de développeur java derrière , j'ai un petit soucis sur la récupération de l'evenement "click" sur les boutons que je créer dynamiquement sur mon userForm. ( J'aimerai qu'a chaque click sur chaque bouton , sa couleur change , 3 couleurs possible).

Quand je créer mes boutons manuellement il n'y a pas de soucis j'obtiens bien ce que je veux , mais lorsque je les créer dynamiquement , impossible de récuperer le focus sur le click.
Voici comment je créer mes boutons :

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
Private Sub UserForm_Initialize()
    Dim Color As ColorFormat
    Dim ObjCell As Range
    Dim ActWB As Workbook
    Dim I As Integer
    Dim Bouton1 As Control
 
    Dim yy As Integer
    yy = 20
 
    On Error Resume Next
 
 
 
 For Each ObjCell In Range("G175:G179").Cells
    Set Bouton1 = UserForm1.Controls.Add("Forms.CommandButton.1")
 
    With Bouton1
        .Name = ObjCell.Value
        .Caption = ObjCell.Value
        .Left = 20
        .Top = yy
        .Width = 50
        .Height = 18
        yy = yy + 25
    End With
    Next
 
      With UserForm1
        .Caption = "Validation RA"
        .StartUpPosition = 2
        .Height = yy + 40
        .Width = 30
    End With
 
     Set Color = ThisWorkbook.Colors(1)
    If Err.Number = 0 Then
        UserForm1.Controls.Item(0).BackColor = Split(Color, """")(1)
    End If
 
     Set Color = ThisWorkbook.Colors(2)
    If Err.Number = 0 Then
        UserForm1.Controls.Item(1).BackColor = Split(Color, """")(1)
    End If
     Set Color = ThisWorkbook.Colors(3)
    If Err.Number = 0 Then
        UserForm1.Controls.Item(2).BackColor = Split(Color, """")(1)
    End If
     Set Color = ThisWorkbook.Colors(4)
    If Err.Number = 0 Then
        UserForm1.Controls.Item(3).BackColor = Split(Color, """")(1)
    End If
     Set Color = ThisWorkbook.Colors(5)
    If Err.Number = 0 Then
        UserForm1.Controls.Item(4).BackColor = Split(Color, """")(1)
    End If
J'ai récupéré cette partie en piochant à gauche à droite sur internet. La deuxième partie me sert pour les changements de couleurs dont je veux garder l'état à la réouverture du fichier. ( création de variables cachés ).

Voici un exemple d'une action sur le click d'un des boutons ( j'en ai donc créée autant qu'il y a de boutons )

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Private Sub AAL_Click()
If UserForm1.Controls.Item(0).BackColor = &H8000000F Then
    UserForm1.Controls.Item(0).BackColor = RGB(0, 0, 255)
ElseIf AAL.BackColor = RGB(0, 0, 255) Then
    UserForm1.Controls.Item(0).BackColor = RGB(0, 255, 0)
ElseIf AAL.BackColor = RGB(0, 255, 0) Then
    UserForm1.Controls.Item(0).BackColor = &H8000000F
    Else
   UserForm1.Controls.Item(0).BackColor = &H8000000F
End If
End Sub
AAL represente le nom de notre bouton ( objCell.Value) , mais à l’exécution je ne rentre jamais dans cette fonction.
Je galère depuis quelques jours et je ne trouve pas de solution que je comprenne ou qui soit fonctionnelle. Si quelqu'un peut m'aider.

J'ai de plus une autre question : est il possible de reset la macro chaque lundi midi par exemple? j'aimerai que les couleurs se réinitialise par defaut chaque lundi midi.


C'est pourquoi j'en appelle à vous et vous remercie par avance.