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

Fermé
Picdumainepoint Messages postés 5 Date d'inscription mardi 12 mars 2019 Statut Membre Dernière intervention 12 mars 2019 - 12 mars 2019 à 10:26
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 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
A voir également:

6 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
Modifié le 12 mars 2019 à 11:34
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
Picdumainepoint Messages postés 5 Date d'inscription mardi 12 mars 2019 Statut Membre Dernière intervention 12 mars 2019
12 mars 2019 à 12:35
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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
Modifié le 12 mars 2019 à 13:50
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
Picdumainepoint Messages postés 5 Date d'inscription mardi 12 mars 2019 Statut Membre Dernière intervention 12 mars 2019
12 mars 2019 à 16:11
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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
12 mars 2019 à 17:17
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
Picdumainepoint Messages postés 5 Date d'inscription mardi 12 mars 2019 Statut Membre Dernière intervention 12 mars 2019
12 mars 2019 à 19:56
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié le 12 mars 2019 à 20:29
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
Picdumainepoint Messages postés 5 Date d'inscription mardi 12 mars 2019 Statut Membre Dernière intervention 12 mars 2019
12 mars 2019 à 21:28
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié le 12 mars 2019 à 23:39
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
13 mars 2019 à 00:24
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