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
 
Date d'inscription: juillet 2008
Messages: 16
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
Code :
=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.

Dernière modification par Gourbish ; 06/02/2010 à 01h38.
Gourbish est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/02/2010, 01h55   #2
Invité régulier
 
Date d'inscription: juillet 2008
Messages: 16
Par défaut

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
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 02h32.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.