Excel Formule comportant le nom d'une feuille

Bonjour

J'ai dans la "feuil1" de mon classeur une colonne E comportant la liste des noms de feuille de mon classeur
je souhaiterai récupérer dans la feuille 1 en regard de chaque ligne la valeur de la cellule B2 de chacune des feuilles sans avoir à taper
chaque fois le nom de la feuille dans la formule =nom de feuille!B2

Est-il possible de faire ça sans passer par du code VBA ?

Merci d'avance

5 réponses

  1. Bonsoir,

    essaye comme cela

    =INDIRECT(A2&"!"&"B2")


    en colonne A à partir de A2 le nom de ton premier onglet
    0
    1. Bonjour

      Merci mais ça ne fonctionne pas
      j'ai essayé en VBA
      Sub test()

      Dim i As Variant
      'position nement en colonne C
      ActiveCell.Select
      'récupération de la valeur de l'onglet en colonne E
      i = ActiveCell.Offset(0, 2).Value
      'affectation de cette valeur à la cellule selectionnée en colonne C
      ActiveCell.Value = [i!B2]
      End Sub

      ça plante également à ce niveau ActiveCell.Value = [i!B2]

      Cordialement
      0
      1. Re,

        je viens de retester ma formule qui fonctionne parfaitement;
        si tu as colonne E à partir de E2 la liste des noms de tes onglets il n'y a pas de problème sauf si les noms saisis colonne E et le nom des onglets ne sont pas parfaitement identiques
        et la formule est bien
        =INDIRECT(E2&"!"&"B2")


        si tu n'arrives pas à adapter, le mieux serait de mettre à disposition un exemple de ton fichier et le problème sera le même s'il y a une différence entre les deux rapports

        autrement la ligne de commande en VBA est toute simple
        Sub test()
        ActiveCell.Offset(0, 2).Value = Sheets(ActiveCell.Value).[B2]
        End Sub

        ou tu fais une boucle
        For Each cel In Range("E2:E4")
        cel.Offset(0, 2).Value = Sheets(cel.Value).[B2]
        Next cel


        et si tu veux prévoir des onglets qui n'existent pas encore
        On Error Resume Next
        For Each cel In Range("E2:E20")
        cel.Offset(0, 2).Value = Sheets(cel.Value).[B2]
        Next cel

        on pourrait également faire un code qui s'adapterait à la colonne, tu vois que les solutions sont multiples
        0
        1. Bonjour

          Effectivement la fonction =INDIRECT(F2&"!"&"B2") fonctionne
          Merci pour cette fonction que est déjà une excellente solution

          J'ai testé le vba ça fonctionne aussi

          J'ai adapté pour correspondre à mon souhait de voir le résultat en colonne B de l'onglet Sommalre
          ( par ailleurs mes noms d'onglets sont en fait dans colonne F et non E )

          Ci-dessous le fichier test dans lequel j'ai mis le code
          fichier c-joint
          https://www.cjoint.com/c/KHFrT0AqAT4

          Grand merci pour ton aide efficace

          Cordialement
          0
          1. Re,

            Récupère ton fichier, j'ai mis le code test2 directement dans les propriétés d'un bouton ActiveX, clic sur le bouton et les dates colonne B s'actualiseront

            https://www.cjoint.com/c/KHFuzUqMYyF

            j'ai également corrigé le code test1 et test2
            0