On souhaite très souvent récupérer les références d'une cellule pour les injecter dans une variable ou pour créer une boucle,etc...
Voyons, sous quel format une adresse de cellule nous est présenté par VBA. Voici ce que produit un double clic dans une case
grâce au code
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim MonAdresse As String
MonAdresse = Selection.Address
MsgBox MonAdresse
End Sub
Si on examine Excel on se rend compte
- que l'adresse nous est fournie en mode absolu; la présence des caractères $ nous l'indique
- que la plus grande adresse se situe en $IV$65536
Donc, le second signe $ ne peut se trouver qu'en 3ème ou 4ème position. Il nous suffit de le retrouver pour "casser" la chaîne de caractère et placer chaque partie dans une variable comme ceci
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim MonAdresse As String, MaLigne As Double, MaColonne As String
MonAdresse = ActiveWindow.RangeSelection.Address
MsgBox MonAdresse
If Mid(MonAdresse, 4, 1) = "$" Then
MaColonne = Mid(MonAdresse, 2, 2)
MaLigne = Mid(MonAdresse, 5)
ElseIf
Mid(MonAdresse, 3, 1) = "$" Then
MaColonne = Mid(MonAdresse, 2, 1)
MaLigne = Mid(MonAdresse, 4)
End If
MsgBox MaLigne
MsgBox MaColonne
'Pour ne pas rester en mode édition
SendKeys ("{ESC}")
End Sub
Mais il y a plus facile
L'adresse de la colonne étant donnée en numérique, on peut l'appliquer très facilement dans une commande utilisant Cells et n'oublions pas le paramêtre .offset qui nous permet à partir d'une cellule "connue" de nous déplacer dans nos tableaux sans avoir à sélectionner ces cellules lointaines
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox ActiveCell.Row
MsgBox ActiveCell.Column
End Sub
Cliquez ici pour télécharger le fichier exemple