Extraire le nom d'une feuille

Résolu
Bonjour,

J'ai une petite question,

J'ai un fichier avec un onglet par mois intitulé comme cela " 01 " "02" "03" etc
sur la feuille 03 je souhaiterai récupérer la cellule B2 de la feuille 02.
Sur la feuille 03 dans une cellule on va dire C3 j'ai mis cette formule

=+DROITE(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-TROUVE("]";CELLULE("nomfichier";A1);1))-1

Elle me permet d'aller recuperer le nom de ma feuille 03-1 donc 02.
ensuite dans une autre cellule je mets cette formule

=+INDIRECT("'"&$C$3&"'!B2")

afin d'aller recuperer la cellule B2 de ma feuille intitulée comme la cellule C3.

J'espere que je suis claire.
Mon probleme c'est que si j'intitule ma feuille 02, cela ne marche pas, si je l'intitule 2 ça marche.
Je n'arrive pas a modifier mes formules.
Et j'aimerai que cela marche même quand c'est du texte.
Par exemple si ma feuille ne s'appelait pas 01 ou 02, mais janvier Fevrier comment je pourrais faire.
Merci de votre aide, et j'espere que j'ai été claire. sinon je ferai un petit tableau en exemple

Configuration: Windows / Chrome 69.0.3497.100

31 réponses

Résumé de la discussion

Problème rencontré : on cherche à récupérer la cellule B2 d'une feuille dont le nom est déterminé par le nom de la feuille active, via INDIRECT et des fonctions CELLULE et DROITE. Le souci survient lorsque les noms d'onglets commencent par zéro, Excel les lit comme du texte et les références INDIRECT échouent, une solution consiste à forcer l'extraction du nom en format deux chiffres via TEXTE. En pratique, on peut aussi envisager une cellule intermédiaire pour stocker le nom extrait et construire la référence avec INDIRECT, ce qui offre une solution plus robuste pour les noms non numériques comme janvier.

