Optimisation fonction VBA

Le
j-pascal
Bonjour,

J'ai 52 onglets nommés "S1" "S52"

Je souhaite que les formules de l'onglet "n" fassent référence à
l'onglet "n-1".

(Supposons que "ROP" = "Référence 0nglet Précédent")

J'ai la fonction :

'
Function ROP()
Application.Volatile
ROP = "S" & Right(SheetName(), Len(SheetName()) - 1) - 1
End Function
'

Et dans ma feuille, j'insère la formule : "=INDIRECT(ROP()&"!A2")"

Comment puis-je optimiser la fonction pour que ma formule de feuille
fasse seulement référence à la cellule concernée ?
(ie) "function Toto ()" qui permet d'avoir la formule =Toto(A2)

Un grand merci d'avance pour vos lumières,

JP
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #19070091
Bonjour,

Onglets nommés S01,S02,..:

=INDIRECT("'S"&TEXTE(DROITE(CELLULE("nomfichier";$A$1);2)-1;"00")&"'!
A2")

http://boisgontierjacques.free.fr/pages_site/indirect.htm#OngPrec

JB
http://boisgontierjacques.free.fr


On 7 avr, 10:13, j-pascal
Bonjour,

J'ai 52 onglets nommés "S1" ... "S52"

Je souhaite que les formules de l'onglet "n" fassent référence à
l'onglet "n-1".

(Supposons que "ROP" = "Référence 0nglet Précédent")

J'ai la fonction :

'------
Function ROP()
Application.Volatile
ROP = "S" & Right(SheetName(), Len(SheetName()) - 1) - 1
End Function
'------

Et dans ma feuille, j'insère la formule : "=INDIRECT(ROP()&"!A2")"

Comment puis-je optimiser la fonction pour que ma formule de feuille
fasse seulement référence à la cellule concernée ?
(ie) "function Toto ()" qui permet d'avoir la formule =Toto(A2)

Un grand merci d'avance pour vos lumières,

JP


j-pascal
Le #19071361
Bonjour Jacques,

Merci pour cette proposition.
Hormis qu'on ne passe pas par une macro (Function), je me demande si
cette formule est plus "lisible" dans la feuille (ce que je cherchais à
obtenir), parce que plus longue...

Peut-être que ta proposition est moins consommatrice de ressources
mémoire ?

J'ai bien noté que si la saisie des n° de semaine est à 2 chiffres, je
peux encore simplifier ma "function".

@+ ?

JP

Bonjour,

Onglets nommés S01,S02,..:

=INDIRECT("'S"&TEXTE(DROITE(CELLULE("nomfichier";$A$1);2)-1;"00")&"'!
A2")

http://boisgontierjacques.free.fr/pages_site/indirect.htm#OngPrec

JB
http://boisgontierjacques.free.fr


On 7 avr, 10:13, j-pascal
Bonjour,

J'ai 52 onglets nommés "S1" ... "S52"

Je souhaite que les formules de l'onglet "n" fassent référence à
l'onglet "n-1".

(Supposons que "ROP" = "Référence 0nglet Précédent")

J'ai la fonction :

'------
Function ROP()
Application.Volatile
ROP = "S" & Right(SheetName(), Len(SheetName()) - 1) - 1
End Function
'------

Et dans ma feuille, j'insère la formule : "=INDIRECT(ROP()&"!A2")"

Comment puis-je optimiser la fonction pour que ma formule de feuille
fasse seulement référence à la cellule concernée ?
(ie) "function Toto ()" qui permet d'avoir la formule =Toto(A2)

Un grand merci d'avance pour vos lumières,

JP




JB
Le #19072851
Feuilles S01,S02,S03,....

=Rop("A2")

Function ROP(c)
Application.Volatile
onglet = Application.Caller.Parent.Name
ROP = Sheets("S" & Format(Right(onglet, 2) - 1, "00")).Range(c)
End Function

JB



On 7 avr, 14:22, j-pascal
Bonjour Jacques,

Merci pour cette proposition.
Hormis qu'on ne passe pas par une macro (Function), je me demande si
cette formule est plus "lisible" dans la feuille (ce que je cherchais à
obtenir), parce que plus longue...

Peut-être que ta proposition est moins consommatrice de ressources
mémoire ?

J'ai bien noté que si la saisie des n° de semaine est à 2 chiffres, je
peux encore simplifier ma "function".

@+ ?

JP



> Bonjour,

> Onglets nommés S01,S02,..:

> =INDIRECT("'S"&TEXTE(DROITE(CELLULE("nomfichier";$A$1);2)-1;"00")&"'!
> A2")

>http://boisgontierjacques.free.fr/pages_site/indirect.htm#OngPrec

> JB
>http://boisgontierjacques.free.fr

> On 7 avr, 10:13, j-pascal >> Bonjour,

>> J'ai 52 onglets nommés "S1" ... "S52"

>> Je souhaite que les formules de l'onglet "n" fassent référence à
>> l'onglet "n-1".

>> (Supposons que "ROP" = "Référence 0nglet Précédent")

>> J'ai la fonction :

>> '------
>> Function ROP()
>> Application.Volatile
>> ROP = "S" & Right(SheetName(), Len(SheetName()) - 1) - 1
>> End Function
>> '------

>> Et dans ma feuille, j'insère la formule : "=INDIRECT(ROP()&"!A2")"

>> Comment puis-je optimiser la fonction pour que ma formule de feuille
>> fasse seulement référence à la cellule concernée ?
>> (ie) "function Toto ()" qui permet d'avoir la formule =Toto(A2)

>> Un grand merci d'avance pour vos lumières,

>> JP- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Publicité
Poster une réponse
Anonyme