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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
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" a écrit dans le message de 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
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" <fxmanceaux@chello.fr> a écrit dans le message de news:eswPT0IMEHA.128@TK2MSFTNGP09.phx.gbl...
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
'----------------------- 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" a écrit dans le message de 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
Daniel.M
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" wrote in message 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
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" <fxmanceaux@chello.fr> wrote in message
news:eswPT0IMEHA.128@TK2MSFTNGP09.phx.gbl...
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
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" wrote in message 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
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
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
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