Hello,
J'ai une macro qui reprend certaines informations de l'onglet "Source" vers l'onglet "Cible".
Dans la colonne "A" de "Cible", je lui fais créer des Checkbox (une par ligne reportée).
Cela fonctionne correctement.
Ensuite, je souhaite que lorsque l'utilisateur cliquera sur une de ces checkbox je puisse récupérer le numéro de la ligne correspondant à la CheckBox cliquée.
J'ai essayé une multitude d'options sans succès jusque là.
L'option qui semble être la plus simple serait de "lier" la CheckBox à une macro => lorsque l'utilisateur clique sur la checkBox, cela déclenche la nouvelle macro (Test23) qui va récupérer le numéro de la ligne active.
Je pensais que ce serait possible en ajoutant " OnAction = "Test23"" durant la création de la CheckBox :
Malheureusement ça ne fonctionne pas.
Quelqu'un aurait-il une idée de comment procéder ?
Merci d'avance.
Fab
J'ai une macro qui reprend certaines informations de l'onglet "Source" vers l'onglet "Cible".
Dans la colonne "A" de "Cible", je lui fais créer des Checkbox (une par ligne reportée).
VB:
Sub CopieDesDonnes()
Dim wsSource As Worksheet
Dim wsCible As Worksheet
Dim lastRow As Long
Dim i As Long
Dim chkBox As Object
' Définition des feuilles de calculs
Set wsSource = ThisWorkbook.Worksheets("Source")
Set wsCible = ThisWorkbook.Worksheets("Cible")
' Détermination de la dernière ligne de la liste
lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
' Nettoyage de l'onglet
wsCible.Cells.ClearContents
'Effacement des checkbox présentes sur l'onglet cible
For Each chkBox In wsCible.OLEObjects
If TypeOf chkBox.Object Is MSForms.CheckBox Then
chkBox.Delete
End If
Next chkBox
' Définit les en-tête des colonnes
wsCible.Cells(1, "B").Value = "Project ID"
wsCible.Cells(1, "C").Value = "Owner"
wsCible.Cells(1, "D").Value = "Project Name"
' Recréé le contenu de l'onglet "Cible"
For i = 3 To lastRow ' Boucle sur les lignes de la liste
wsCible.Cells(i - 1, "B").Value = wsSource.Cells(i, "A").Value ' Il reporte l'ID projet, le owner et le titre du projet dans l'onglet Cible
wsCible.Cells(i - 1, "C").Value = wsSource.Cells(i, "D").Value
wsCible.Cells(i - 1, "D").Value = wsSource.Cells(i, "B").Value
Set chkBox = wsCible.OLEObjects.Add(ClassType:="Forms.CheckBox.1")
With chkBox
.Top = wsCible.Cells(i - 1, "A").Top
.Left = wsCible.Cells(i - 1, "A").Left
.Width = wsCible.Cells(i - 1, "A").Width
.Height = wsCible.Cells(i - 1, "A").Height
.LinkedCell = ""
End With
Next i
End Sub
Cela fonctionne correctement.
Ensuite, je souhaite que lorsque l'utilisateur cliquera sur une de ces checkbox je puisse récupérer le numéro de la ligne correspondant à la CheckBox cliquée.
J'ai essayé une multitude d'options sans succès jusque là.
L'option qui semble être la plus simple serait de "lier" la CheckBox à une macro => lorsque l'utilisateur clique sur la checkBox, cela déclenche la nouvelle macro (Test23) qui va récupérer le numéro de la ligne active.
Je pensais que ce serait possible en ajoutant " OnAction = "Test23"" durant la création de la CheckBox :
Code:
Set chkBox = wsCible.OLEObjects.Add(ClassType:="Forms.CheckBox.1")
With chkBox
.Top = wsCible.Cells(i - 1, "A").Top
.Left = wsCible.Cells(i - 1, "A").Left
.Width = wsCible.Cells(i - 1, "A").Width
.Height = wsCible.Cells(i - 1, "A").Height
.LinkedCell = ""
.OnAction = "Test23"
End With
Sub Test23()
MsgBox ("Hello")
End Sub
Malheureusement ça ne fonctionne pas.
Quelqu'un aurait-il une idée de comment procéder ?
Merci d'avance.
Fab