appel de fonction

Le
FxM
Bonsoir à tou(te)s,

Je fais appel à vous car j'aurais besoin de connaître l'adresse de la
cellule appellant une fonction perso (si possible avec le nom de la
feuille). Le but est de définir des plages variables en fonction de la
cellule appelante.

Point qui peut être important : cette fonction va être appelée plusieurs
fois par feuille.

Exemple :
Formule en C4 =toto(C2).

Public function toto(inp)
cel = ????
.
toto = le résultat calculé
end function

Merci à celle ou celui qui aurait une piste.

@+
FxM
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #1340133
Bonjour FxM,

Essaie ceci :

'-----------------------
Function Toto(Rg As Range)

Dim Rg1 As Range
Set Rg1 = Application.Caller

MsgBox "La Cellule qui appelle est : " & _
Rg1.Parent.Name & "!" & Rg1.Address(0, 0) & _
vbCrLf & "la cellule traitée est : " & _
Rg.Parent.Name & "!" & Rg.Address(0, 0)

End Function
'-----------------------


Salutations!




"FxM" Bonsoir à tou(te)s,

Je fais appel à vous car j'aurais besoin de connaître l'adresse de la
cellule appellant une fonction perso (si possible avec le nom de la
feuille). Le but est de définir des plages variables en fonction de la
cellule appelante.

Point qui peut être important : cette fonction va être appelée plusieurs
fois par feuille.

Exemple :
Formule en C4 =toto(C2).

Public function toto(inp)
cel = ????
....
toto = le résultat calculé
end function

Merci à celle ou celui qui aurait une piste.

@+
FxM
Daniel.M
Le #1340132
Salut FxM,

Voici un exemple bidon pour illustrer Application.Caller

Public Function toto(Rng1 As Range) As Integer
Dim s As String
If TypeOf Application.Caller Is Range Then
s = Application.Caller.Address(external:=1)
Else
s = "Appelé d'on ne sait où"
End If

toto = Len(s)
End Function

Ceci étant dit, en modifiant le traitement dans toto en fonction de l'adresse à
partir de laquelle elle est appelée, tu te soustrais des capacités de MAJ
automatiques d'Excel (tu te coupes du moteur de recalculation).

Si tu veux préciser ton besoin, on pourrait peut-être aider pour le faire
autrement.

Salutations,

Daniel M.

"FxM" news:
Bonsoir à tou(te)s,

Je fais appel à vous car j'aurais besoin de connaître l'adresse de la
cellule appellant une fonction perso (si possible avec le nom de la
feuille). Le but est de définir des plages variables en fonction de la
cellule appelante.

Point qui peut être important : cette fonction va être appelée plusieurs
fois par feuille.

Exemple :
Formule en C4 =toto(C2).

Public function toto(inp)
cel = ????
....
toto = le résultat calculé
end function

Merci à celle ou celui qui aurait une piste.

@+
FxM


FxM
Le #1340131
Je me doutais bien qu'il y avait un caller là-dessous. Voici à quoi ca
m'a mené :
Si l'appel toto() -> ligne 70, la plage est sur les lignes 8 à 68
Si l'appel toto() -> ligne 170, la plage est sur les lignes 108 à 168
etc, ..

Public Function toto(vale)
Application.Volatile True
lig = Int(Application.Parent.Caller.Row / 100)
Set plage = Union(Range("G8:G68"), Range("Q8:Q68")). _
Offset(100 * lig, 0)
etc ...
End Function

S'il y a mieux, je reste preneur.

Merci à Denis et Daniel pour ces précieuses indications.

@+
FxM



FxM wrote:

Bonsoir à tou(te)s,

Je fais appel à vous car j'aurais besoin de connaître l'adresse de la
cellule appellant une fonction perso (si possible avec le nom de la
feuille). Le but est de définir des plages variables en fonction de la
cellule appelante.

Point qui peut être important : cette fonction va être appelée plusieurs
fois par feuille.

Exemple :
Formule en C4 =toto(C2).

Public function toto(inp)
cel = ????
....
toto = le résultat calculé
end function

Merci à celle ou celui qui aurait une piste.

@+
FxM


Publicité
Poster une réponse
Anonyme