[Déplacé .Net --> VBA] adresse relative dans une fonction

Résolu
JoelMath Messages postés 3 Date d'inscription mardi 8 septembre 2009 Statut Membre Dernière intervention 10 septembre 2009 - 8 sept. 2009 à 17:41
JoelMath Messages postés 3 Date d'inscription mardi 8 septembre 2009 Statut Membre Dernière intervention 10 septembre 2009 - 10 sept. 2009 à 15:46
Bonjour,

Je suis en train d'écrire une fonction qui utilise comme entrée les 30 cellules précédentes dans la colone adjacente.

J'allais utiliser «offset» pour dire à la fonction de prendre les valeurs voulues, mais je n'arrive pas à déterminer l'adresse de la cellule dans laquelle j'écris la fonction. Tout ce que j'obtiens est la valeur de la cellule active qui change aussitôt que je déplace mon curseur!

Par exemple, pour aller chercher la première valeur

premiere_valeur_cherchee = ActiveCell.Offset(-1, -1).Value

Existe-t-il une fonction du type «activeCell» qui donnerait l'adresse de la cellule dans laquelle est écrite la fonction??


Merci d'avance

P.S.
Je sais que je pourrais sélectioner les 30 entrées comme variable indépendante de ma fonction mais ça ne règlerait pas mon problème.

JOEL m

4 réponses

cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
10 sept. 2009 à 01:06
Salut,

Tu peux utiliser : Application.Caller.Address

Ou, à partir d'Excel 2003 : Application.ThisCell.Address

tu obtiendrais pour ton exemple $C$31

A+
3
JoelMath Messages postés 3 Date d'inscription mardi 8 septembre 2009 Statut Membre Dernière intervention 10 septembre 2009
10 sept. 2009 à 15:46
Oh Yeahhhh!!!!

Je savais qu'il y avait une solution assez simple!

Merci Ayr ça marche béton.

J'utilise les deux variantes qui renvoient la valeur de la ligne et colone

Application.Caller.row
Application.Caller.column

JOEL m
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 sept. 2009 à 18:25
Salut
Pas clair.
"cellule dans laquelle est écrite la fonction" : Une fonction n'appartient pas à une cellule mais à une feuille ou un module, enfin tout dépend où tu l'as mise, on n'a aucune précision à ce sujet, difficile de te répondre.
Colle ici la déclaration de ta procédure et dis nous ce qui déclenche cette procédure (un appel extérieur ...)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
JoelMath Messages postés 3 Date d'inscription mardi 8 septembre 2009 Statut Membre Dernière intervention 10 septembre 2009
8 sept. 2009 à 19:29
D'accord, je vais essayer de préciser mon problème.

Bon j'écris dans un module une fonction qui sera utilisée dans une cellule (en entrant la syntaxe ="Nomfonction"()) contenue dans une feuille quelcuonque.

Je souhaite que cette cellule renvoie une valeur qui est fonction des 30 cellules se trouvant dans les 30 lignes précédentes dans la colone adjacente.

Exemple:
j'utilise ma fonction à la cellule C31 en écrivant dans la cellule: =LaminMist()

Je voudrais que la cellule renvoie une fonction des valeurs contenues dans les cellules B1 à B30.

voici le code:

Function LaminMist()
Dim A(30) As Double
colone = 1

If N = "" Then

LaminMist = ""

Else

A(0) = Sheets("Coefficients").Cells(5, colone) 'ce sont les coefficients fixes
A(1) = Sheets("Coefficients").Cells(6, colone)
[...]
A(29) = Sheets("Coefficients").Cells(35, colone)
Lamin = A0

For i = 0 To 30
Lamin = Lamin + A(i) * ActiveCell.Offset(-i - 1, 1).Value
Next i

Lamin = LaminMist
End If
End Function

c'est à cette ligne que je voudrais remplacer «ActiveCell» par une propriété qui donnerait l'adresse de la cellule dans laquelle on utilise la fonction ( C31 pour l'exemple cité plus haut) .

Est-ce que ma question est plus compréhensible?

JOEL m
0
Rejoignez-nous