Coller un nom de fichier dans la boite de dialogue ouvrir d'excel

Picdumainepoint Messages postés 5 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour
je suis un novice en vba ( depuis 3 semaines) et j'ai déjà beaucoup appris sur son fonctionnement
j'ai créé dans un fichier xltm plusieurs petites macro comme créer un formulaire avec combobox, , zoe texte, ajouter des enregistrement effacer etc , programé des filtrages suivant des critères, mais voilà je bloque sur une macro me permettant de selectionner par un double clic un nom de fichier qui est avec son extension ( xls ou xlsx) dans une liste de mon fichier xltm et de de le copier dans la boite de dialogue ouvrir pour que je puisse l'ouvrir ou l'ouvrir directement ce qui serait encore mieux
Je précise que mon fichier xltm et mes fichiers xls ou xlsm sont toujours dans le même répertoire
mais le répertoire n'est pas toujours dans le même lecteur ( c,d,, f ou g)
Voilà j'espère avoir été assez clair et je m'en remets à qui voudra m'aider
en le remerciant par avance

6 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 731
     
    Bonjour,

    Voir ceci:

    https://grenier.self-access.com/access/fichiers/boite-de-dialogue-fichierouvrir/

    un exemple pour ouvrir le classeur:

    Option Explicit
    Private Sub CommandButton1_Click()
    ' Create and set the file dialog object.
        Dim fd As Office.FileDialog
        Set fd = Application.FileDialog(msoFileDialogFilePicker)
        
        With fd
            .Filters.Clear
            .Title = "Select an Excel File"
            .Filters.Add "Excel Files", "*.xlsx?", 1
            .AllowMultiSelect = False
            
            Dim sFile As String
        
            If .Show = True Then
                sFile = .SelectedItems(1)
            End If
        End With
        
        If sFile <> "" Then
            Workbooks.Open sFile     ' Open the Excel file.
        End If
    End Sub
    


    voilà

    0
  2. Picdumainepoint Messages postés 5 Statut Membre
     
    Bonjour cs_LePivert
    Tout d’abord Un Grand Merci pour m'avoir Répondu aussi vite
    J'ai donc créer un bouton de commande dans ma feuille "Source"(feuille où j'ai saisi ma liste de fichiers colonne A Début de liste Cellule 4
    la macro fonctionne pour afficher de la boite de dialogue lorsque je clique sur un titre de fichier quelconque de ma liste mais il me sélectionne toujours le premiernom de fichier de la liste et le copie quelques fois (pas toujours) dans la boite de dialogue "Ouvrir" nom de fFichier
    A savoir que j'ai changé .Filters.Add"ExcelFiles,"*.xlsx?," 1
    par .Filters.Add "ExcelFiles", "*.xls, *.xls, *.xlsx, *.xlsx", 1
    Voilà
    Encore merci pour votre réactivité
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 731
       
      dans le lien transmis il y a des exemples!

      pour avoir le nom du fichier choisi il faut ajouter ceci:

      .InitialFileName = Range("A4").Value 'à adapter
        


      Si tu sélectionnes InitialFileName et que tu appuies sur la touche F1 de ton clavier, tu auras toutes les indications necessaires!

      @+
      0
  3. Picdumainepoint Messages postés 5 Statut Membre
     
    Eh oui c'est encore moi
    je suis donc aller dans le lien, j'ai suivi tous le process et essayé les codes que j'ai essayé d'adapter avec fichier xls et xlsx et j'ai copié InitialFilename = Range "(A4:A100)"
    mais le résultat est toujours le même aucune ,copie du fichier sélectionné dans la boite de dialogue
    je pense que je ne dois pas savoir m'y prendre avec ce satané code
    car l'ouverture de la boite de dialogue se fait impeccablement
    Bon j'ai déjà beaucoup appris en 3 semaines en consultant les différents tutos et FAQet en essayer d'écrire des codes
    Si un jour vous avez d'autres idées je suis preneur
    merci encore pour votre attention
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 731
       
      Ce que je te propose, c'est d'ouvrir le classeur que tu veux copier et de l'enregistrer en copie si c'est dans le même dossier:

      Option Explicit
      Private Sub CommandButton1_Click()
      Dim chemin As String
      Dim fileSaveName As String
      Dim sFile As String
      ' Create and set the file dialog object.
          Dim fd As Office.FileDialog
          Set fd = Application.FileDialog(msoFileDialogFilePicker) 'boite dialogue ouverture
           With fd
              .Filters.Clear
              .Title = "Select an Excel File"
              .Filters.Add "ExcelFiles", "*.xls, *.xls, *.xlsx, *.xlsx", 1
              .AllowMultiSelect = False
              
             If .Show = True Then
                  sFile = .SelectedItems(1)
              End If
          End With
          
          If sFile <> "" Then
          chemin = sFile
            Workbooks.Open sFile     ' Open the Excel file.
            
            fileSaveName = Application.GetSaveAsFilename(chemin, "ExcelFiles (*.xlsx), *.xlsx") 'boite dialogue enregistrement
       ActiveWorkbook.SaveCopyAs fileSaveName 'enregistrement classeur copier
       ActiveWorkbook.Close ' on ferme le classeur copier
       MsgBox "Enregistrement copie effectué à : " & fileSaveName, vbInformation, "Enregistrement copie"
          End If
      End Sub
      


      Voilà

      @+ Le Pivert
      0
  4. Picdumainepoint Messages postés 5 Statut Membre
     
    Bonsoir Le Pivert

    J'ai donc essayé le code mais cela ne fonctionne pas comme je le désirai
    je pense que le problème vient de l'énoncé de mon action
    J'ai créer une base de données dans excel avec des noms de fichiers (de fiches techniques de fabrication pour être plus précis) dans cette base de données j' y ai inclus des critères comme classification du mets, composition du mets etc ce qui me permet d'effectuer un filtrage assez précis de mes fiches
    de ce filtrage, j'obtiens quelques noms de fiche qui sont saisis avec leurs extension dans la colonne $A$
    d'une feuille appelée "Source" et je voulais simplement cliquez sur le nom de fichier afin qu'il se reporte dans la boite de dialogue "ouvrir"
    dans la zone texte" nom de fichier" et que je puisse simplement cliquer sur le bouton ouvrir plutôt que d'effectuer une recherche manuelle ce qui est assez contraignant lorsqu'il y a 300 ou 400 fiches
    Voilà Je vous remercie d'avoir tenter de m'aider
    je pense que je ne m'avoue pas vaincu et je trouverait un jour ou l'autre la solution
    Merci encore pour votre disponibilité
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    si tu as le nom et le chemin du fichier il faut l'ouvrir directement.
    Inutile d'utiliser une boite de dialogue pour un unique fichier qu'on ne doit pas changer.
    A toi de trouver le bon lecteur qui contient le chemin voulu.
    eric

    0
  7. Picdumainepoint Messages postés 5 Statut Membre
     
    Bonsoir Eric
    merci je sais , je suis novice mais quand même pas au point de me compliquer la vie pour rien. Au contraire je cherche à me la faciliter.
    Seulement le hic c'est que je n'ai pas un seul fichier mais entre 350 et 400 qui sont tous dans le même répertoire mais pas toujours sur le même lecteur (suivant l'endroit ou je me trouve et mes besoins)comme expliqué dans les messages précédents
    Bonne soirée.
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Ce n'est pas à ta 1ère question que je peux me faire une idée de ton niveau ;-)

      Soit tu n'as pas compris ma réponse, soit je ne comprend pas ton problème.
      Tu redis pourtant clairement que c'est un fichier précis parmi 400, que tu connais le chemin mais pas le lecteur.
      Tu récupères la liste des lecteurs (ou tu balaies de A à Z), tu boucles dessus avec :
      ch=Dir("C:\rep1\rep2", vbDirectory)

      ch ="" (vide) si le chemin n'existe pas (et donc éventuellement le lecteur)
      et si ch="C:\rep1\rep2", c'est bon, tu l'as trouvé, plus qu'à ouvrir ton fichier sans rien demander à personne.
      eric
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      C'est sympa et respectueux de poster dans d'autres forums sans le dire alors que tu as des intervenants qui te répondent ici.
      0