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 :

IMPORT FICHIER CSV VARIABLE NOM DE FICHIER [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Assistant de Direction
    Inscrit en
    Janvier 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Liban

    Informations professionnelles :
    Activité : Assistant de Direction
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2010
    Messages : 81
    Par défaut IMPORT FICHIER CSV VARIABLE NOM DE FICHIER
    Bonjour à tous

    Je cherche une solution pour importer un fichier CSV en ne filtrant que le fichiers dont la fin du nom est (par exemple) EXP

    Exemple dan ma liste de fichier j'ai plusieurs noms similaires :

    Pays_AA_IMP. CSV
    Pays_AA_EXP. CSV

    Comment intégrer dans un code de type "Application.GetOpenFilename" le choix des fichiers se terminant par IMP ou EXP?

    Merci de vos conseils éclairés

    Bien à tous

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne suis pas certain que l'on puisse filtrer les fichiers avec GetOpenFilename en revanche c'est tout à fait possible avec FileDialog(msoFileDialogFilePicker)

    Exemple où l'on affiche les fichiers csv dont le nom se termine par 2019 se trouvant dans le même répertoire que le classeur actif
    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
    Sub t()
     Dim fd As FileDialog
     Dim fn As String
     Dim e As Integer
     Dim t As String
     Set fd = Application.FileDialog(msoFileDialogFilePicker)
     With fd
     .Filters.Clear
     .Filters.Add "Fichiers Texte", "*.csv"
     .Title = "Sélectionnez le document"
     .InitialFileName = ActiveWorkbook.Path & "\*2019.csv*"
     End With
     If fd.Show = True Then
        For e = 1 To fd.SelectedItems.Count
         t = t & vbCrLf & fd.SelectedItems(e)
        Next
        MsgBox "Vous avez sélectionné " & t
     End If
     Set fd = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 545
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Je ne suis pas certain que l'on puisse filtrer les fichiers avec GetOpenFilename en revanche c'est tout à fait possible avec FileDialog(msoFileDialogFilePicker)

    Exemple où l'on affiche les fichiers csv dont le nom se termine par 2019 se trouvant dans le même répertoire que le classeur actif
    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
    Sub t()
     Dim fd As FileDialog
     Dim fn As String
     Dim e As Integer
     Dim t As String
     Set fd = Application.FileDialog(msoFileDialogFilePicker)
     With fd
     .Filters.Clear
     .Filters.Add "Fichiers Texte", "*.csv"
     .Title = "Sélectionnez le document"
     .InitialFileName = ActiveWorkbook.Path & "\*2019.csv*"
     End With
     If fd.Show = True Then
        For e = 1 To fd.SelectedItems.Count
         t = t & vbCrLf & fd.SelectedItems(e)
        Next
        MsgBox "Vous avez sélectionné " & t
     End If
     Set fd = Nothing
    End Sub
    Je pense qu'en modifiant la ligne 9, on peut directement filtrer les fichiers se finissant par 2019.txt
    .Filters.Add "Fichiers Texte 2019", "*2019.csv" (pas testé)

    Ce n'est pas "standard" (dans le sens où on filtre en général juste l'extension du fichier) mais ça doit pouvoir se faire.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour Unfred,
    Je pense qu'en modifiant la ligne 9, on peut directement filtrer les fichiers se finissant par 2019.txt
    .Filters.Add "Fichiers Texte 2019", "*2019.csv" (pas testé)
    Ce n'est pas "standard" (dans le sens où on filtre en général juste l'extension du fichier) mais ça doit pouvoir se faire.
    Je teste tous les codes que je publie et donc je peux confirmer que cela fonctionne.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Homme Profil pro
    Assistant de Direction
    Inscrit en
    Janvier 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Liban

    Informations professionnelles :
    Activité : Assistant de Direction
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2010
    Messages : 81
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Je ne suis pas certain que l'on puisse filtrer les fichiers avec GetOpenFilename en revanche c'est tout à fait possible avec FileDialog(msoFileDialogFilePicker)

    Exemple où l'on affiche les fichiers csv dont le nom se termine par 2019 se trouvant dans le même répertoire que le classeur actif
    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
    Sub t()
     Dim fd As FileDialog
     Dim fn As String
     Dim e As Integer
     Dim t As String
     Set fd = Application.FileDialog(msoFileDialogFilePicker)
     With fd
     .Filters.Clear
     .Filters.Add "Fichiers Texte", "*.csv"
     .Title = "Sélectionnez le document"
     .InitialFileName = ActiveWorkbook.Path & "\*2019.csv*"
     End With
     If fd.Show = True Then
        For e = 1 To fd.SelectedItems.Count
         t = t & vbCrLf & fd.SelectedItems(e)
        Next
        MsgBox "Vous avez sélectionné " & t
     End If
     Set fd = Nothing
    End Sub
    Bonjour Philippe et merci pour ton aide qui m'a permis de résoudre ce problème. Pour compléter, dans cette séquence, comment récupérer le nom du fichiers CVS choisi et l'intégrer dans un Msgbox une fois le fichier chargé ?

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    comment récupérer le nom du fichiers CVS choisi et l'intégrer dans un Msgbox une fois le fichier chargé ?
    Je ne sais pas si j'ai bien compris votre question mais si vous avez essayé le code, vous avez pu constater que vous avez la liste des fichiers + le nom du répertoire sélectionnés qui s'affiche dans le MsgBox
    Cependant si vous ne voulez que la liste des fichiers sans le répertoire, vous pouvez utiliser la fonction InstrRev

    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     If fd.Show = True Then
        For e = 1 To fd.SelectedItems.Count
         t = t & vbCrLf & Mid(fd.SelectedItems(e), InStrRev(fd.SelectedItems(e), "\") + 1)
        Next
        MsgBox "Vous avez sélectionné " & t
     End If
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 545
    Par défaut
    Je dirais en ajoutant un filtre "*_EXP.csv"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res = Application.GetOpenFilename("*_EXP.csv/*_IMP.csv,*_EXP.csv;*_IMP.csv,*.*,*.*", FilterIndex:=1)
    "*_EXP.csv/*_IMP.csv,*_EXP.csv;*_IMP.csv" définit un filtre dont le nom de filtrage est ""*_EXP.csv/*_IMP.csv"; ce nom peut être modifier pour être plus explicite; "*_EXP.csv;*_IMP.csv" indique les fichiers qui doivent être filtré (utilise les wildcards DOS) , ici on filtre pour afficher les fichiers se finissant par _EXP.csv ou par _IMP.csv.
    https://learn.microsoft.com/en-us/of...etopenfilename

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Importation fichier csv avec nom variable
    Par j_pns dans le forum R
    Réponses: 10
    Dernier message: 03/08/2017, 14h19
  2. Nom de Variables et Import Fichiers Texte
    Par JackSuperFly dans le forum Scilab
    Réponses: 2
    Dernier message: 04/08/2014, 17h53
  3. [2012] Import fichier avec nom variable
    Par parker13 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 23/01/2014, 09h50
  4. Importer fichier CSV avec nom variable
    Par aurelkb dans le forum SSIS
    Réponses: 2
    Dernier message: 08/08/2013, 17h27
  5. Importer fichier csv avec changement de nom
    Par devilprinprin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/07/2010, 08h24

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