Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Optimisation fonction VBA

3 réponses
Avatar
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

3 réponses

Avatar
JB
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 wrote:
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


Avatar
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 wrote:
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




Avatar
JB
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 wrote:
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 wrote:
>> 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 -