Menu

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

Messages postés
5
Date d'inscription
mardi 12 mars 2019
Dernière intervention
12 mars 2019
- - Dernière réponse : eriiic
Messages postés
22596
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mars 2019
- 13 mars 2019 à 00:24
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
Afficher la suite 

Votre réponse

6 réponses

Messages postés
5916
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
26 mars 2019
411
0
Merci
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à

Commenter la réponse de cs_Le Pivert
Messages postés
5
Date d'inscription
mardi 12 mars 2019
Dernière intervention
12 mars 2019
0
Merci
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é
cs_Le Pivert
Messages postés
5916
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
26 mars 2019
411 -
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!

@+
Commenter la réponse de Picdumainepoint
Messages postés
5
Date d'inscription
mardi 12 mars 2019
Dernière intervention
12 mars 2019
0
Merci
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
cs_Le Pivert
Messages postés
5916
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
26 mars 2019
411 -
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
Commenter la réponse de Picdumainepoint
Messages postés
5
Date d'inscription
mardi 12 mars 2019
Dernière intervention
12 mars 2019
0
Merci
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é
Commenter la réponse de Picdumainepoint
Messages postés
22596
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mars 2019
7294
0
Merci
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

En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Commenter la réponse de eriiic
Messages postés
5
Date d'inscription
mardi 12 mars 2019
Dernière intervention
12 mars 2019
0
Merci
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.
eriiic
Messages postés
22596
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mars 2019
7294 -
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
eriiic
Messages postés
22596
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mars 2019
7294 -
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.
Commenter la réponse de Picdumainepoint