OVH Cloud OVH Cloud

Inserer automatiquement le nom de la feuille dans une formule se trouvant sur la page

12 réponses
Avatar
Ramses Seth
Bonjour

Après avoir longuement regardé votre forum, j'ai trouvé quelques
explications mais pas pour faire "exactement" ce que je souhaite sans
utiliser Visual Basic.
En effet j'ai une feuille pour chaque semaine, identique en format et
présentation. Ma formule est la suivante
C1=Somme(Feuil1:Feuil10!A1) pour la feuille 10. C'est la même formule pour
la feuille 13 qui donne C1=Somme(Feuil:Feuil13!A1) sauf que c'est le numéro
de la feuille sur laquelle se trouve la formule qui change. Jusque là, je
sais faire. Le problème est que j'ai des dizaines de formules de ce genre
par feuille et ce n'est pas toujours moi qui fait les formules, d'où des
erreurs que je pourrais ne pas voir. Existe t-il une formule pour spécifier
à la formule de prendre la feuille sur laquelle elle se trouve, ce qui me
permettrait de faire une copie de la dernière semaine pour la semaine en
cours, avec la formule mise à jour sans avoir le #ref!.???
P.S: je ne peux créer toutes mes feuilles à l'avance car je rajoute parfois
des colonnes selon les mois où les périodes.

Si vous pouviez m'éclairer, cela fait 3 mois que je cherche en vain avec
l'aide d'Excel .

Merci d'avance à ceux qui pourrons m'aider.

10 réponses

1 2
Avatar
j
DROITE(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-TROUVE("]";C
ELLULE("nomfichier";A1)))
renvoie le nom de la page en cours
--

http://jacxl.free.fr/



"Ramses Seth" a écrit dans le message de news:

Bonjour

Après avoir longuement regardé votre forum, j'ai trouvé quelques
explications mais pas pour faire "exactement" ce que je souhaite sans
utiliser Visual Basic.
En effet j'ai une feuille pour chaque semaine, identique en format et
présentation. Ma formule est la suivante
C1=Somme(Feuil1:Feuil10!A1) pour la feuille 10. C'est la même formule pour
la feuille 13 qui donne C1=Somme(Feuil:Feuil13!A1) sauf que c'est le
numéro

de la feuille sur laquelle se trouve la formule qui change. Jusque là, je
sais faire. Le problème est que j'ai des dizaines de formules de ce genre
par feuille et ce n'est pas toujours moi qui fait les formules, d'où des
erreurs que je pourrais ne pas voir. Existe t-il une formule pour
spécifier

à la formule de prendre la feuille sur laquelle elle se trouve, ce qui me
permettrait de faire une copie de la dernière semaine pour la semaine en
cours, avec la formule mise à jour sans avoir le #ref!.???
P.S: je ne peux créer toutes mes feuilles à l'avance car je rajoute
parfois

des colonnes selon les mois où les périodes.

Si vous pouviez m'éclairer, cela fait 3 mois que je cherche en vain avec
l'aide d'Excel .

Merci d'avance à ceux qui pourrons m'aider.




Avatar
Ramses Seth
Cela est il réellement impossible ou bien sans intêret ?
Merci à ceux qui ont essayés de m'aider mais cela ne marche toujours pas
"Ramses Seth" a écrit dans le message de
news:
Bonjour

Après avoir longuement regardé votre forum, j'ai trouvé quelques
explications mais pas pour faire "exactement" ce que je souhaite sans
utiliser Visual Basic.
En effet j'ai une feuille pour chaque semaine, identique en format et
présentation. Ma formule est la suivante
C1=Somme(Feuil1:Feuil10!A1) pour la feuille 10. C'est la même formule pour
la feuille 13 qui donne C1=Somme(Feuil:Feuil13!A1) sauf que c'est le
numéro

de la feuille sur laquelle se trouve la formule qui change. Jusque là, je
sais faire. Le problème est que j'ai des dizaines de formules de ce genre
par feuille et ce n'est pas toujours moi qui fait les formules, d'où des
erreurs que je pourrais ne pas voir. Existe t-il une formule pour
spécifier

