OVH Cloud OVH Cloud

référence cellule dans une procédure Function

15 réponses
Avatar
Pascal Grudler
Bonjour,
Je ne suis pas sp=E9cialiste Excel et voil=E0 plusieurs ann=E9es que je
cherche (Google et autres, sp=E9cialistes/d=E9veloppeurs Excel,...), sans=

succ=E8s : je voudrais r=E9cup=E9rer dans une proc=E9dure Function la r=E9=
f=E9rence
de la cellule (et de l=E0, la feuille) qui l'a appel=E9e.

Exemple (simple) d'utilisation :
comment d=E9finir la fonction VBA "nomCellule" pour que la formule
"=3DnomCellule()" renvoie "A1" en A1, "A2" en A2,...

Merci pour toute id=E9e, tuyau ou conseil.

- Pascal -

P.S.: j'utilise principalement Excel 2000 pour l'instant, mais une
solution pour une version plus r=E9cente me ravirait =E9galement.

10 réponses

1 2
Avatar
isabelle
bonjour Pascal,

Function nomCellule()
Application.Volatile
nomCellule = ActiveCell.Parent.Name & " " & ActiveCell.Address
End Function

isabelle


Bonjour,
Je ne suis pas spécialiste Excel et voilà plusieurs années que je
cherche (Google et autres, spécialistes/développeurs Excel,...), sans
succès : je voudrais récupérer dans une procédure Function la référence
de la cellule (et de là, la feuille) qui l'a appelée.

Exemple (simple) d'utilisation :
comment définir la fonction VBA "nomCellule" pour que la formule
"=nomCellule()" renvoie "A1" en A1, "A2" en A2,...

Merci pour toute idée, tuyau ou conseil.

- Pascal -

P.S.: j'utilise principalement Excel 2000 pour l'instant, mais une
solution pour une version plus récente me ravirait également.


Avatar
Francois L
Bonjour,
Je ne suis pas spécialiste Excel et voilà plusieurs années que je
cherche (Google et autres, spécialistes/développeurs Excel,...), sans
succès : je voudrais récupérer dans une procédure Function la référence
de la cellule (et de là, la feuille) qui l'a appelée.

Exemple (simple) d'utilisation :
comment définir la fonction VBA "nomCellule" pour que la formule
"=nomCellule()" renvoie "A1" en A1, "A2" en A2,...



Bonsoir,

La fonction de feuille ADRESSE fait cela très bien, mais si tu veux une
fonction perso

Public Function adr(ByRef target As Range)
adr = target.Address(False, False, xlA1)
End Function

--
François L

Avatar
Francois L
Petite précision : ce que je cherche, est une fonction qui renvoie une
valeur dépendant de la cellule où cette fonction est appelée (sans
mettre le nom de la cellule en paramètre).


Re,

Alors, bonne réponse d'Isabelle (ce qui est plus que fréquent !)

--
François L

Avatar
Pascal Grudler
Petite précision : ce que je cherche, est une fonction qui renvoie une
valeur dépendant de la cellule où cette fonction est appelée (sans
mettre le nom de la cellule en paramètre).
- Pascal -


Bonjour,
Je ne suis pas spécialiste Excel et voilà plusieurs années que je
cherche (Google et autres, spécialistes/développeurs Excel,...), sa ns
succès : je voudrais récupérer dans une procédure Function la r éférence
de la cellule (et de là, la feuille) qui l'a appelée.

Exemple (simple) d'utilisation :
comment définir la fonction VBA "nomCellule" pour que la formule
"=nomCellule()" renvoie "A1" en A1, "A2" en A2,...

Merci pour toute idée, tuyau ou conseil.

- Pascal -

P.S.: j'utilise principalement Excel 2000 pour l'instant, mais une
solution pour une version plus récente me ravirait également.


Avatar
Pascal Grudler
Merci, pour la réponse super rapide mais ce n'est pas tout à fait le
résultat que j'attendais. En effet, cette fonction renvoie les infos su r
la cellule active (qui peut changer) et non pas celles de la cellule où
elle se trouve (valeur constante pour une cellule donnée).
Illustration : si on utilise la fonction dans deux cellules différentes
on obtient la même valeur dans les deux cellules.
Ce n'est pas, ce que je voulais. Désolé !
Cordialement.
- Pascal -

bonjour Pascal,

Function nomCellule()
Application.Volatile
nomCellule = ActiveCell.Parent.Name & " " & ActiveCell.Address
End Function

isabelle


