Comment puis-je obtenir la cellule depuis laquelle ma fonction VBA est appelée ?
En d’autres termes, quel est l’équivalent VBA de INDIRECT(ROW(), COLUMN()) ?
Je ne cherche pas ActiveCell.
Ce que je veux faire, c’est avoir une simple fonction ThisRow_Col(rColumn As String) qui retourne la colonne X de la ligne depuis laquelle elle est appelée. Par exemple, en B2, j’appelle =ThisRow_Col(“A”), elle devrait retourner la valeur de A2. Cela devrait fonctionner quelle que soit la cellule active.
EDIT : Merci Charles pour la réponse : Application.Caller. Le code suivant obtient la colonne X de la ligne courante, indépendamment de l’endroit où se trouve la sélection :
Function ThisRow_Col(rColumn As Range)
' Return INDIRECT(rcolumn & ROW())
ThisRow_Col = Application.Caller.Worksheet.Cells(Application.Caller.Row, rColumn.Column).Value
End Function
Notez que passer la colonne en tant que Range (ThisRow_Col(A1)) est préférable à la passer en tant que chaîne, car Excel peut automatiquement mettre à jour les formules si vous déplacez ou insérez des colonnes. Bien sûr, la ligne 1 de A1 est juste une convention.