à la formule de prendre la feuille sur laquelle elle se trouve, ce qui me
permettrait de faire une copie de la dernière semaine pour la semaine en
cours, avec la formule mise à jour sans avoir le #ref!.???
P.S: je ne peux créer toutes mes feuilles à l'avance car je rajoute
parfois

des colonnes selon les mois où les périodes.

Si vous pouviez m'éclairer, cela fait 3 mois que je cherche en vain avec
l'aide d'Excel .

Merci d'avance à ceux qui pourrons m'aider.




Avatar
Frédéric Sigonneau
Bonjour,

Sans VBA, comme tu le souhaites, je ne sais pas si c'est possible. Avec une
fonction perso VBA (à copier dans un module standard du classeur concerné), ça
pourrait peut-être te dépanner :

Function AutoConso3D(PremièreFeuille As String, Cellule As String)
Application.Volatile
AutoConso3D = Evaluate("SUM('" & PremièreFeuille _
& ":" & Range(Cellule).Parent.Name & "'!" & Cellule & ")")
End Function

Ensuite, pour reprendre tes données exemple, dans la cellule C1 de la dernière
feuille renseignée :

=AutoConso3D("Feuil1";"A1")

Quand tu recopieras les feuilles contenant cette formule, n'oublie pas un petit
coup de F9 pour que la fonction soit recalculée et le résultat en C1 mis à jour.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Cela est il réellement impossible ou bien sans intêret ?
Merci à ceux qui ont essayés de m'aider mais cela ne marche toujours pas
"Ramses Seth" a écrit dans le message de
news:
Bonjour

Après avoir longuement regardé votre forum, j'ai trouvé quelques
explications mais pas pour faire "exactement" ce que je souhaite sans
utiliser Visual Basic.
En effet j'ai une feuille pour chaque semaine, identique en format et
présentation. Ma formule est la suivante
C1=Somme(Feuil1:Feuil10!A1) pour la feuille 10. C'est la même formule pour
la feuille 13 qui donne C1=Somme(Feuil:Feuil13!A1) sauf que c'est le
numéro

de la feuille sur laquelle se trouve la formule qui change. Jusque là, je
sais faire. Le problème est que j'ai des dizaines de formules de ce genre
par feuille et ce n'est pas toujours moi qui fait les formules, d'où des
erreurs que je pourrais ne pas voir. Existe t-il une formule pour
spécifier

à la formule de prendre la feuille sur laquelle elle se trouve, ce qui me
permettrait de faire une copie de la dernière semaine pour la semaine en
cours, avec la formule mise à jour sans avoir le #ref!.???
P.S: je ne peux créer toutes mes feuilles à l'avance car je rajoute
parfois

des colonnes selon les mois où les périodes.

Si vous pouviez m'éclairer, cela fait 3 mois que je cherche en vain avec
l'aide d'Excel .

Merci d'avance à ceux qui pourrons m'aider.






Avatar
FxM
Bonjour,

Ramses Seth wrote:
Cela est il réellement impossible ou bien sans intêret ?
Merci à ceux qui ont essayés de m'aider mais cela ne marche
toujours pas


Ce n'est ni sans interet, ni impossible. Avec les indications de ,
nous pensions que tu y serais arrivé(e) seul(e).

Sur le principe :
=somme(feuil1:Feuil1!A1) pour la feuille1
=somme(feuil1:Feuil2!A1) pour la feuille2
=somme(feuil1:Feuil3!A1) pour la feuille3

On peut remarquer que "somme(feuil1: " (au début) et
"!A1)" (à la fin) sont des élements fixes. J'oublie volonatirement le
signe = en tout début.

***** la formule complète (attention, c'est un paquet qu'il te faut
mettre sur une seule ligne) :
Place-toi en C1 et copies :
=EVAL("somme(feuil1:"&DROITE(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-TROUVE("]";CELLULE("nomfichier";A1)))&"!A1)")

Un peu plus en détail :
=eval(...) pour evaluer ce qu'il y a entre patenthèses.