Bonjour,
Je ne suis pas spécialiste Excel et voilà plusieurs années que j e
cherche (Google et autres, spécialistes/développeurs Excel,...), s ans
succès : je voudrais récupérer dans une procédure Function la référence
de la cellule (et de là, la feuille) qui l'a appelée.

Exemple (simple) d'utilisation :
comment définir la fonction VBA "nomCellule" pour que la formule
"=nomCellule()" renvoie "A1" en A1, "A2" en A2,...

Merci pour toute idée, tuyau ou conseil.

- Pascal -

P.S.: j'utilise principalement Excel 2000 pour l'instant, mais une
solution pour une version plus récente me ravirait également.




Avatar
isabelle
re bonjour Pascal,

tu pourrais utiliser les fonctions d'excel :

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;9^9)&ADRESSE(LIGNE();COLONNE())

isabelle


Merci, pour la réponse super rapide mais ce n'est pas tout à fait le
résultat que j'attendais. En effet, cette fonction renvoie les infos sur
la cellule active (qui peut changer) et non pas celles de la cellule où
elle se trouve (valeur constante pour une cellule donnée).
Illustration : si on utilise la fonction dans deux cellules différentes
on obtient la même valeur dans les deux cellules.
Ce n'est pas, ce que je voulais. Désolé !
Cordialement.
- Pascal -


bonjour Pascal,

Function nomCellule()
Application.Volatile
nomCellule = ActiveCell.Parent.Name & " " & ActiveCell.Address
End Function

isabelle



Bonjour,
Je ne suis pas spécialiste Excel et voilà plusieurs années que je
cherche (Google et autres, spécialistes/développeurs Excel,...), sans
succès : je voudrais récupérer dans une procédure Function la référence
de la cellule (et de là, la feuille) qui l'a appelée.

Exemple (simple) d'utilisation :
comment définir la fonction VBA "nomCellule" pour que la formule
"=nomCellule()" renvoie "A1" en A1, "A2" en A2,...

Merci pour toute idée, tuyau ou conseil.

- Pascal -

P.S.: j'utilise principalement Excel 2000 pour l'instant, mais une
solution pour une version plus récente me ravirait également.








Avatar
Paul V
hello à tous,

Il suffit d'enlever l'instruction
Application.volatile
pour que la fonction ne se remette pas à jour à chaque calcul.

Pas testé mais cela devrait fonctionner

A+
Paul V

"isabelle" a écrit dans le message de news:
%
re bonjour Pascal,

tu pourrais utiliser les fonctions d'excel :

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;9^9)&ADRESSE(LIGNE();COLONNE())

isabelle


Merci, pour la réponse super rapide mais ce n'est pas tout à fait le
résultat que j'attendais. En effet, cette fonction renvoie les infos sur
la cellule active (qui peut changer) et non pas celles de la cellule où
elle se trouve (valeur constante pour une cellule donnée).
Illustration : si on utilise la fonction dans deux cellules différentes
on obtient la même valeur dans les deux cellules.
Ce n'est pas, ce que je voulais. Désolé !
Cordialement.
- Pascal -


bonjour Pascal,

Function nomCellule()
Application.Volatile
nomCellule = ActiveCell.Parent.Name & " " & ActiveCell.Address
End Function

isabelle



Bonjour,
Je ne suis pas spécialiste Excel et voilà plusieurs années que je
cherche (Google et autres, spécialistes/développeurs Excel,...), sans
succès : je voudrais récupérer dans une procédure Function la référence
de la cellule (et de là, la feuille) qui l'a appelée.

Exemple (simple) d'utilisation :
comment définir la fonction VBA "nomCellule" pour que la formule
"=nomCellule()" renvoie "A1" en A1, "A2" en A2,...

Merci pour toute idée, tuyau ou conseil.

- Pascal -

P.S.: j'utilise principalement Excel 2000 pour l'instant, mais une
solution pour une version plus récente me ravirait également.









Avatar
Michel Gaboly
Bonsoir Paul,

Cela ne marche pas dans tous les cas : si tu sélectionnes plusieurs cel lules à la fois, et que tu entres la formule en
une seule fois dans la sélection, tu n'auras pas le bon résultat. Ide m en cas de Recopier vers le bas, vers la droite, ...

En effet la cellule active ne correspond qu'à l'une des celllules conce rnées.


Quant à la dernière proposition d'Isabelle :

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;99)&A DRESSE(LIGNE();COLONNE())

Elle ne fonctionne pas sur un document non encore enregistré.


Voici donc ce que je propose :

Si on n'utilise que les 26 premières colonnes d'une feuille :

ÊR(COLONNE() + 64) & LIGNE()

CAR() renvoie le caractère correspondant au code ASCII indiqué. "A" p our code 65, puis "B" pour 66, ...


