Excel Formule comportant le nom d'une feuille

INFSON Messages postés 23 Statut Membre -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonsoir,

    essaye comme cela

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


    en colonne A à partir de A2 le nom de ton premier onglet
    0
  2. INFSON Messages postés 23 Statut Membre
     
    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
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  4. INFSON Messages postés 23 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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