"somme(feuil1: " (au début) et
"!A1)" (à la fin) sont les élements fixes

& pour concaténer (coller) plusieurs élements

droite(cellule........"nomfichier";A1))) pour donner le nom de la
feuille actuelle.

Concernant eval(...)
Si tu as installée la macro complémentaire Morefun de Laurent Longre,
ça te simplifie le boulot (http://longre.free.fr). Sinon : Alt-F11
Insertion | module. Tapes ce qui suit :
function eval(inp)
eval =evaluate(inp)
end function


Deux contraintes :
- il faut que ton classeur soit enregistré, sinon la formule renvoit
#VALEUR.

- les feuilles sont sommées selon leur nom.
Si une feuille autre s'insère entre les feuilles extrêmes, ses valeurs
sont ajoutées.
feuil1 | feuil2 | toto | feuil3 --> toto est ajoutée

A l'inverse, si les feuilles extrêmes sont l'une à coté de l'autre les
autres feuilles sont oubliées.
feuil1 | feuil3 | toto | feuil2 --> feuil2 n'est pas comptée

Voilà, voilà.

@+
FxM

Avatar
isabelle
bonjour Ramses,

je croiyais y arriver en combinant la formule de LL qui retourne le nom
de la feuille
alors j'ai mis cette formule en cellule D1 de la feuil3
=STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)

et la formule indirect, =SOMME(INDIRECT("Feuil1:"&D1&"!A1")) mais niet
ça retoure #REF!

je ne voie d'autre solution qu'une function perso

Function MaSommeFeuille(cellule As Range)
c = cellule.Address
For Each f In Sheets
If f.Name = ActiveSheet.Name Then GoTo fin
MaSommeFeuille = MaSommeFeuille + Sheets(f.Name).Range(c)
Next
fin:
MaSommeFeuille = MaSommeFeuille + Sheets(f.Name).Range(c)
End Function

isabelle


Cela est il réellement impossible ou bien sans intêret ?
Merci à ceux qui ont essayés de m'aider mais cela ne marche toujours pas
"Ramses Seth" a écrit dans le message de
news:
Bonjour

Après avoir longuement regardé votre forum, j'ai trouvé quelques
explications mais pas pour faire "exactement" ce que je souhaite sans
utiliser Visual Basic.
En effet j'ai une feuille pour chaque semaine, identique en format et
présentation. Ma formule est la suivante
C1=Somme(Feuil1:Feuil10!A1) pour la feuille 10. C'est la même formule pour
la feuille 13 qui donne C1=Somme(Feuil:Feuil13!A1) sauf que c'est le
numéro

de la feuille sur laquelle se trouve la formule qui change. Jusque là, je
sais faire. Le problème est que j'ai des dizaines de formules de ce genre
par feuille et ce n'est pas toujours moi qui fait les formules, d'où des
erreurs que je pourrais ne pas voir. Existe t-il une formule pour
spécifier

à la formule de prendre la feuille sur laquelle elle se trouve, ce qui me
permettrait de faire une copie de la dernière semaine pour la semaine en
cours, avec la formule mise à jour sans avoir le #ref!.???
P.S: je ne peux créer toutes mes feuilles à l'avance car je rajoute
parfois

des colonnes selon les mois où les périodes.

Si vous pouviez m'éclairer, cela fait 3 mois que je cherche en vain avec
l'aide d'Excel .

Merci d'avance à ceux qui pourrons m'aider.






Avatar
Ramses Seth
Merci bcp à FxM et isabelle. Je vais essayer ce que vous m'avez conseillé si
rapidement.
Concernant les indications de ,je vous prie de bien vouloir m'excuser,
pour ne pas l'avoir signaler sur le forum, mais j'ai contacté en mail
et il ne savait pas comment résoudre "totalement" mon problème. Sur ce il
m'a conseillé de redemander de l'aide sur le forum, ce que j'ai fait
aussitôt.

Merci de votre rapidité et du temps passé pour me répondre.

à bientôt.

R.S.