Toutefois, pour avoir une formule qui marche quelle que soit la cellule, il faut tenir compte qu'à partir de la 27ème
colonne, les références comportent 2 lettres :

=SI(COLONNE() > 26;CAR(ENT(COLONNE() / 26 + 64));"") & CAR(MOD(COLONNE( ) - 1;26) + 1 + 64) & LIGNE()

Pour répondre + précisément à la demande initiale, on peut défi nir le nom "NomCellule", comme se référant à la formule
ci-dessus, et ensuite utiliser :

=NomCellule



hello à tous,

Il suffit d'enlever l'instruction
Application.volatile
pour que la fonction ne se remette pas à jour à chaque calcul.

Pas testé mais cela devrait fonctionner

A+
Paul V

"isabelle" a écrit dans le message de news:
%
re bonjour Pascal,

tu pourrais utiliser les fonctions d'excel :

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;9^ 9)&ADRESSE(LIGNE();COLONNE())

isabelle


Merci, pour la réponse super rapide mais ce n'est pas tout à fait le
résultat que j'attendais. En effet, cette fonction renvoie les info s sur
la cellule active (qui peut changer) et non pas celles de la cellule où
elle se trouve (valeur constante pour une cellule donnée).
Illustration : si on utilise la fonction dans deux cellules différe ntes
on obtient la même valeur dans les deux cellules.
Ce n'est pas, ce que je voulais. Désolé !
Cordialement.
- Pascal -


bonjour Pascal,

Function nomCellule()
Application.Volatile
nomCellule = ActiveCell.Parent.Name & " " & ActiveCell.Address
End Function

isabelle



Bonjour,
Je ne suis pas spécialiste Excel et voilà plusieurs années qu e je
cherche (Google et autres, spécialistes/développeurs Excel,...) , sans
succès : je voudrais récupérer dans une procédure Function la référence
de la cellule (et de là, la feuille) qui l'a appelée.

Exemple (simple) d'utilisation :
comment définir la fonction VBA "nomCellule" pour que la formule
"=nomCellule()" renvoie "A1" en A1, "A2" en A2,...

Merci pour toute idée, tuyau ou conseil.

- Pascal -

P.S.: j'utilise principalement Excel 2000 pour l'instant, mais une
solution pour une version plus récente me ravirait également.








--
Cordialement,

Michel Gaboly
www.gaboly.com





Avatar
isabelle
bonjour Michel,

pourquoi ne pas mettre tout simplement :

­RESSE(LIGNE();COLONNE())

isabelle

Bonsoir Paul,

Cela ne marche pas dans tous les cas : si tu sélectionnes plusieurs
cellules à la fois, et que tu entres la formule en une seule fois dans
la sélection, tu n'auras pas le bon résultat. Idem en cas de Recopier
vers le bas, vers la droite, ...

En effet la cellule active ne correspond qu'à l'une des celllules
concernées.


Quant à la dernière proposition d'Isabelle :

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;99)&ADRESSE(LIGNE();COLONNE())


Elle ne fonctionne pas sur un document non encore enregistré.


Voici donc ce que je propose :

Si on n'utilise que les 26 premières colonnes d'une feuille :

ÊR(COLONNE() + 64) & LIGNE()

CAR() renvoie le caractère correspondant au code ASCII indiqué. "A" pour
code 65, puis "B" pour 66, ...


Toutefois, pour avoir une formule qui marche quelle que soit la cellule,
il faut tenir compte qu'à partir de la 27ème colonne, les références
comportent 2 lettres :

=SI(COLONNE() > 26;CAR(ENT(COLONNE() / 26 + 64));"") & CAR(MOD(COLONNE()
- 1;26) + 1 + 64) & LIGNE()

Pour répondre + précisément à la demande initiale, on peut définir le
nom "NomCellule", comme se référant à la formule ci-dessus, et ensuite
utiliser :

=NomCellule




hello à tous,

Il suffit d'enlever l'instruction
Application.volatile
pour que la fonction ne se remette pas à jour à chaque calcul.

Pas testé mais cela devrait fonctionner

A+
Paul V

"isabelle" a écrit dans le message de news:
%

re bonjour Pascal,

tu pourrais utiliser les fonctions d'excel :

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;9^9)&ADRESSE(LIGNE();COLONNE())


isabelle


Merci, pour la réponse super rapide mais ce n'est pas tout à fait le
résultat que j'attendais. En effet, cette fonction renvoie les infos
sur
la cellule active (qui peut changer) et non pas celles de la cellule où
elle se trouve (valeur constante pour une cellule donnée).
Illustration : si on utilise la fonction dans deux cellules différentes
on obtient la même valeur dans les deux cellules.
Ce n'est pas, ce que je voulais. Désolé !
Cordialement.
- Pascal -


