IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Workbooks.Open FileName - Chemin fichier variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Sans emploi - Autonome
    Inscrit en
    Mars 2018
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi - Autonome

    Informations forums :
    Inscription : Mars 2018
    Messages : 130
    Par défaut Workbooks.Open FileName - Chemin fichier variable
    Bonjour,

    Dans mon programme j'utilise la fonction FileFromBrowser() qui me permet de sélectionner des fichiers quelconque et la fonction Workbooks.Open Filename:= pour ouvrir un fichier.

    Voici la ligne que j'utilise dans mon programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks.Open FileName:="D:\Users\toto\Desktop\test.xlsx"
    Est-ce que je dois à chaque fois renommer le chemin du fichier si je décide d'ouvrir un fichier avec un chemin de répertoire différent ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Peux-tu expliquer un peu plus parce que ça ne semble pas vraiment clair (?!)
    Est-ce que je dois à chaque fois renommer le chemin du fichier si je décide d'ouvrir un fichier avec un chemin de répertoire différent ?
    De ce que je comprends, c'est certain que tu doives changer le chemin s'il est différent...

  3. #3
    Membre confirmé
    Homme Profil pro
    Sans emploi - Autonome
    Inscrit en
    Mars 2018
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi - Autonome

    Informations forums :
    Inscription : Mars 2018
    Messages : 130
    Par défaut
    Justement je ne veux pas modifier le chemin du fichier par moi-même, j'aimerai que cela s'effectue automatiquement si je sélectionne un autre fichier. En VBA il doit surement y avoir un moyen de stocker le chemin d'un fichier non ?

    L'utilisation de cette instruction Workbooks.Open FileName:="D:\Users\toto\Desktop\test.xlsx" est statique, si je sélectionne un fichier excel autre que test.xlsx ma macro ne fonctionnera pas.

    Désolé si je ne suis pas explicite.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 676
    Par défaut
    Bonjour,

    Essaye ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open (Application.GetOpenFilename)

  5. #5
    Membre confirmé
    Homme Profil pro
    Sans emploi - Autonome
    Inscrit en
    Mars 2018
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi - Autonome

    Informations forums :
    Inscription : Mars 2018
    Messages : 130
    Par défaut
    Salut, merci pour ton aide.

    La ligne de code que tu m'a filé permet uniquement d'ouvrir une boite de dialogue afin de sélectionner un fichier. Moi je souhaite une ligne de code qui récupère le chemin du fichier et qu'elle peut être ensuite associé à Workbooks.Open FileName

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Chemin = FileFromBrowser(ThisWorkbook.Path & "\Fichier\", "Fichier de mesures *.xlsx,*.xlsx")
    Sheets("feuil1").Select
    Range("G1").Value = Chemin
    Workbooks.Open FileName:="G1"
    Mais ça m'affiche l'erreur 1004 :
    G1.xlsx introuvable vérifiez l'orthographe du nom de classeur

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 676
    Par défaut
    Citation Envoyé par SpaceX Voir le message
    La ligne de code que tu m'a filé permet uniquement d'ouvrir une boite de dialogue afin de sélectionner un fichier. Moi je souhaite une ligne de code qui récupère le chemin du fichier et qu'elle peut être ensuite associé à Workbooks.Open FileName
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.GetOpenFilename
    Permet uniquement d'ouvrir une boite de dialogue afin de sélectionner un fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open (Application.GetOpenFilename)
    Ouvre le fichier que tu as sélectionné. C'est tiré d'une macro que j'utilise tous les mois, ça fonctionne.

    edit: et sinon pour ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks.Open FileName:="G1"
    Ce serait plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open FileName:=range("G1")
    mais je ne vois pas pourquoi tu passe par une cellule, utilise directement ta variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open FileName:=chemin

  7. #7
    Membre confirmé
    Homme Profil pro
    Sans emploi - Autonome
    Inscrit en
    Mars 2018
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sans emploi - Autonome

    Informations forums :
    Inscription : Mars 2018
    Messages : 130
    Par défaut
    Hallelujah ! merci pour tes explications ça marche.

    Workbooks.Open FileName:=range("G1") ===> marche pour mon code

  8. #8
    Candidat au Club
    Femme Profil pro
    ex ingénieur système et middleware -développe actuellement en VBA pour une asso
    Inscrit en
    Novembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : ex ingénieur système et middleware -développe actuellement en VBA pour une asso

    Informations forums :
    Inscription : Novembre 2019
    Messages : 4
    Par défaut
    bonjour
    je n'arrive pas à mettre le fichier en variable
    quand je mets le chemin / nom de fichier entre quotes , cela fonctionne
    je ne sais plus où chercher pourtant , je vois sur ce blog que c'est possible .merci de votre aide

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Il faudrait voir la partie de code que tu utilises.

  10. #10
    Candidat au Club
    Femme Profil pro
    ex ingénieur système et middleware -développe actuellement en VBA pour une asso
    Inscrit en
    Novembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : ex ingénieur système et middleware -développe actuellement en VBA pour une asso

    Informations forums :
    Inscription : Novembre 2019
    Messages : 4
    Par défaut
    Citation Envoyé par parmi Voir le message
    Il faudrait voir la partie de code que tu utilises.
    voici , j'essaye pas mal de syntaxe Filename = etc ... rien en passe n juste l'exemple que j'ai mis en dessous


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Lenom As String
    Sheets("Facture").Select
    'Lenom = "Facturation en cours -" & Range("K4").Value
    Lenom = "Facturation en cours - 2019"
    LeRep = ThisWorkbook.Path & "\"
     
     
    ' Workbooks.Open ("J:\AL LARK\Facture\Factures\Facturation en cours - 2019")  ' cela marche
    Workbooks.Open Lerep & Lenom  
     
    End Sub

  11. #11
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Ici, il semble manquer un espace après le tiret, avant les guillemets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'Lenom = "Facturation en cours -" & Range("K4").Value

  12. #12
    Candidat au Club
    Femme Profil pro
    ex ingénieur système et middleware -développe actuellement en VBA pour une asso
    Inscrit en
    Novembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : ex ingénieur système et middleware -développe actuellement en VBA pour une asso

    Informations forums :
    Inscription : Novembre 2019
    Messages : 4
    Par défaut
    En fait j ai fait l erreur en copiant la ligne .j ai testé avec des noms simples rien n y fait .des que je mets une variable ça ne marche plus même si la variable est bien alimentée

  13. #13
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Ton programme est bien dans ce répertoire ? : J:\AL LARK\Facture\Factures\

  14. #14
    Candidat au Club
    Femme Profil pro
    ex ingénieur système et middleware -développe actuellement en VBA pour une asso
    Inscrit en
    Novembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : ex ingénieur système et middleware -développe actuellement en VBA pour une asso

    Informations forums :
    Inscription : Novembre 2019
    Messages : 4
    Par défaut
    oui tout à fait

  15. #15
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Tu pourrais mettre un Msgbox pour afficher les variables LeRep et LeNom ou encore utiliser Debug.Print
    Ça pourrait t'aider à cerner le problème.

    Plutôt que d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Facture").Select
    Mets plutôt le nom de la feuille dans ton appel.
    J'imagine qu'on trouve 2019 en K4...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lenom = "Facturation en cours - " & Sheets("Facture").Range("K4").Value

  16. #16
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous,



    Justement je ne veux pas modifier le chemin du fichier par moi-même, j'aimerai que cela s'effectue automatiquement si je sélectionne un autre fichier. En VBA il doit surement y avoir un moyen de stocker le chemin d'un fichier non ?

    Si tu veux ouvrir plusieurs fichiers simplement par clic je te conseille d'utiliser les "FilesDialog" avec ".AllowMultiSelect = True "

    tu selectionnes et cela te les ouvre direct

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    'ouverture d'un fichier par boite FileDialog
    '**********************************************************
        'Declaration d'une variable comme objet FileDialog
        Dim fd As FileDialog
     
        'Creation d'un objet FileDialog comme un File Open dialog box.
        Set fd = Application.FileDialog(msoFileDialogOpen)
     
        'Déclaration d'une variable contenant le "path" de style variant
        Dim vrtSelectedItem As Variant 'obligatoirement de type variant
     
        With fd
            .AllowMultiSelect = True 'Permet de selectionner plusieurs fichiers à ouvrir
            .InitialFileName = "D:\Travail_tempo\Bons\"
     
            If .Show = -1 Then
                For Each vrtSelectedItem In .SelectedItems
     
                    'vrtSelectedItem est un String contenant le "path"  de chaque item selectionné.
                    'affichage du "PATH et du fichier selectionné" dans une boite message
                    'MsgBox "Vous avez sélectionné : " & vrtSelectedItem
                    File_Select = vrtSelectedItem
                Next
                 .Execute
            Else
                Exit Sub
            End If
        End With
    C'est peut-être pas exactement ce que tu cherches mais c'est une proposition

    Cette instruction est au Niveau VBA Office (Word, Excel, Access, Powerpoint ...)

Discussions similaires

  1. Ouvir un fichier avec Workbooks.open filename
    Par Gustz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/07/2017, 12h12
  2. Réponses: 7
    Dernier message: 25/03/2014, 13h33
  3. Difficulté à ouvrir des fichiers avec Workbooks.open
    Par Nono Sto dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 30/01/2013, 11h51
  4. [XL-2003] Comment utiliser Windows(filename).activate? avec un nom de fichier variable
    Par jeo13 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/05/2011, 16h32
  5. Workbooks.Open Filename fonctionne bien sur excel 2000 ?
    Par emoiem dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/03/2008, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo