Liste déroulante = selon les noms de feuilles

Bonjour ;

Je cherche à faire une liste déroulante contient le nombre exact de feuilles du classeur…

Alors si je change de classeur (changement de nombre et de nom de feuilles) la liste se change aussi

Afin d’importer les données depuis la feuille sélectionner vers la feuille du travail.

Les données des feuilles sélectionnées sont identiques.

Bonjour formateur789

Vous pourriez utiliser la fonction :

NOM_FEUILLE()

détaillée : https://www.excel-pratique.com/fr/fonctions-complementaires/nom-feuille.php

Bonjour,

Si j'ai bien compris ta demande, tu as un classeur de "base" qui reste ouvert où tu souhaites importer les valeurs d'une feuille spécifique d'un autre classeur que tu veux choisir dans une liste ? Si c'est ça, code à mettre dans le module du classeur (ThisWorkbook) :

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)

    Dim Fe As Worksheet
    Dim Lst As Shape

    'suppression de la liste si existante
    On Error Resume Next
    ActiveSheet.Shapes("ListeFeuilles").Delete
    On Error GoTo 0

    'ajoute une ListBox "Formulaire" sur la feuille active
    ActiveSheet.ListBoxes.Add 10, 10, 200, 100

    'affecte à la variable Shape pour en utiliser les propriétés
    Set Lst = ActiveSheet.Shapes(1)

    'rempli la liste avec les nomls des feuilles du classeur qui vient d'être activé
    With Lst

        .Name = "ListeFeuilles"
        .OnAction = "QuelleFeuille"
        For Each Fe In ActiveWorkbook.Worksheets: .ControlFormat.AddItem Fe.Name: Next Fe

    End With

    'affecte à la variable afin de pouvoir utiliser les valeurs dans la Sub "QuelleFeuille()"
    Set ClsExemple = ActiveWorkbook

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    'supprime la liste à la fermeture
    On Error Resume Next
    ActiveSheet.Shapes("ListeFeuilles").Delete

End Sub

Code à mettre dans un module standard du classeur de "base", c'est la procédure qui est appelée quand tu cliques dans la liste :

'variable initialisée dans la sub événementielle "Workbook_WindowDeactivate()" pour la récup des valeurs par la suite
Public ClsExemple As Workbook

Public Sub QuelleFeuille()

    With ActiveSheet.Shapes(Application.Caller).ControlFormat

        'pour le test, indique le nom de la feuille choisie
        MsgBox .List(.ListIndex)

        'et ici, la valeur située en A1 de la feuille choisie
        MsgBox ClsExemple.Worksheets(.List(.ListIndex)).Range("A1").Value

    End With

End Sub

C'est dans cette procédure que tu doit adapter afin de faire ce que tu désires de la feuille

Bonsoir,

une proposition :

@ bientôt

LouReeD

Oups !

En relisant la question je me rends compte que je suis à coté de la plaque !

bonne fin de soirée @ tous !

@ bientôt

LouReeD

Merci bien pour toutes vos repenses

et merci bien Mr LouReeD pour votre proposition

et je viens de maitre une petite mise à jour (pièce jointe)

merci d’avance.

aussi

est ce que je veux masquer la feuille Onglets dans la liste du choix

Bonjour,

Bon, là je vois que j'étais aussi à coté de la plaque

Formule à mettre en cellule E10 de la feuille "Onglets" : =INDIRECT(C4 &"!F7")

Adapter pour les deux autres cellules (F7 --> F8 et F9)

Bonjour,

Je suis sur tél.... Mais je crois qu'il suffit de remplacer 1:1 par 2:2 pour que la liste ne prenne pas en compte la première feuille. Après il suffit de glisser la formule.

Ou bien dans la formule liste_onglet en modifiant la référence de la première cellule à prendre en compte...

Bonjour Theze

@ bientôt

LouReeD

Bonjour

voila un test pour ouvrir un onglet

A voir si sa te va

A+

Maurice

Bonsoir,

la colonne A peut être masquée.

Si dans la liste de choix vous voulez faire disparaître "Onglet" (c'est à dire le nom de la feuille sur laquelle se trouve la liste) il vous suffit de modifier la formule de liste dynamique comme ceci :

=DECALER(Onglets!$A$2;1;;NB.SI(Onglets!$A:$A;"><")-2;)

C'est la même mais on part de la ligne 2 pour la référence de cellule, que l'on décale de 1 vers le bas puis on réduit le nombre de valeur de la colonne de 2 pour retirer les deux données qui sont le "titre" de la colonne ainsi que le premier nom de feuille.

Ceci supporte l'ajout et la suppression de feuille, à la condition que la feuille "onglet" soit la première à gauche, sinon il y aura un décalage dans les noms affichés.

@ bientôt

LouReeD

Merci bien pour toutes vos repenses

1000 et 1000 Merci

Bonjour,

merci @ vous de vos remerciements !

@ bientôt

LouReeD

Rechercher des sujets similaires à "liste deroulante noms feuilles"