bonjour Pascal,

Function nomCellule()
Application.Volatile
nomCellule = ActiveCell.Parent.Name & " " & ActiveCell.Address
End Function

isabelle



Bonjour,
Je ne suis pas spécialiste Excel et voilà plusieurs années que je
cherche (Google et autres, spécialistes/développeurs Excel,...), sans
succès : je voudrais récupérer dans une procédure Function la
référence
de la cellule (et de là, la feuille) qui l'a appelée.

Exemple (simple) d'utilisation :
comment définir la fonction VBA "nomCellule" pour que la formule
"=nomCellule()" renvoie "A1" en A1, "A2" en A2,...

Merci pour toute idée, tuyau ou conseil.

- Pascal -

P.S.: j'utilise principalement Excel 2000 pour l'instant, mais une
solution pour une version plus récente me ravirait également.
















Avatar
Michel Gaboly
Bonsoir Isabelle,

Bien + plus simple, mais - drôle ;-)))

En + ta formule fonctionnera aussi avec laversion 2007, dont le nb de col onnes possibles est bien + grand !



bonjour Michel,

pourquoi ne pas mettre tout simplement :

­RESSE(LIGNE();COLONNE())

isabelle

Bonsoir Paul,

Cela ne marche pas dans tous les cas : si tu sélectionnes plusieurs
cellules à la fois, et que tu entres la formule en une seule fois da ns
la sélection, tu n'auras pas le bon résultat. Idem en cas de Recop ier
vers le bas, vers la droite, ...

En effet la cellule active ne correspond qu'à l'une des celllules
concernées.


Quant à la dernière proposition d'Isabelle :

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;99 )&ADRESSE(LIGNE();COLONNE())


Elle ne fonctionne pas sur un document non encore enregistré.


Voici donc ce que je propose :

Si on n'utilise que les 26 premières colonnes d'une feuille :

ÊR(COLONNE() + 64) & LIGNE()

CAR() renvoie le caractère correspondant au code ASCII indiqué. "A "
pour code 65, puis "B" pour 66, ...


Toutefois, pour avoir une formule qui marche quelle que soit la
cellule, il faut tenir compte qu'à partir de la 27ème colonne, les
références comportent 2 lettres :

=SI(COLONNE() > 26;CAR(ENT(COLONNE() / 26 + 64));"") &
CAR(MOD(COLONNE() - 1;26) + 1 + 64) & LIGNE()

Pour répondre + précisément à la demande initiale, on peut dé finir le
nom "NomCellule", comme se référant à la formule ci-dessus, et e nsuite
utiliser :

=NomCellule




hello à tous,

Il suffit d'enlever l'instruction
Application.volatile
pour que la fonction ne se remette pas à jour à chaque calcul.

Pas testé mais cela devrait fonctionner

A+
Paul V

"isabelle" a écrit dans le message de news:
%

re bonjour Pascal,

tu pourrais utiliser les fonctions d'excel :

=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1; 9^9)&ADRESSE(LIGNE();COLONNE())


isabelle


Merci, pour la réponse super rapide mais ce n'est pas tout à fa it le
résultat que j'attendais. En effet, cette fonction renvoie les
infos sur
la cellule active (qui peut changer) et non pas celles de la
cellule où
elle se trouve (valeur constante pour une cellule donnée).
Illustration : si on utilise la fonction dans deux cellules
différentes
on obtient la même valeur dans les deux cellules.
Ce n'est pas, ce que je voulais. Désolé !
Cordialement.
- Pascal -


bonjour Pascal,

Function nomCellule()
Application.Volatile
nomCellule = ActiveCell.Parent.Name & " " & ActiveCell.Address
End Function

isabelle



Bonjour,
Je ne suis pas spécialiste Excel et voilà plusieurs années que je
cherche (Google et autres, spécialistes/développeurs Excel,.. .),
sans
succès : je voudrais récupérer dans une procédure Functio n la
référence
de la cellule (et de là, la feuille) qui l'a appelée.

Exemple (simple) d'utilisation :
comment définir la fonction VBA "nomCellule" pour que la formul e
"=nomCellule()" renvoie "A1" en A1, "A2" en A2,...

Merci pour toute idée, tuyau ou conseil.

- Pascal -

P.S.: j'utilise principalement Excel 2000 pour l'instant, mais un e
solution pour une version plus récente me ravirait également.













--
Cordialement,

Michel Gaboly
www.gaboly.com







1 2