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 :

Importer nom et contenu fichier texte


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Importer nom et contenu fichier texte
    Bonjour,

    A l'aide de la fonction ImportText ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub ImportText(NomFichier As String, Cible As Range)
        Dim WBS As Workbook
     
     
       Workbooks.OpenText Filename:=NomFichier, _
        StartRow:=1, _
            DataType:=xlDelimited, _
            Semicolon:=True, _
            FieldInfo:=Array(1, 1), _
            TrailingMinusNumbers:=True
            Set WBS = ActiveWorkbook
        WBS.Worksheets(1).UsedRange.Copy Destination:=Cible
        WBS.Close
    End Sub
    j'arrive à importer sur une feuille excel le contenu de plusieurs fichiers texte commençant pas le même nom (test1_) et contenu dans un répertoire où j'ai plusieurs fichiers texte de nom différent(test2_, test3_, ...).
    Ce que je souhaiterai c'est importer le nom du fichier également.
    Avoir en sortie sur ma feuille excel:

    Nom : Capture.PNG
Affichages : 354
Taille : 6,3 Ko

    Si vous avez des solutions ou des pistes où je pourrai puiser.
    Merci de votre aide.

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    sans être sur, essayes ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set wbs = ActiveWorkbook 'après cette ligne, insère
    cible(0, 1) = NomFichier
    wbs.Worksheets(1).UsedRange.Copy Destination:=cible 'avant celle-ci
    si j'ai compris !!!!
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Bonjour Dom,

    Merci C'est bien ça!
    Mais je me rends compte que les données sont inexploitables. Si par exemple je veux filtrer le contenu pour une date donnée , je ne peux pas avec cette affichage.
    Est il possible de mettre les noms de fichier sur la colonne A par exemple et les contenus respectifs sur la colonne B.
    Pour avoir ça en sortie:

    Nom : Capture.PNG
Affichages : 317
Taille : 5,8 Ko

    En vérifiant je me rends compte que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cible(0, 1) = NomFichier
    écrase certaines données contenu dans mes fichiers

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Je suis loin d'être spécialiste en import de texte mais donnes moi tout de même l'adresse de cible avec un dans le code, par exemple
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Voila mon 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Sub MacroImport()
    '
    ' Charge test1
    '
     
    Dim Fichier As String, Chemin As String
        Dim i As Long
     
        Application.ScreenUpdating = False
    Sheets("test1").Activate
     
     
    Chemin = "C:\Rep\test"
        Fichier = Dir(Chemin & "\test1_*.txt")
     
        'Boucle sur les fichiers
        Do While Fichier <> ""
     
     
           i = Range("A65536").End(xlUp).Row + 1
            ImportText Chemin & "\" & Fichier, Cells(i, 1)
     
            Fichier = Dir
             DoEvents
        Loop
        Application.ScreenUpdating = True
    End Sub
     
    Sub ImportText(NomFichier As String, Cible As Range)
        Dim WBS As Workbook
     
       Workbooks.OpenText Filename:=NomFichier, _
          StartRow:=1, _
            DataType:=xlDelimited, _
            Semicolon:=True, _
            FieldInfo:=Array(1, 1), _
            TrailingMinusNumbers:=True
            Set WBS = ActiveWorkbook
           Cible(0, 1) = NomFichier
     
        WBS.Worksheets(1).UsedRange.Copy Destination:=Cible
        WBS.Close
    End Sub
    Il m'affiche bien le contenu de tous les fichiers test1 sur la feuille "test1". Je veux juste implémenter le nom de fichier.
    Ca l'air simple mais je ne vois pas la méthode.

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    C'est bon j'ai trouvé.

    Pour ceux qui souhaiterait importer le contenu de plusieurs fichiers texte et le nom du fichier à côté.
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub MacroImporterFicTexte()
    '
    ' Charge Fichiers
    '
     
    Dim Fichier As String, Chemin As String
        Dim i As Long
     
        Application.ScreenUpdating = False
    Sheets("test1").Activate
    Chemin = "C:\..."
        Fichier = Dir(Chemin & "\test1_*.txt")
     
        'Boucle sur les fichiers
        Do While Fichier <> ""
     
     
           i = Range("A65536").End(xlUp).Row + 1
     
            ImportText Chemin & "\" & Fichier, Cells(i, 1)
     
            For j = i To Range("A65536").End(xlUp).Row + 1
                Cells(j, 2) = Fichier
            Next
     
            Fichier = Dir
             DoEvents
        Loop
        Application.ScreenUpdating = True
    End Sub
     
    Sub ImportText(NomFichier As String, Cible As Range)
        Dim WBS As Workbook
     
       Workbooks.OpenText Filename:=NomFichier, _
          StartRow:=1, _
            DataType:=xlDelimited, _
            Semicolon:=True, _
            FieldInfo:=Array(1, 1), _
            TrailingMinusNumbers:=True
            Set WBS = ActiveWorkbook
     
        WBS.Worksheets(1).UsedRange.Copy Destination:=Cible
        WBS.Close
    End Sub

  7. #7
    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
    Autrement

    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
    Sub MacroImporterFicTexte()
    Dim Fichier As String, Chemin As String
     
    Application.ScreenUpdating = False
    Chemin = "C:\..."
    Fichier = Dir(Chemin & "\test1_*.txt")
    With Worksheets("test1")
        Do While Fichier <> ""
            QueryImport Chemin & "\" & Fichier, .Cells(.Rows.Count, 2).End(xlUp)(2)
            Fichier = Dir
            DoEvents
        Loop
    End With
    End Sub
     
    Private Sub QueryImport(ByVal NomFichier As String, ByVal Cible As Range)
     
    With Cible.Parent
        With .QueryTables.Add(Connection:="TEXT;" & NomFichier, Destination:=Cible)
            .Refresh
            .Delete
        End With
        .Range(Cible, .Cells(.Rows.Count, Cible.Column).End(xlUp)).Offset(, -1) = Mid(NomFichier, InStrRev(NomFichier, "\") + 1)
    End With
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

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

Discussions similaires

  1. Import brut du contenu d'un fichier html
    Par nicoboud2 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 15/09/2008, 08h34
  2. problème d'importation/nom des fichiers
    Par <romain/> dans le forum Général Python
    Réponses: 2
    Dernier message: 15/07/2008, 15h25
  3. importation de lignes contenues dans un fichier plat
    Par stever50 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/01/2008, 15h36
  4. Réponses: 3
    Dernier message: 20/09/2006, 11h05
  5. Lecture nom et contenu dans fichier
    Par Tempotpo dans le forum Langage
    Réponses: 2
    Dernier message: 19/05/2006, 14h11

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