Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Traiter une cellule de la feuille systematiquemt précédente à la feuille active

J

jmarc

Guest
Bonjour à tous ,

mon probleme est le suivant : j'ai 12 feuilles differentes ( une par mois ) et je veux recuperer la valeur d'une cellule du mois systématiquement précédent (toujours la feuille précédente ,en fait ).

Cette formule devrait donc posséder le parametre de la feuille précédente car je veux la meme formule pour chaque mois ....
Ex : je suis sur la feuille du moi d'avril en c6 : et je fais :
"=somme (c1:c5)+'feuille précédente!c6' "

Mais attention , cette formule dois etre parfaitement la meme pour chaque mois car toutes les calculs de chaques feuilles doivent etre rigoureusement identiques....


Merci de votre aide car je cale ......
 
E

Eric C

Guest
Bonjour le forum
Bonjour jmarc

En C6 de ta feuille tu mets : =SOMME(C1:C5)+Feuil1!C6
'Feuil1 étant à rempalcer par avril ou le mois désiré.
Ou peut être n'ai je pas tout saisi.
@ ++ Eric C
 
J

jmarc

Guest
Ben non , c'est pas si simple car je veux la meme formule pour chacune des feuilles qui doit se referer a la feuille precedente systematiquement ....
: C6 = (feuille n-1)!c6 ......

où "feuille n-1" definit la feuille precedente de la feuille en cours sans pour autant lui donner un nom de reference ....
 
E

Eric C

Guest
Re le forum
Re Jmarc

Je pense que tu te prends la tête en voulant une formule. Je te joint un petit exemple sans macro ni formule inutile dans le présent cas.
@ ++ Eric C
 

Pièces jointes

  • Mois.zip
    1.5 KB · Affichages: 200
  • Mois.zip
    1.5 KB · Affichages: 220
  • Mois.zip
    1.5 KB · Affichages: 220
J

jmarc

Guest
Oui ok , ca d'accord, j'avais bien compris ......
Mais c'est pas ca que je veux faire car toutes mes feuilles sont rigoureusement identiques ( ce sont des feuilles de salaires ....) et j'ai besoin de cette formule pour faire le cumul imposable .... .

Bref , Lorsque je fais une modification de la feuille de calcul, je dois faire un simple copier -coller sur toutes les autres feuilles pour faire la modif ....or , si je prends ton exemple , ca ne marchera pas : j'ai donc besoin d'avoir une formule générale qui va pointer dans la feuille précédente sans connaitre son nom ....

Ceci dit , merci de ton petit exemple .....
 
E

Eric C

Guest
Re le forum
Re Jmarc

Mais tu ne peux pas pointer dans une feuille si celle ci n'est pas nommée ?
Essayes l'enregistreur de macros et tu comprendras cela.
Par ailleurs, le fichier joint prend en considération les sommes accumulées ?


Enfin bon bah euh @ ++ Eric C
 
J

jmarc

Guest
Le probleme n'est pas le nom de la feuille : elle a forcement un nom mais je veux lire une variable de la feuille precedente sans avoir a indiquer son nom . En fait je voudrais l'adresse absolue de la feuille ...

Pour essayer d'etre clair :il me faut la valeur de la cellule c6 de la feuille precedente ... et la formule que je cherche doit etre la meme quelque soit la feuille où je me trouve et ainsi aller chercher la valeur de c6 de la feuille precedente ...
Cette formule doit etre la meme tout le temps car il ne me faut qu'une seule formule pour toutes les feuilles ...


d'où l'idée : feuil(n-1)!C6 mais je sais pas si c'est possible et quelle est la bonne syntaxe....
Sur l'exemple la formule n'est pas la meme puisque sur la feuille de fevrier , elle va pointer sur janvier , : =SOMME(C1:C5)+Janv!C6 et sur la feuille de mars le parametre de la feuille change : =SOMME(C1:C5)+Fév!C6
Moi il me faut la meme formule mais en ce debrouillant pour avoir :
=SOMME(C1:C5)+(FEUILLE ACTUELLE -1 )!C6
 
E

Eric C

Guest
Re le forum
Re JMarc

Bon, je part en courses. Joints un petit exemple concret de ce que tu désires avec les feuilles ad-hoc car là je pige que dalle .... Digestion peut être ? Ca ira mieux au retour .
@ ++ Eric C
 
J

Jon

Guest
bjr

à l'aide de noms définis et de formules xl4, d'indirect et d'autres fonctions, cela doit être faisable.

lire.classeur(38) pour récupérer le nom de la feuille active
lire.document(87) pour l'index de la feuile active
lire.document(50) nombre de feuilles / index de la dernière
lire.document(nom de la première feuille)

