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

Signaler
Messages postés
3
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
10 septembre 2009
-
Messages postés
3
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
10 septembre 2009
-
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

Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Salut,

Tu peux utiliser : Application.Caller.Address

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

tu obtiendrais pour ton exemple $C$31

A+
Messages postés
3
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
10 septembre 2009

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
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)
Messages postés
3
Date d'inscription
mardi 8 septembre 2009
Statut
Membre
Dernière intervention
10 septembre 2009

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