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 nom de fichier dans une cellule [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    DG
    Inscrit en
    Mars 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Monaco

    Informations professionnelles :
    Activité : DG
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2021
    Messages : 20
    Par défaut Récupérer nom de fichier dans une cellule
    Bonjour à tous,

    Je récupère actuellement toute une série de fichiers texte que je mets à la suite au sein d'une fichier CSV que j'utilise ensuite comme base de données dans mon classeur Excel.
    copy "S:\sggdgdfg\*.txt" "S:\dfgdfgd\All.csv"

    Mes fichier txt d'origine ont le même type de nom, il y a deux sortes : "Facture_Trucmuche_20210317_1114" et "Facture_20210311_1212"
    Bien sûr, les derniers caractères de ces deux types de fichiers illustrent la date et l'heure de génération des fichiers

    J'aimerais pouvoir ajouter ces informations dans mon fichier CSV dans une colonne à chaque ligne reprise de mon fichier CSV...

    Pourriez vous m'aider?

    Merci beaucoup!!

  2. #2
    Membre chevronné
    Inscrit en
    Avril 2008
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 270
    Par défaut
    Bonjour Thomas_MC, le forum,


    C’est dommage que tu n’ais pas accès à une version plus récente d’Excel avec PowerQuery qui aurait pu parfaitement répondre à ta demande.

    Voici une base de solution par macro qui utilise le FileSistemObject pour manipuler les fichiers/dossiers.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Sub Compilation()
    Dim srcFolderPath As String
    Dim srcFileName As String
    Dim destCsvPath As String
    Dim csvSeparator As String
    Dim FSO As Object           'Scripting.FileSystemObject
    Dim srcFolder As Object     'Scripting.Folder
    Dim srcFile As Object       'Scripting.File
    Dim srcTxtFile As Object    'Scripting.TextStream
    Dim destCsvFile As Object   'Scripting.TextStream
     
        srcFolderPath = "S:\sggdgdfg"
        destCsvPath = "S:\dfgdfgd\All.csv"
        csvSeparator = ","
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        With FSO
     
            'contrôles
            If Not .FolderExists(srcFolderPath) Then
                Stop    'si arrêt ici, c'est que le dossier source n'est pas trouvé
            End If
            If Not .FolderExists(.GetParentFolderName(destCsvPath)) Then
                Stop    'si arrêt ici, c'est que le dossier où enregistrer le fichier csv n'existe pas
            End If
            If .FileExists(destCsvPath) Then .DeleteFile destCsvPath, True
            If .FileExists(destCsvPath) Then
                Stop    'si arrêt ici, c'est que le fichier csv existe déjà et qu'on ne peut pas le supprimer
            End If
     
            'créer le fichier csv et boucler sur chaque fichier du dossier source
            Set destCsvFile = .CreateTextFile(destCsvPath)
            Set srcFolder = .GetFolder(srcFolderPath)
            For Each srcFile In srcFolder.Files
                'filtrer sur les fichier 'txt'
                If LCase(.GetExtensionName(srcFile.Name)) Like "txt" Then
                    'récupérer le nom du fichier txt source boucler sur chacune de ses lignes
                    srcFileName = .GetBaseName(srcFile.Name)
                    Set srcTxtFile = .OpenTextFile(srcFile.Path, 1)         '1 = Scripting.ForReading
                    While Not srcTxtFile.AtEndOfStream
                        'inscrire dans le fichier csv destination la ligne à laquelle on ajoute le nom fu fichier en dernière colonne
                        destCsvFile.WriteLine srcTxtFile.ReadLine & csvSeparator & srcFileName
                    Wend
                    srcTxtFile.Close
                    Set srcTxtFile = Nothing
                End If
            Next srcFile
     
        End With
     
        'fermeture de la procédure
        Set FSO = Nothing
        Set srcFolder = Nothing
        Set srcTxtFile = Nothing
        Set destCsvFile = Nothing
    End Sub
    A+

  3. #3
    Membre averti
    Homme Profil pro
    DG
    Inscrit en
    Mars 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Monaco

    Informations professionnelles :
    Activité : DG
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2021
    Messages : 20
    Par défaut
    Wow!
    Je n'en attendais pas tant!
    C'est ABSOLUMENT parfait!

    MERCI!!

  4. #4
    Membre averti
    Homme Profil pro
    DG
    Inscrit en
    Mars 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Monaco

    Informations professionnelles :
    Activité : DG
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2021
    Messages : 20
    Par défaut
    J'abuse si je demande comment récupérer le contenu du fichier obtenu All.csv dans l'onglet de mon classeur Excel qui s'appelle justement "All"?
    (ou mieux encore, compiler ce fichier directement au sein de la feuille Excel à partir de laquelle j'exécute la macro ?)

  5. #5
    Membre chevronné
    Inscrit en
    Avril 2008
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 270
    Par défaut
    Bonjour Thomas_MC, le forum,

    Avec plaisir
    Pour la partie importer le fichier csv, c'est un sujet qui a été maintes fois traité et tu trouveras beaucoup d'exemple sur le forum.

    Bonne journée

  6. #6
    Membre averti
    Homme Profil pro
    DG
    Inscrit en
    Mars 2021
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Monaco

    Informations professionnelles :
    Activité : DG
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2021
    Messages : 20
    Par défaut
    Merci encore!

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

Discussions similaires

  1. [XL-2003] afficher le nom du fichier dans une cellule
    Par Philippe76 dans le forum Excel
    Réponses: 4
    Dernier message: 25/04/2019, 11h36
  2. [XL-2016] Récupérer le nom du fichier dans une cellule
    Par Phil333250 dans le forum Excel
    Réponses: 4
    Dernier message: 06/11/2018, 10h40
  3. Récupérer le nom d'un fichier dans une cellule
    Par NicolasJolet dans le forum Excel
    Réponses: 4
    Dernier message: 08/02/2008, 10h47
  4. [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, 12h24
  5. Récupérer des noms de fichiers dans une table ?
    Par florus dans le forum Access
    Réponses: 5
    Dernier message: 25/03/2006, 18h34

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