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 :

[VBA-E].txt vers .xls


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Par défaut [VBA-E].txt vers .xls
    Salut, j'aimerais savoir comment on peut faire pour récupérer le contenu d'une série de fichiers texte, tous ont la même structure, en une seule feuille excel... Est-ce jouable??? Si oui, comment???

    Je débute en vb, merci de vos conseils...

  2. #2
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Bonjour,

    Quelle est la structure de tes fichiers texte ?

  3. #3
    Membre éclairé Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Par défaut
    Le fichier contient les 2 ligne suivantes :

    |nom_utilisateur| uses *4401651* Octets (4,402 Mo.)
    Personal folder's name : |none| Personal folder's size : *0*

  4. #4
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Re,

    Et le résultat attendu dans Excel (contenu des colonnes) ?

  5. #5
    Membre éclairé Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Par défaut
    Sur une ligne,
    1ère cellule : nom_utilisateur
    2ème : le chiffre entre *
    3ème : la chaîne correspondant au personal folder's name
    4ème : la taille du personal folder....

    Est-ce faisable??? Si oui, comment???

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Par défaut
    Bonjour,
    Ce code ouvre 2 fichier texte dans une feuille du 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
    21
    22
     
    Sub ImporterFichier()
    Dim r, Data
    Range("A1").Select
    Open "C:\MonFichier.txt" For Input As #1
    r = 0
    Do Until EOF(1)
     Line Input #1, Data
    ActiveCell.Offset(r, 0) = Data
    r = r + 1
    Loop
    Close #1
    Range("D1").Select
    Open "C:\Mes documents\LeFichier.txt" For Input As #2
    r = 0
    Do Until EOF(2)
     Line Input #2, Data
    ActiveCell.Offset(r, 0) = Data
    r = r + 1
    Loop
    Close #2
    End Sub
    jpleroisse

  7. #7
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Re,

    Citation Envoyé par Empty_body
    Est-ce faisable??? Si oui, comment???
    C'est possible.
    Mais comment sont délimitées les valeurs dans les lignes de ton fichier texte ? Selon quel(s) critère(s) vas tu isoler le "personal folder's name" ?

  8. #8
    Membre éclairé Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Par défaut
    Les séparateurs sont pour l'instant les suivant : le nom de l'utilisateur est délimité par des | , sa taille par des *. Le nom du personal folder est délimité par des | , sa taille par des *. Mais si c'est plus facile d'utilisaer d'autres délimiteur, je peux regénérer les fichiers avec d'autres délimiteurs... Je débute et je suis pas vraiment au courant de tout...

  9. #9
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Re,

    Inspires toi du code de leroissejp pour parcourir ton fichier texte ligne à ligne.
    Pour chacune de ces lignes, tu recherches la position de tes délimiteurs (la fonction InStr() te servira à le faire).
    Quand tu as la position de tes délimiteurs, tu pourra extraire les valeurs (la fonction Mid() te servira à le faire.
    Enfin, pour générer ton fichier Excel, je donne un bout de 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
     
       chemin= "Recap.XLS"
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set Fic = fso.CreateTextFile(chemin, True)
       ' Titres des colonnes
       ' chr (34) remplace les guillements à la suite de l'instruction
       Fic.writeLine "ID;PWXL;N;E" ' Début du codage excel
       Fic.writeLine "C;Y1;X1;K" & CHR(34) & ("Nom") & CHR(34) 
       Fic.writeLine "C;Y1;X2;K" & CHR(34) & ("Chiffre") & CHR(34) 
       Fic.writeLine "C;Y1;X3;K" & CHR(34) & ("Folder") & CHR(34) 
       Fic.writeLine "C;Y1;X4;K" & CHR(34) & ("Taille") & CHR(34) 
       Ligne = 2
     
    Do Until EOF(2)
       Line Input #2, Data 
     
    ICI TU UTILISES LES FONCTIONS QUE JE T4AI DONNE AU DEBUT DE CE POST
     
    Str_Nom = Mid(Data, 1, 5)
    Str_Chiffre = Mid(Data, 7, 15)
    etc ...
     
          Fic.writeLine "C;Y" & Ligne & ";X1;K" & CHR(34) & (Str_Nom) & CHR(34) 
          Fic.writeLine "C;Y" & Ligne & ";X2;K" & (Str_Chiffre)
    etc ...
     
     
          Ligne = Ligne + 1
       loop
       Fic.writeLine "E" ' Fin du codage excel
       Fic.Close
       Set Fic = Nothing
       Set fso = Nothing

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 25
    Par défaut
    salut!!!
    je ne sais comment est obtenu ton fichier texte:
    - par saisie par l'utilisateur?
    - par enregistrement depuis ton code?
    - par ...
    sache que ce qui est important c'est que le logiciel à produire fasse ce qu'attend l'utilisateur. je te propose donc pour te faciliter le tache d'utiliser un fichier d'enregistrements. l'idée c'est qu'une ligne d'enregistrement correspond à une ligne de feuille excel, et un champ correspond à une cellule dans la ligne concernée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    type Trecord
    i as integer
    col1 as ...
    col2 as ...
    ..
    coln as ...
    end type
    l'autre idée c'est de structurer ton fichier texte en colonnes en utilisant les tabulations "vbtab".

  11. #11
    Membre éclairé Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Par défaut
    Merci à vous tous...

  12. #12
    Membre éclairé Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Par défaut
    Je modifierais volontier la structure des fichiers .txt mais il doivent rester "lisible" sans obligation de passer par un excel... Par contre, je peux rajouter une ligne supplémentaire au bas du fichier, en ligne 4 en reprennant tous les champs qui doivent être figurer dans excel, en les séparant tous par des ; par exemple. Si il est possible par après de ne lire que la 4ème ligne de chaque fichier...

  13. #13
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    tiens un peu de code à étudier ... , lecture du fichier selon la structure que tu décrit...
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    Type tEnr
      stUtil As String 'Nom utilisateur
      rUtil As Long 'Taille utilisateur
      stFolder As String 'Nom Personal folder
      rFolder As Long 'Taille Personal folder
    End Type
    '
    ' Renvoi dans stRet la chaine contenu entre dans st entre les séparateurs
    ' donnèes en paramétres
    '
    Function ExtraitChaine(st As String, stSep As String, stRet As String) As Boolean
    Dim iDeb As Integer
    Dim iFin As Integer
    iDeb = InStr(1, st, stSep)
     
    If iDeb = 0 Then
     Debug.Print "Erreur 1°caractéres " & stSep & " introuvable ds :" & st
     Exit Function
    End If
    iFin = InStr(1 + iDeb, st, stSep)
    If iFin = 0 Then
     Debug.Print "Erreur 2°caractéres " & stSep & " introuvable ds :" & st
     Exit Function
    End If
    stRet = Mid(st, iDeb + 1, iFin - 1 - iDeb)
     
     ExtraitChaine = True
    End Function
    '
    ' Lecture fichier .. et mise à jour données dans d..
    ' True si OK
    '
    Function bLectFich(stFichier As String, d As tEnr) As Boolean
      Dim f As Integer
      Dim stlg As String
      Dim st As String
      On Error GoTo ErrLect
      f = FreeFile
      Open stFichier For Input As #f
       Line Input #f, stlg 'Lecture 1°Ligne
       If Not ExtraitChaine(stlg, "|", d.stUtil) Then
         Debug.Print "Erreur extraction nom"
         GoTo ErrAnalyse
       End If
       If Not ExtraitChaine(stlg, "*", st) Then
         Debug.Print "Erreur extraction taille nom"
         GoTo ErrAnalyse
       End If
       d.rUtil = Val(st)
          Line Input #f, stlg 'Lecture 2°ligne
       If Not ExtraitChaine(stlg, "|", d.stFolder) Then
         Debug.Print "Erreur extraction nom"
         GoTo ErrAnalyse
       End If
       If Not ExtraitChaine(stlg, "*", st) Then
         Debug.Print "Erreur extraction taille nom"
         GoTo ErrAnalyse
       End If
       d.rFolder = Val(st)
     
     
     
     
      Close #f
     
      bLectFich = True
      Exit Function
    ErrLect:
      Debug.Print "Fichier " & stFichier & " Inacessible"
    Exit Function
    ErrAnalyse:
      Debug.Print "Erreur Analyse fichier"
      Close #f
    End Function
     
    Sub Test()
      Dim d As tEnr
     
      If bLectFich("c:\tmp\t.txt", d) Then
        MsgBox "Lecture Ok " & vbCrLf _
               & "Nom Util : " & d.stUtil & vbCrLf _
               & "Taille Util : " & d.rUtil & vbCrLf _
               & "Nom folder : " & d.stFolder & vbCrLf _
               & "taille folder : " & d.rFolder
     
     
      Else
        MsgBox ("Erreur...")
      End If
    End Sub

  14. #14
    Membre éclairé Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Par défaut
    C'est parfait, merci...

  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Par défaut
    Bonjour,
    Pour ne récupérer que la 4ème ligne du fichier.

    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
     
     Private Sub CommandButton1_Click()
    Dim nbrligne, ligne
    nbrligne = 0
    Open "C:\Mes documents\Text1.txt" For Input As #1
    Do While Not EOF(1)
       Line Input #1, ligne
          nbrligne = nbrligne + 1
          If nbrligne = 4 Then 'Récupère la 4ème ligne
                Range("A5") = ligne
          End If
    DoEvents
    Loop
    Close #1
    End Sub
    jpleroisse

Discussions similaires

  1. [XL-2007] Import .txt vers .xls par VB
    Par Loupire dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 28/01/2010, 09h46
  2. [XL-2007] Extraction date de .txt vers .xls
    Par Loupire dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/01/2010, 10h22
  3. Importer données txt vers xls
    Par kikim78 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/12/2009, 13h22
  4. extraction txt vers xls
    Par doudou1 dans le forum VBScript
    Réponses: 10
    Dernier message: 10/07/2006, 14h37

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