Salut à tous.
J'ai fait pas mal de recherches mais je n'ai pas trouvé de solutions. Peut-être n'ai-je pas bien cherché...^^
Je vous expose mon dilemme : j'ai créé une fonction VBA que je désirerais utiliser dans excel comme une fonction standard.
Par exemple, dans la cellule G3 j'écris :
avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part =maFonction(nomA, nomB)Je voudrais que ma fonction marche comme Excel le fait avec ses fonctions d'origine. Je m'explique. Lorsque vous entrez un nom de plage dans une formule, Excel va prendre en compte dans la plage sus nommée la cellule se situant à la même ligne que celle que vous éditez.
Code : Sélectionner tout - Visualiser dans une fenêtre à part nomA = "A1:A8" et nomB = "C1:C8"
Dans mon exemple précédent, si G3 contient, Excel va le comprendre comme
Code : Sélectionner tout - Visualiser dans une fenêtre à part =maFonction(nomA, nomB).
Code : Sélectionner tout - Visualiser dans une fenêtre à part =maFonction(A3, C3)
Je voudrais donc que ma fonction agisse ainsi.
J'ai donc pensé bêtement à utiliser ActiveCell.Row pour obtenir la ligne de la cellule courante, or cela ne fonctionne que dans un cas : il faut constamment que la cellule courante soit celle que je veux mettre à jour !
Ainsi, si je vais modifier la cellule A1, la cellule G3 va se mettre à jour sur la ligne de la cellule courante et donc se mettre à jour par rapport à A1 et non A3.
Je cherche donc le moyen de trouver la ligne correspondante à la cellule qui contient la fonction.
Tout en sachant que je veux éviter de passer directement le numéro de ligne en paramètre par exemple.
Au final, une solution serait d'être capable de savoir quelle est la cellule qui appelle la fonction vba.
Merci d'avance si quelqu'un a des idées ou une solution.
Gourbish.
Partager