Formule INDIRECT pour calcul sur feuille précédente pour chaque page

Bonjour. J'essaye d'appliquer une formule pour que chaque nouvelle feuille se réfère à la feuille de calcul précédente pour obtenir un résultat. La formule =INDIRECT("'"&feuiprec()&"'A1") semble parfaite pour mon besoin, mais ne fonctionne pas chez moi.

Mon calcul était comme suit à la base (pour obtenir un calcul en septembre en prenant en compte des données d'août) :

=((H4-August!H4)/August!H4)*100

Et comme ceci avec ce que j'ai cru comprendre de la formule INDIRECT :

=INDIRECT((H4-("'"&feuiprec()&"'!H4"))/("'"&feuiprec()&"'!H4"))*100

Pourriez vous m'aider ?

Merci,

Marina

Bonjour,

La fonction FEUILPREC n'existe pas dans Excel. C'est peut-être une fonction VBA propre à ton classeur ? Peux-tu joindre le classeur ?

Daniel

PS. Indique ta version d'Excel dans ton profil.

Bonjour,

Comme l'indique Daniel, le problème vient de feuillePrec.

Bon, en passant outre le fait que votre méthode peut très vite allourdir votre classeur, vous pouvez contourner ainsi :

EN SUPPOSANT QUE VOUS AVEZ WINDOWS EN ANGLAIS ou du moins dans la meme langue que vos noms de feuille, sinon les noms de mois ne correspondront pas.

Remplacez votre formule par

=100*(
H4-INDIRECT(PROPER(TEXT((DATEVALUE("01"&REPLACE(CELL("filename");1;FIND("]";CELL("filename"));"")&"2024")-1);"mmmm"))&"'!H4"))
/
INDIRECT(PROPER(TEXT((DATEVALUE("01 "&REPLACE(CELL("filename");1;FIND("]";CELL("filename"));"")&"2024")-1);"mmmm"))&"'!H4")

Il y a moyen de faire plus simple avec les lambdas notamment sur versions recentes d'excel.

Mais si vous aviez des noms de feuilles un peu plus generiques du type 08-24, 09-24 etc. ce serait beaucoup plus simple.

D'accord .. merci beaucoup

Voici mon fichier

Merci. Avant de continuer pouvez-vous indiquer votre version d'office ainsi que la langue de votre système d'exploitation ? Ces deux informations sont essentielles car elles influent, pour la 1e, les fonctions disponibles, pour la seconde le format de date utilisé par excel.

Ah oui c'est Microsoft Office Professional Plus de 2021, en français

Merci beaucoup. Vous acceptez les macros/UDFs ? Car au vu de vos noms de feuille on ne va jamais s'en sortir avec les fonctions "de base".

Alternativement est-ce un problème de renommer les feuilles ?

Auquel cas le renommage serait :

(le top, des indices) "ce que vous voulez"_1, "ce que vous voulez"_2, etc

ou (mois entiers, EN FRANCAIS) janvier, fevrier, mars, avril

ou (mois abrégés) 01-24, 02-24, 03-24…

Ceci dit, pour 12 feuilles, le plus simple est d'inscrire le nom de la feuille précédente dans un coin inutilisé de la feuille et d'y faire référence avec INDIRECT. C'est aussi le plus performant, ce qui évite de recalculer ce nom autant de fois qu'il y a de formule.

Daniel

Oui aucun problème pour renommer les feuilles ! Je travaille en Australie, mais ce fichier ne sera que pour moi et mon patron. J'ai titré comme cela parce que je n'ai pensé aux éventuels problèmes pour une formule

Re,

Avec les feuilles renommées par numéro de mois à deux chiffres (septembre = 09), on peut utiliser la formule ci-après

=100*(
($H6-INDIRECT("'"&$C$1&"'!"&CELLULE("address";$H6))) / INDIRECT("'"&$C$1&"'!"&CELLULE("address";$H6))
)

Avec, en C1

=TEXTE(DROITE(CELLULE("filename";A1);2)-1;"00")

Ci-joint votre fichier avec en feuille 09 (septembre) toutes les cellules modifiées en rouge.

Notez que pour le premier mois il faudra garder vos formules initiales puisqu'il nexiste pas d'antécédent (la formule retournera une erreur).

J'ai utilisé la fonction CELLULE avec adresse, qui permet de ne pas avoir à entrer manuellement l'adresse de chaque cellule dans la fonction indirect. C'est plus aisé pour les c/c.

Ci-joint le fichier.

Bonjour Marina, le fil, le forum,

Bienvenue sur le forum.

Avec cette fonction perso, il est possible de récupérer la valeur de la feuille précédente :

Public Function FeuiPrec() As String

    On Error GoTo AllezOnSort
    Application.Volatile True

    FeuiPrec = Application.ThisCell.Worksheet.Previous.Name
    Exit Function

AllezOnSort:

    With Application.ThisCell.Parent.Parent.Worksheets
        FeuiPrec = .Item(.Count).Name
    End With

End Function

La macro est dans un module standard mais il faut donc accepter les macros.

Cela donne ceci dans la feuille "Sept" pour récupérer la valeur de H4 dans la feuille "August" :

image

Le classeur test (EDIT : ERREUR GROSSIERE CORRIGEE !):

Bons tests.

AL

C'est absolument génial, merci beaucoup .. donc pour chaque mois dans la cellule C1 il faut que la formule =TEXTE(DROITE(@CELLULE("filename";A1);2)-1;"00") soit présente systématiquement, avec la même écriture pour se référer au mois précédent ?

Merci pour votre retour.

Exactement, la formule

=TEXTE(DROITE(@CELLULE("filename";A1);2)-1;"00")

Lit le numéro du mois courant, càd le nom de la feuille dans laquelle elle se trouve (d'où l'intéret du renommage "pratique" des feuilles). Il s'agit de :

DROITE(@CELLULE("filename";A1);2)

Ensuite on va chercher le mois précédent, donc on retire 1.

Puis on formatte le texte pour retourner un numéro à deux chiffres, c'est le role de la fonction TEXTE(blablabla; "00")

Alternativement vous pouvez utiliser l'UDF proposé par AL 22 pour un résultat identique.

Incroyable. Merci mille fois ! Je regarde plus en détails demain, c'est l'heure de dormir en Australie :p

Merci vraiment beaucoup, saboh12617, AL 22 et DanielC !

Rechercher des sujets similaires à "formule indirect calcul feuille precedente chaque page"