Récupérer l’adresse d’une cellule

Retour vers Excel

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

  1. que l'adresse nous est fournie en mode absolu; la présence des caractères $ nous l'indique
  2. 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

FIN