J'essaie de créer un bouton dans Excel qui copie une certaine plage de cellules du classeur actif vers un autre classeur. La copie de cette plage fonctionne parfaitement lorsque je spécifie une plage fixe, mais je suis perplexe sur la façon de comprendre la ligne du bouton cliqué.
Chaque ligne contient environ 7 cellules, et la 8e cellule contient une forme avec une macro attachée (le bouton). Lorsque l'utilisateur appuie sur ce bouton, les 7 cellules de la même ligne que la ligne contenant le bouton enfoncé doivent être copiées.
L'utilisation d'ActiveCell est inutile, car appuyer sur le bouton ne définit pas réellement cette cellule comme active. J'ai beaucoup cherché mais je n'arrive pas à trouver comment obtenir cette valeur. Une fois que j'ai le numéro de ligne du bouton cliqué, je peux trouver le reste par moi-même.
Chaque Shape
a une propriété TopLeftCell
. Il contient une cellule dans laquelle réside le coin supérieur gauche de la forme.
Il y a une excellente solution mentionnée ici: http://www.ozgrid.com/forum/showthread.php?t=33351&p=167317#post167317
Code d'or copié à partir du message ci-dessus:
Sub Mainscoresheet()
' Mainlineup Macro
Dim b As Object, cs As Integer
Set b = ActiveSheet.Buttons(Application.Caller)
With b.TopLeftCell
cs = .Column
End With
MsgBox "Column Number " & cs
End Sub
Excellente réponse. Btw Cela fonctionne aussi pour Rownumber!
'Same for rownumbers!
Sub Mainscoresheet()
' Mainlineup Macro
Dim b As Object, RowNumber As Integer
Set b = ActiveSheet.Buttons(Application.Caller)
With b.TopLeftCell
RowNumber = .Row
End With
MsgBox "Row Number " & RowNumber
End Sub