Blocage sur CheckboxChange

Bonjour à tous

Programmeur très occasionnel, je rends service à un ami pour une interface de suivi de commandes

Chaque ligne du tableur contient 4 Checkbox pour réaliser le suivi des différentes étapes (Devis, Commandé, Reçu, Payé)

Je me retrouve avec 240 Checkbox, du coup j'ai optimisé tout ça avec une petite macro qui créer, renseigne et positionne correctement toutes les checkbox.

Function AjoutCheckBox(Colonne As String, j As Integer, i As Integer, k As Integer)

Dim cell As Range
'4 Colonnes à équiper, 1 indicateur de début j, et un indicateur de fin i 
'j = 9 ' ma première ligne à considérer est la 9éme
' k est utilisé pour nommé les Checkbox dans l'ordre

For Each cell In Range(Colonne & j & ":" & Colonne & i)

    With ActiveSheet.CheckBoxes.Add(cell.Left, _
       cell.Top, cell.Width, cell.Height)
       .LinkedCell = ("$" & Colonne & "$" & j)
       .Name = "CheckBox_" & k
       .Caption = ""
       .Display3DShading = True
       .OnAction = "CheckboxChange"
    End With
    j = j + 1
    k = k + 1
Next

End Function

Afin d'optimiser encore, et éviter de créer manuellement une macro derrière chaque Checkbox (240), je détecte le changement d'état de n'importe quelle CheckBox grâce à l'option .OnAction = "CheckboxChange". Le code que j'ai trouvé permet d'afficher un MsgBox, quelle que soit la CheckBox cochée, et ça marche nickel

Sub CheckboxChange()
    MsgBox "Change"
End Sub

Et c'est là que je coince, parce que je ne trouve pas, avec ce CheckBoxChange() comment récupérer le .LinkedCell ou le .Name de la CheckBox que je viens de cocher.

Parce que du coup, c'est là que je dois traiter la Checkbox cochée et lancer un bout de code

Une aide éclairée serait la bienvenue, merci de vos suggestions

Ok, résolu

A la modification de l'état de la CheckBox, quelle qu'elle soit, le .OnAction va chercher une macro

Function AjoutCheckBox(Colonne As String, j As Integer, i As Integer, k As Integer)

Dim cell As Range
'4 Colonnes à équiper, 1 indicateur de début j, et un indicateur de fin i 
'j = 9 ' ma première ligne à considérer est la 9éme
' k est utilisé pour nommé les Checkbox dans l'ordre

For Each cell In Range(Colonne & j & ":" & Colonne & i)

    With ActiveSheet.CheckBoxes.Add(cell.Left, _
       cell.Top, cell.Width, cell.Height)
       .LinkedCell = ("$" & Colonne & "$" & j)
       .Name = "CheckBox_" & k
       .Caption = ""
       .Display3DShading = True
       .OnAction = "macro"
    End With
    j = j + 1
    k = k + 1
Next

End Function

Et la macro récupère le .Name et le et le .LinkedCell

Sub macro()
nom = Application.Caller
MsgBox nom
MsgBox ActiveSheet.Shapes(nom).TopLeftCell.Address
End Sub

bonjour,

essaie ceci

MsgBox "Change " & Application.Caller

edit : je vois que tu avais déjà trouvé par toi-même

Rechercher des sujets similaires à "blocage checkboxchange"