Bonjour,

C'est après plusieurs essais totalement infructueux que je me résolue à demander votre aide.

Je souhaite programmer des évènements commun à toutes les checkbox présentes sur une feuille Excel et auparavant créées automatiquement.

Voici le code de création de la checkbox :

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
Private Sub btnAddNewTask_Click()
 
Dim CheckBoxLeft As Single
Dim CheckBoxTop As Single
Dim RowNumber As Single
 
CheckBoxLeft = Range("A2").End(xlDown).Offset(0, 9).Left + 30
CheckBoxTop = Range("A2").End(xlDown).Offset(0, 9).Top - 3
RowNumber = Range("a2").End(xlDown).Row
 
Dim SelectBox As OLEObjects
 
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
        DisplayAsIcon:=False, Left:=CheckBoxLeft, Top:=CheckBoxTop, Width:=108, Height:= _
        21).Select
 
With Selection
    .Object.Caption = ""
    .LinkedCell = "J" & NbOfRows
    .Object.Value = False
End With
 
End Sub
A noter que j'ai choisi un Contrôle ActiveX plutôt qu'un Contrôle de formulaire parce que ca me permettait par la suite de redimensionner les lignes, tout en gardant le contrôle sur la même ligne (impossible avec un contrôle de formulaire, qui "flotte" sur la feuille).

Je souhaite créer un évènement qui changerait la couleur de la ligne quand on clique sur le checkbox, c'est à dire quand celui-ci devient TRUE, et qui revient à sa couleur normale quand on reclique dessus, c'est à dire quand celui-ci devient FALSE.

J'ai essayé de créer une classe et d'utiliser WithEvent, en m'inspirant des articles de Pierre Fauconnieret SilkyRoad, mais sans succès.

Si vous pouviez m'aider la dessus je vous en serais très reconnaissant.

Merci à vous tous,

R.