Liste déroulante

Bonjour à tous,
Après avoir construit une liste déroulante,
sur le choix existant dans la liste (ex: correspondant à 1 fichier) comment valider le choix pour ouvrir le fichier ?
Merci

Bonjour,

Un exemple serait le bienvenu.
Cordialement.

Merci de répondre,
J’ai 1 fichier « menu général » où j’ai construit une liste déroulante (selon la vidéo de « Docteur Excel » (=>https://www.formuleexcel.com/video-creer-liste-deroulante-excel/)
Mes données sur la liste : 2010, 2011, 2013,2014 jusqu’à 2020
Ceci pour lancer une impression des états correspondants à ces années.
Les fichiers ne sont pas dans le même classeur.
Ce que je souhaite, c’est lorsque j’ai choisi sur la liste déroulante (par exemple 2018) le fichier s’ouvre, s’imprime et se referme).
Il y a une code mais je ne sais malgré mes recherche.

re,

Mets ton fichier en pièce jointe.
Cdtl

Merci je mets le fichier “menu Général” et 1 des 12 fichiers (très confidentiels) qui doivent s’ouvrir et être imprimés après avoir fait le choix sur le liste déroulante.Ces 2 fichiers ne sont pas dans le classeur “menu général”
RécapAnnée2010.xlsx (180,2 Ko)
RécapitulationsMenuGénéral.xlsx (11,8 Ko)

Merci d’avance Heu… je ne peux mettre que 2 liens

Re,

Une proposition à adapter à ton environnement.
Cordialement.
RécapitulationsMenuGénéral.xlsm (24,1 Ko)

Merci sympa
Mais plutôt que faire une bêtise, je préfère te demander ce que je dois en faire.
Parce que dans la liste déroulante je n’ai plis rien.
Quelles sont les manips à faire ?

J’annule mon précédent message.
En cherchant j’ai trouvé ce que tu as construit.
Il faut aller dans le “woksheet” et modifier les "adresses où se trouve mes fichiers (2010 à 2021) .en remplacement de ton adresse

Voilà le chemin =>
ChDir (“F:\A-DC1A-Documents Christian(DC)\A-DC5A-Gestion EL-CH 3\Récapitulations”)
classeur = Dir(“F:\A-DC1A-Documents Christian(DC)\A-DC5A-Gestion EL-CH 3\Récapitulations\Années” & choix_annee & “.xlsx”)
Mais arrivé à :
Workbooks.Open classeur
il ne trouve pas le classeur.
Je dois rater quelque chose ?

Bonjour à tous,

Essaie de mettre un Msgbox classeur après :
classeur = Dir(“F:\A-DC1A-Documents Christian(DC)\A-DC5A-Gestion EL-CH 3\Récapitulations\Années” & choix_annee & “.xlsx”)
Pour voir si le chemin est bien écrit. Est ce qu’il y a un espace entre Années et 2010 ?
Tel que c’est écrit, tu dois obtenir pour l’année 2010 par exemple :
F:\A-DC1A-Documents Christian(DC)\A-DC5A-Gestion EL-CH 3\Récapitulations\Années2010.xlsx
Cordialement.

je pense que c’est à cause de cela =>
Les fichiers années ont chacun un classeur et se nomment :
RécapAnnée2010.xlsx
RécapAnnée2011.xlsx
RécapAnnée2012.xlsx
et la suite
C’est donc dans la synthaxe … mais je ne sais pas faire

Dans ce cas teste :
classeur = Dir(“F:\A-DC1A-Documents Christian(DC)\A-DC5A-Gestion EL-CH 3\Récapitulations\RécapAnnée” & choix_annee & “.xlsx”).
Cordialement.

Non, il ne veut toujours pas trouver le classeur.
Pourtant j’ai osculté le chemin à partir de propriétés du(des) fichier et tout est ok
Je suis désolé de prendre ton temps.
Cordialement

Si tu mets un Msgbox classeur après le :
classeur = Dir(“F:\A-DC1A-Documents Christian(DC)\A-DC5A-Gestion EL-CH 3\Récapitulations\RécapAnnée” & choix_annee & “.xlsx”).
Qu’est ce que tu obtiens ?

et bien ça je n’ai pas su le faire.
écrire
MsgBox et ensuite ?

J’ai trouvé un code qui permet de vérifier si le fichier existe avec le chemin
"F:\A-DC1A-Documents Christian(DC)\A-DC5A-Gestion EL-CH 3\Récapitulations\RécapAnnée2010.xlsx
le message =>
“Send this file to RécapAnnée2010”
ce qui signifie qu’il a bien trouvé le fichier et que le chemin est OK

Il faut ecrire en dessous de la ligne
classeur = Dir(“F:\A-DC1A-Documents Christian(DC)\A-DC5A-Gestion EL-CH 3\Récapitulations\RécapAnnée” & choix_annee & “.xlsx”)
Msgbox classeur
Ce qui demande à Excel d’écrire le résultat de la variable classeur.

Non, il ne m’écris rien. Il n’y a pas de retour.
Il me renvoie toujours le même message
“erreur d’éxecution ‘1004’
Désolé…Nous ne trouvons pas RécapAnnée2011.xlsx. Peut-être l’avez vous déplacé, renommé ou supprimé ?”

Testé sur mon poste, cela fonctionne.

Fichiers Récapxxxx sur mon bureau dans un dossier Récapitulation.
RécapitulationsMenuGénéral.xlsm (19,7 Ko) RécapAnnée2010.xlsx (8,0 Ko) RécapAnnée2011.xlsx (8,0 Ko) RécapAnnée2012.xlsx (8,0 Ko) RécapAnnée2013.xlsx (8,0 Ko) RécapAnnée2014.xlsx (8,0 Ko)

Testes voir si cela fonctionne chez toi.
Si oui, mets à jour la liste de la feuille Paramètres et modifies le chemin de la ligne :
classeur = Dir(“C:\Users\JoDan\Desktop\Récapitulations” & choix_annee & “.xlsx”)
par
classeur = Dir(“F:\A-DC1A-Documents Christian(DC)\A-DC5A-Gestion EL-CH 3\Récapitulations” & choix_annee & “.xlsx”)
Cordialement.

Bonjour,
Vraiment désolé mais cela ne fonctionne toujours pas et avec le même message.
J’ai créé 1 classeurs sur le bureau (Récapitulations) et j’y ai ajouté le “récapitualtionMenuGénéral” et les 4 autres fichiers “RécapAnnéesxxxx”
ci-après la totalité du code =>
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$B$4" Then
           
    Dim classeur As String
    Dim choix_annee As String

    choix_annee = Range("B4").Value
    
    ChDir ("C:\Users\Cordier\Desktop\Récapitulations\")
    classeur = Dir("C:\Users\Cordier\Desktop\Récapitulations\" & choix_annee & ".xlsx")
    Workbooks.Open classeur
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    Workbooks(classeur).Close
   
End If

End Sub

Bonjour,

Essaies ce code, apparemment il faut neutraliser les parenthèses dans l’instruction Chdir

Private Sub Worksheet_Change(ByVal Target As Range)

Dim classeur As String
Dim choix_annee As String

choix_annee = Range(« B4 »).Value

If Target.Address = "$B$4" Then
    
    ChDir "C:\Users\Cordier\Desktop\Récapitulations"
    classeur = Dir("C:\Users\Cordier\Desktop\Récapitulations\" & choix_annee & ".xlsx")
    Workbooks.Open classeur
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    Workbooks(classeur).Close
   
End If

End Sub

Sinon ceci

Private Sub Worksheet_Change(ByVal Target As Range)

Dim classeur As String
Dim choix_annee As String

choix_annee = Range(« B4 »).Value

If Target.Address = "$B$4" Then
    ChDir "C:\Users\Cordier\Desktop\Récapitulations"
    Workbooks.Open Filename:="C:\Users\Cordier\Desktop\Récapitulations\" & choix_annee & ".xlsx"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    ActiveWorkbook.Close
End If

End Sub

Les deux solutions fonctionnent chez moi.
Cordialement.

1ère solution… rien de neuf toujours le message;
2ème solution: le message est différent !
Désolé…nous ne trouvons pas
C:\users\Cordier\Desktop\Récapitulations\2010.xlsx. Peut-être l’avez vous déplacé . . . . ?
j’avais validé 2010