HTH
Jon
 
V

Vincent

Guest
Salut a tous

La solution pour moi passerai par l'utilisation de la formule 'Indirect()' qui te permet de composer une reference a une cellule a partir de texte ou du contenu d'une autre cellule.
Il aurait été beaucoup plus simple de te depanner si tu avais poste un exemple de ce que tu veux notamment pour savoir comment sont nommes tes onglets ; mais en partant de l'hypothese que tes 12 onglets sont nommes de 1 à 12 et que cet index est repris sous forme de date (mois de la fiche de paie)
dans la feuille en A1, l'exemple suivant devrait fonctionner :

=somme(c1:c6)+indirect(concatener(mois(a1)-1;"!c6"))

A+

Vincent
 
J

jmarc

Guest
Vincent tu es un Dieu , c'est exactement ce que je voulais ....

Merci a toi .....et merci aussi a eric et ron pour m'avoir consacré un peu de votre temps .....

J'ai enfin ma formule magique , je suis trop heureux .....
 
F

felix

Guest
Bonjour Vincent,
J'ai lu avec beaucoup d'attention la réponse que vous avez faite à Jmarc et peut être pouvez-vous m'aider aussi.
Mon problème ressemble beaucoup au sien avec une nuance. mes feuilles sont nommées non par des mois mais par des jours (ex: 21-janv) et j'en ai environ 300 (6 jours par semaine sur une année). Sur chaque feuille dans la cellule M2 je souhaite faire apparaitre la valeur de la cellule M66 de la feuille précédente.
Merci d'avance de ce que vous pourrez faire pour moi
Felix
 
J

jmarc

Guest
Salut felix ,

Je pense avoir trouver la solution a ton probleme :

Je prends l'hypothese que tu ne compte pas le dimanche sur tes feuilles.

Une restriction sera d'être tres rigoureux dans la syntaxe de tes feuilles et d'ecrire tel le format excel : 01-janv, 19-févr , 23-juil etc etc
Deuxieme restriction : avoir une cellule contenant la date de ta feuille :
donc cela donne la formule (un peu barbare) suivante :

=SI(JOURSEM(A1;2)<>1;INDIRECT(CONCATENER("'";TEXTE(A1-1;"jj-mmm");"'";"!m66"));INDIRECT(CONCATENER("'";TEXTE(A1-2;"jj-mmm");"'";"!m66")))

Arbitrairement, j'ai mis la cellule contenant la date en A1

* JOURSEM(A1;2)<>1 : definie si la date est un lundi

*si ce n'est pas un lundi : INDIRECT(CONCATENER("'";TEXTE(A1-1;"jj-mmm");"'";"!m66"));
Cette formule signifie que l'on va transformer la date précédente en texte (TEXTE(A1-1;"jj-mmm") ; assembler ce texte avec la cellule M66 puis aller chercher la valeur contenue dans M66 de la date precedente

* Si c'est un lundi : INDIRECT(CONCATENER("'";TEXTE(A1-2;"jj-mmm");"'";"!m66")) : c'est la meme chose qu'au dessus mais on va chercher le M66 de l'avant derniere journée du lundi ( donc , et oui , c'est bien le samedi , on occulte le dimanche...)

et voilà !!!!

Dans l'exemple joint , j'ai remplacé ton M66 par B16 et ton M2 par B12 pour plus de commodités....
 
J

jmarc

Guest
je pense que j'avais un peu oublié de joindre le fichier ...

désolé
 

Pièces jointes

  • dates.zip
    2.1 KB · Affichages: 152
  • dates.zip
    2.1 KB · Affichages: 166
  • dates.zip
    2.1 KB · Affichages: 170
F

felix

Guest
Chapeau !
Je m'incline
en plus c'est beau!
J'ai pas tout compris mais cela marche et c'est le principal.
J'ai douté au premier essai car j'ai copié la formule que tu m'avais proposé non pas sur le forum mais sur le mail reçu dans ma boite OE. Hors le caractère <> avait été remplacé par * ce qui ne donnait pas la même chose puis qu'il ne sautait plus les dimanche.
Merci aussi d'avoir supposé à juste titre que je souhaitais sauter ce jour.
Alors comme tu es très fort, j'abuse avec deux nouvelles questions.
après la saisie la sauvegarde ds ce fichier est tjrs très longue.
est-ce dû au nombre de feuilles important ou plutôt au fait que j'ai utilisé une macro pour nommer les feuilles et une autre reporter leur nom ds une case. Si c'est le cas y-a-t'il moyen de d'alléger tout cela.
Peut on faire sauter facilement les feuilles qui correspondent à un dimanche?
Merci d'avance de ce que tu pourras faire pour moi.
félix
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…