;-)
Avatar
Ramses Seth
Merci beaucoup à vous Frédéric. Je compte essayer VB très prochainement mais
pour ce cas là je ne peux me permettre de le faire pour des raisons
professionnelles car la personne à qui je repasse le classeur n'y connais
pas grand chose.

Merci pour votre aide.

R.S.

;)
Avatar
j
tricheur, on a dit sans vba !
eval c'est pas une fonction Excel
(j'ai essayé comme isabelle avec indirect, mais bernique !)


"FxM" a écrit dans le message de news:

Bonjour,

Ramses Seth wrote:
Cela est il réellement impossible ou bien sans intêret ?
Merci à ceux qui ont essayés de m'aider mais cela ne marche
toujours pas


Ce n'est ni sans interet, ni impossible. Avec les indications de ,
nous pensions que tu y serais arrivé(e) seul(e).

Sur le principe :
=somme(feuil1:Feuil1!A1) pour la feuille1
=somme(feuil1:Feuil2!A1) pour la feuille2
=somme(feuil1:Feuil3!A1) pour la feuille3

On peut remarquer que "somme(feuil1: " (au début) et
"!A1)" (à la fin) sont des élements fixes. J'oublie volonatirement le
signe = en tout début.

***** la formule complète (attention, c'est un paquet qu'il te faut
mettre sur une seule ligne) :
Place-toi en C1 et copies :

=EVAL("somme(feuil1:"&DROITE(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfich

ier";A1))-TROUVE("]";CELLULE("nomfichier";A1)))&"!A1)")

Un peu plus en détail :
=eval(...) pour evaluer ce qu'il y a entre patenthèses.

"somme(feuil1: " (au début) et
"!A1)" (à la fin) sont les élements fixes

& pour concaténer (coller) plusieurs élements

droite(cellule........"nomfichier";A1))) pour donner le nom de la
feuille actuelle.

Concernant eval(...)
Si tu as installée la macro complémentaire Morefun de Laurent Longre,
ça te simplifie le boulot (http://longre.free.fr). Sinon : Alt-F11
Insertion | module. Tapes ce qui suit :
function eval(inp)
eval =evaluate(inp)
end function


Deux contraintes :
- il faut que ton classeur soit enregistré, sinon la formule renvoit
#VALEUR.

- les feuilles sont sommées selon leur nom.
Si une feuille autre s'insère entre les feuilles extrêmes, ses valeurs
sont ajoutées.
feuil1 | feuil2 | toto | feuil3 --> toto est ajoutée

A l'inverse, si les feuilles extrêmes sont l'une à coté de l'autre les
autres feuilles sont oubliées.
feuil1 | feuil3 | toto | feuil2 --> feuil2 n'est pas comptée

Voilà, voilà.

@+
FxM




Avatar
FxM
wrote:
tricheur, on a dit sans vba !
Zut, je suis démasqué ..

eval c'est pas une fonction Excel
C'est dans mon Excel (avec Morefun ;o))

(j'ai essayé comme isabelle avec indirect, mais bernique !)
Apparemment, nous nous sommes tous cassés le nez dessus


@+
FxM

Avatar
Misange
bonsoir,
sans intervenir sur le fond : pour ce qui est d'avoir une fonction ou du
code VBA dans un classeur, c'est transparent pour l'utilisateur. La
seule chose qu'il faut lui dire c'est qu'il faut dire oui quand on lui
demande d'activer les macros à l'ouverture du classeur. Les macros ça
n'a pas de dents et ça ne mord pas ! Une fonction perso te permet juste
d'écrire dans une cellule =mafonction(C1) et que tout un tas de calculs
soient par exemple effectués sur la cellule C1 et renvoyés dans la
cellule de destination. L'utilisateur n'en voit pas plus :-)
Voilà c'est tout pour la leçon de dédramatisation ou démystification
des macros !

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta


Ramses Seth wrote:
Merci beaucoup à vous Frédéric. Je compte essayer VB très prochainement mais
pour ce cas là je ne peux me permettre de le faire pour des raisons
professionnelles car la personne à qui je repasse le classeur n'y connais
pas grand chose.

Merci pour votre aide.

R.S.

;)




1 2