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 :

Récupérer le nom d’un fichier dans un répertoire spécifique


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    790
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 790
    Points : 183
    Points
    183
    Par défaut Récupérer le nom d’un fichier dans un répertoire spécifique
    Bonjour.

    Comment ouvrir un répertoire spécifique, laisser choisir un fichier par l’utilisateur et récupérer le non de ce fichier.

    J’ai une petite procédure qui fonctionne, mais la boîte de dialogue s’ouvre 2 fois, c’est gênant et je n’arrive pas à corriger le problème.

    Voici le:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub VarNomFichier()
    Dim Rep As String
    Rep = "C:\Users\Public\Documents\" 'Chemin et répertoire à ouvrir
    If Dir(Rep, vbDirectory) <> "" Then
        Application.Dialogs(xlDialogOpen).Show Rep
        Rep = Application.GetOpenFilename()
        tmpStr = Split(Rep, "\")
        nomFichier = tmpStr(UBound(tmpStr))
        MsgBox nomFichier
    Else
       MsgBox "Chemin introuvable"
    End If
    End Sub
    J’ai recherché sur internet je n’ai pas trouvé de solution.

    Pourriez-vous me donner une piste svp.

    Merci d’avance pour votre réponse.

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    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
    Sub VarNomFichier()
    Dim nomFichier As String
    Dim tmpStr, Rep
     
    Rep = "C:\Users\Public\XXX\"                                       'Chemin et répertoire à ouvrir
    If Dir(Rep, vbDirectory) <> "" Then
        Rep = Application.GetOpenFilename()
        If Rep <> False Then
            tmpStr = Split(Rep, "\")
            nomFichier = tmpStr(UBound(tmpStr))
            MsgBox nomFichier
        Else
            MsgBox "Action annulée"
        End If
    Else
        MsgBox "Chemin introuvable"
    End If
    End Sub

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    790
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 790
    Points : 183
    Points
    183
    Par défaut
    Bonsoir mercatog.

    Merci pour ta réponse.

    J’ai testé ton code, mais il ouvre le dernier répertoire ouvert et malgré le chemin indiqué " C:\Users\Public\XXX\".

    Je ne comprends pas pourquoi ?

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Mettre un Chdir et si Rep sur un autre disque, mettre Chdrive (F1)
    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
    Sub VarNomFichier()
    Dim nomFichier As String
    Dim tmpStr, Rep
     
    Rep = "C:\Users\user\desktop\"                                       'Chemin et répertoire à ouvrir
    If Dir(Rep, vbDirectory) <> "" Then
        ChDir Rep
        Rep = Application.GetOpenFilename()
        If Rep <> False Then
            tmpStr = Split(Rep, "\")
            nomFichier = tmpStr(UBound(tmpStr))
            MsgBox nomFichier
        Else
            MsgBox "Action annulée"
        End If
    Else
        MsgBox "Chemin introuvable"
    End If
    End Sub

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    790
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 790
    Points : 183
    Points
    183
    Par défaut
    Bonjour mercatog

    J’ai testé ton code modifié, mais sauf erreur de ma part il faut positionner ChDir Rep avant If Dir(Rep, vbDirectory) <> "" Then.

    Cordialement.

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Non, cette ligne test l'existence du répertoire Rep
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Dir(Rep, vbDirectory) <> "" Then
    Si Rep existe donc on change le répertoire par défaut à l'aide de Chdir

    Si on mets Chdir avant et que Rep n'existe pas=>
    Erreur 76, Chemin d'accès introuvable.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    790
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 790
    Points : 183
    Points
    183
    Par défaut
    Excusez-moi j’ai fait une boulette, effectivement il ne faut pas changer la ligne «ChDir Rep».

    En progressant dans ma procédure je rencontre un petit souci.

    Le principe de celle-ci, consiste à copier dans la feuille A un champ nommé «fiche_originale» situé dans la feuille B comportant des liaisons avec un autre fichier.

    Après collage une boîte de dialogue «Mettre à jour les valeurs: original.01.xlsm» apparaît une 1ère fois, il faut appuyer sur «ESCP ou Annuler», puis cette même boîte de dialogue apparaît une 2ème fois.

    Dans cette 2ème boîte de dialogue l’utilisateur choisi le fichier, le nom de celui-ci est récupérer afin de remplacer la valeur "original.01.xlsm" par le nom du fichier choisi.

    Voici le code :

    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
     
    Dim nomFichier As String
    Dim tmpStr, Rep
     
    Columns(1).Find("*", , , , , xlPrevious).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.EntireRow.Insert
    Range("fiche_originale").Copy
    ActiveSheet.Paste 
     
    Rep = "C:\Users\user\desktop\"  'Chemin et répertoire à ouvrir
    If Dir(Rep, vbDirectory) <> "" Then
        ChDir Rep
        Rep = Application.GetOpenFilename()
        If Rep <> False Then
            tmpStr = Split(Rep, "\")
            nomFichier = tmpStr(UBound(tmpStr))
            MsgBox nomFichier
            Cells.Replace What:="original.01.xlsm", Replacement:=nomFichier,   LookAt:=xlPart _
            , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        Else
            MsgBox "Action annulée"
        End If
    Else
        MsgBox "Chemin introuvable"
    End If
    Comment corriger ce code pour éviter que la boîte de dialogue « Mettre à jour les valeurs : » apparaisse 2 fois.

    Avez-vous une idée à proposer.

    Merci d’avance pour votre réponse.

Discussions similaires

  1. lire le nom des fichiers dans un répertoire
    Par wonderboutin123 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2007, 04h22
  2. [Système]Récupérer un nom de fichier dans une table
    Par denis76000 dans le forum Access
    Réponses: 7
    Dernier message: 04/04/2007, 11h24
  3. Récupérer des noms de fichiers dans une table ?
    Par florus dans le forum Access
    Réponses: 5
    Dernier message: 25/03/2006, 17h34
  4. Réponses: 2
    Dernier message: 21/02/2006, 10h36
  5. rechercher d'un nom de fichier dans un répertoire
    Par yerome dans le forum Langage
    Réponses: 7
    Dernier message: 21/07/2005, 11h54

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