Bobot (l’IA à votre service)
  1. Bonjour Mike 31,

    Désolée je ne me suis pas connectée depuis quelques jours.

    Je vais tester cela et je te fais un retour.

    Milles merci en tout cas du temps passé et des solutions apportées.
    0
    1. Re,

      En absence de ton retour, sur chaque onglet en cellule B3 colle cette formule

      =TEXTE("1/"&STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32);"mmmm") 

      0
      1. Re,
        Tu commences par supprimer tous ces + après =
        dans toute tes formules tu as =+

        sur le ruban va sur Rechercher et Sélectionner/Remplacer
        dans la boite de dialogue et dans Rechercher saisi =+
        et dans Remplacer saisi simplement =
        et clic sur Remplacer tout

        sans fermer la boite de dialogue ouvre l'onglet suivant et clic sur Remplacer tout et idem sur tous tes onglets

        déjà on y verra plus clair

        je regarde pour le nom de l'onglet si je peux faire plus simple
        0
        1. as tu fini la correction des =+ par =
          0
      2. je l'ai saisi en B3, mais je pense qu'il faut que je revoit ce fichier, moi aussi je me perd un peu du coup. Et puis c'est un petit fichier je pense qu'il ne faut pas que je l'automatise autant.
        c'est surtout la ligne 186 qui me posais problème.
        que j'essayais d'automatiser en fonction du mois de la feuille, par rapport au moins précédent.
        0
        1. Re,

          je suis un peu perdu dans ton fichier, dans quel onglet et cellule as tu saisi la formule !

          0
          1. Depuis que j'ai rentré cette formule
            =TEXTE("1/"&STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;20);"mmmm")

            Mon fichier bug, je me mets sur 03, et tous les onglets sont sur 03 en Mois, je dois faire enregistrer a chaque fois, mais les feuilles sont toutes identiques.
            Je crois que je vais moins automatisé.
            0
            1. tu n'es pas de Lyon par hasard, j'aurai besoin d'une petite formation Excel poussé, j'ai pas mal de tableaux que j'ai automatisé, et je suis sur que je peux les simplifier encore plus. Et mon travail me financerait une formation ? ;-)
              0
              1. Re,

                hélas non je suis lion mais pas de Lyon, de Toulouse
                pour répondre à ta question sur la cellule nommée, quelque soit la position d'une formule faisant référence au champ nommé, Excel ira cherché la plage nommée quelque soit sa position dans le classeur
                0
            2. Et du coup si je nomme la cellule dans l'onglet 02 par exemple, si je copie la feuille en onglet 03. Il ira chercher la cellule de l'onglet 02 ?
              Je vais tester çàa.

              Merci et oui j'ai supprimé, je ne sais pas d'ou viennent tous ces champs.
              0
              1. Re,

                oui bien sur, quelque soit la cellule que tu nommes sur l'onglet de ton choix
                seule consigne mettre la cellule en référence absolue en entourant l'index colonne de dollar $ $
                pour l'exemple j'ai nommé la cellule L95 de l'onglet 03 mais cela pourrait être un autre onglet.
                ='03'!$L$95

                j'ai nommé le champ Cible
                ='03'!$L$95
                et ta formule devient
                =INDIRECT(TEXTE($F$113;"00")&"!"&CAR(64+COLONNE())&Cible)


                j'ai remarqué que dans le gestionnaire des noms tu as une multitude de champ en erreur, supprime les et fait un peu de ménage
                0
                1. Pfffff je suis impressionnée, vraiment.
                  même si Excel ne fait pas de frites ;-)

                  Est ce que je peux te demander si tu sais encore une chose, dans ta formule précédente
                  celle la :
                  =INDIRECT(TEXTE($F$113;"00")&"!"&CAR(64+COLONNE())&94)
                  est-ce que je peux changer le 94 a la fin pour qu'il prenne une cellule que je pourrais nommer tu sais en gestionnaire de noms je sais pas si je suis claire
                  .
                  Parce que si par exemple dans mon fichier quelqu'un rajouter une ligne en 02. Et bien la ligne 94 n'est plus celle a récupérer, je me dis qu'il faudrait qu'il récupère cette cellule et non ce numéro de ligne. Tu vois mon problème ?

                  Je vais devoir me pencher ensuite sur les formules, je ne vais jamais réussir à modifier mon tableau.
                  0
                  1. Re,

                    Excel sait pratiquement tout faire sauf les frites
                    colle cette formule dans une cellule

                    =TEXTE("1/"&STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;20);"mmmm") 


                    cette partie de formule récupère le nom de l'onglet
                    =STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;20)

                    cette formule transforme une valeur numérique contenue par exemple en A1 en chiffre
                    =TEXTE("1/"&A1;"mmmm")

                    et si tu remplaces l'adresse cellule A1 par la formule de récupération du nom de l'onglet s'il est numérique bien sur
                    =TEXTE("1/"&STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;20);"mmmm") 


                    0
                    1. Merci beaucoup de ton aide en tout cas
                      Et je peux te demander une petite chose

                      J'aimerai essayé quelque chose, je ne sais pas si c'est possible.
                      J'en demande peut etre beaucoup à Excel sans macro

                      J'aimerai que dans la cellule B3 le mois se mette automatiquement en fonction de mon nom de feuille
                      par exemple si la feuille se nomme 02 que dans la cellule B3, s'inscrive Février.
                      Je pense que clairement ce n'est pas possible je lui demande de reporter une donnée qu'il n'a pas.
                      Et en plus si une de mes collègues change le nom de la feuille plus rien ne marche

                      Sinon oui tu peux passer la discussion en résolu.
                      Ravie des réponses apportées
                      0
                      1. Re,

                        ta demande était pertinente, si tu estimes ta demande résolue, confirme le moi que je passe le statut en résolu afin qu'elle serve de support
                        1
                        1. Ah oui je vais lire ça calmement. Et faire des essais pour comprendre ma formule.

                          Par contre en incrémentant la formule le G94 ne bouge pas.
                          Je vais restester je me suis peut etre trompée.
                          Merci de tes explications. quel niveau je suis impressionnée.
                          0
                          1. Re,

                            le problème vient justement de ce que tu ne comprends pas, je vais essayer de t'expliquer cette formule placée colonne G et qui commence par faire référence à la colonne G
                            =INDIRECT(TEXTE($F$113;"00")&"!"&CAR(64+COLONNE())&94)

                            =COLONNE() te retourne le numéro de la colonne ou se trouve la formule, exemple cette formule colonne G te retourne 7 soit la septième colonne mais cette formule en colonne A te retourne 1 soit première colonne.
                            il va falloir donc transformer cette valeur en lettre avec cette syntaxe =CAR(), sachant que la première lettre de l'alphabet en majuscule A correspond au code 65, si tu écris =CAR(65), la formule te retourne bien A
                            donc toujours en colonne A si tu écris =CAR(65+colonne()) la formule retourne B parce que 65+colonne qui est 1 =66 soit la colonne B
                            il suffit de faire une petite correction =CAR(65+colonne()-1) ou plus simplement =CAR(64+colonne())
                            à partir de ces connaissances il suffit d'adapter le numéro de colonne en fonction de l'adresse ou la formule se trouve.
                            Je m'explique si tu colles cette formule en colonne G elle te retourne G parce que =Car(64+colonne() qui est la septième) soit =CAR(71) = G si tu veux faire référence à la colonne A depuis la formule colonne G il va falloir faire une correction =CAR(64+COLONNE()-6)
                            pour faire référence par exemple à la colonne C =CAR(64+COLONNE()-4)
                            si à cette formule colonne G tu ajoutes un numéro de ligne 94
                            =CAR(64+COLONNE())&94 cela te retourne G94
                            reste plus qu'a encadrer cette formule avec INDIRECT(....)

                            il faut savoir que l'on peut faire la même chose avec les lignes si la formule est appelée à être incrémenter vers le bas

                            0
                            1. La formule marche mais l'incrémentation non,
                              après j'ai aussi remplace F113 par ma cellule B10 du coup pour qu'en depuliquant mon tableau chaque mois la formule marche, sans calculer F113.
                              Mais j'ai du mettre H94, a la main a la place de G94;

                              Merci quand meme franchement c'est top
                              par contre la formule 64+colonne
                              mon dieu je ne comprends rien
                              0
                              1. enfin j'ai mis (B10-1)

                                =INDIRECT(TEXTE(($B$10-1);"00")&"!G94")
                                0
                            2. Re,

                              alors c'est plus compliqué mais voilà la formule à coller en G133 et incrémenter vers la droite

                              =INDIRECT(TEXTE($F$113;"00")&"!"&CAR(64+COLONNE())&94)
                              0
                              1. et je voulais également comprendre pourquoi je ne peux pas figer G94, enfin juste le 94 mais pas le G dans la fonction indirect par des $
                                Merci
                                0
                                • 1
                                • 2