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&Mise en forme Fichier texte vers excel [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut Import&Mise en forme Fichier texte vers excel
    J’ai besoin de votre aide s’il vous plait. J’ai un fichier texte comportant plus de 57000 lignes à importer dans un ou plusieurs classeurs Excel. Jusque la pas de problème, le sujet a été largement traité. Mon problème c’est que je n’arrive pas à la mettre en forme dans Excel… Chaque donnée de mon fichier texte est séparées par une tabulation et chaque ligne sont différencié par un retour chariot. Je voudrais mettre chaque donnée dans une colonne distincte et chaque ligne dans une ligne distincte. Mais j’ai beau essayer je n’y arrive pas car je débute.
    Voila le code que j’ai adapté :

    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
    Sub ImportLargeFile()
    Dim strFilePath As String, strFilename As String, vFullPath As Variant
    Dim lngCounter As Long
    Dim oConn As Object, oRS As Object, oFSObj As Object
     
    vFullPath = "C:\Log.txt"
    If vFullPath = False Then Exit Sub
    Application.ScreenUpdating = False
    Set oFSObj = CreateObject("Scripting.FileSystemObject")
    strFilePath = oFSObj.GetFile(vFullPath).ParentFolder.Path
    strFilename = oFSObj.GetFile(vFullPath).Name
     
    Set oConn = CreateObject("ADODB.CONNECTION")
    oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & strFilePath & ";" & _
    "Extended Properties=""text;HDR=Yes;FMT=Delimited"""
     
    Set oRS = CreateObject("AdoDb.Recordset")
     
    oRS.Open "SELECT * FROM " & strFilename, oConn, 1, 1, 1
    While Not oRS.EOF
    Sheets.Add
    ActiveSheet.Range("A1").CopyFromRecordset oRS, 65536
    Wend
    oRS.Close
    oConn.Close
    Application.ScreenUpdating = True
    End Sub
    Merci de m’aider ou de m’orienter svp.

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,

    Voici un code que j'utilise adapté pour ton cas, j'ai mis les commentaires dans le code, j'espère que ça t'inspirera...

    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
    Sub ImportTxtNew()
    Dim ligne As String, strFullName, i As Long, NbWs As Long
     
        Worksheets.Add 'Ajoute une feuille
        strFullName = Application.GetOpenFilename("Fichiers textes (*.txt),*.txt", , _
        "Sélectionnez un fichier :") 'Boite de dialogue qui permet de sélectionner le fichier Text à importer
     
        Open strFullName For Input As #1 'L'ouvre en tant que 'source' pour le traitement
     
        Do While Not EOF(1) 'Tant que non vide
                Do While (Not EOF(1)) And (i < 65500) 'A faire jusqu'à la ligne 65500
                    i = i + 1 'Incrémentation du compteur
                    Input #1, ligne 'Récupère la ligne du fichier Text
                    Cells(i, 1).Value = ligne 'Place la ligne du fichier text dans la 1ère colonne
                Loop 
            If i < 65500 Or EOF(1) Then Exit Do 'Après le traintement des 65500 ligne ajout d'une autre feuille pour la suite
                i = 0 'Remet le compteur à zéro
                Worksheets.Add 'ajoute une feuille, qui devient la feuille "active"
        Loop
        Close #1 'Ferme l'instance Text
     
    'Renomme les feuilles avec les données
    NbWs = Worksheets.Count
    For i = 1 To NbWs - 1
        If Sheets(i).Name = "Parametres" Then Resume Next 'J'ai une feuille nommé Parametres, la seule feuille existante à l'ouverture, evite donc le text to column sur cette feuille
        Sheets(i).Columns("A").TextToColumns DataType:=xlDelimited, _
        Tab:=True 'Transfert Text to column avec Tab comme délimiteur
        Sheets(i).Name = "Data " & i 'Renomme la feuille Data 1; Data 2;...
    Next i
     
        Sheets("Parametres").Select
        MsgBox "Import terminé en " & Diff & ", procédez à la Mise en forme"
    End Sub
    A+

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    OK merci Fvandermeulen
    Ca m'a l'air pas mal je vais regarder ca de plus pret.

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

Discussions similaires

  1. importation d'un fichier texte vers excel
    Par jnthnroy dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/01/2012, 17h31
  2. [XL-2003] mise en forme fichier texte particulier
    Par munity dans le forum Excel
    Réponses: 4
    Dernier message: 08/12/2011, 13h54
  3. Réponses: 3
    Dernier message: 24/05/2008, 18h56
  4. Réponses: 2
    Dernier message: 04/06/2007, 15h39
  5. importation d'un fichier texte vers excel
    Par darkpocket dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/01/2005, 11h47

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