Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 05/02/2010, 23h51   #1
Invité régulier
 
Inscription : juillet 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 16
Points : 7
Points : 7
Par défaut Ligne courante, ou plutôt ligne contenant la fonction

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 :
Code :
=maFonction(nomA, nomB)
avec
Code :
nomA = "A1:A8" et nomB = "C1:C8"
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.

Dans mon exemple précédent, si G3 contient
Code :
=maFonction(nomA, nomB)
, Excel va le comprendre comme .

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.

Dernière modification par Gourbish ; 06/02/2010 à 01h38.
Gourbish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2010, 01h55   #2
Invité régulier
 
Inscription : juillet 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 16
Points : 7
Points : 7
YES !
Après toutes ces recherches, il a fallu que je trouve la réponse après avoir posté ici...

Donc voici la solution : Application.Caller qui permet d'obtenir des informations sur comment Visual Basic a été appelé.

Et plus précisément Application.Caller.Address qui renvoie par exemple "$G$3", ce qui correspond à la cellule ayant fait appel à VB.
Gourbish est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 19h56.


 
 
 
 
Partenaires

Hébergement Web