Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
970 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Aquerir dans Excel des données venant de fichiers txt

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aquerir dans Excel des données venant de fichiers txt

n°1884931
superniko1
Posté le 15-05-2009 à 12:32:46  profilanswer
 

Bonjour à tous !!
 
Je n'ai jamais fait de macro, donc ça va être dur...
 
J'ai pour mon boulot, besoin d'acquérir dans un feuille de calcul, le contenu de deux fichiers txt.
 
Mes fichiers se nomment FFFHXXXX VOIE A.txt et FFFHXXXX VOIE B.txt où XXXX est un nombre qui variera.
 
Ce que je voudrais, c'est un boutton pour acquérir les données de chaques fichiers, pour pouvoir le faire simplement.
 
C'est une opération que je dois faire au boulot 500 fois par an à peu près, donc j'ai besoin que ce soit rapide.
 
Un fois les données dans Excel, je dois les comparer avec une référence, mais ça, je sais faire...
 
Si vous avez des idées... ;)
 
 

mood
Publicité
Posté le 15-05-2009 à 12:32:46  profilanswer
 

n°1884988
kiki29
Posté le 15-05-2009 à 15:01:38  profilanswer
 

Salut, voir sur http://cjoint.com/?fpqA4Y8BHF et adapter , en particulier pour le type de séparateur.
Sinon c'est décomposé pour des raisons didactiques en 2 étapes, un bouton pour sélectionner le dossier à traiter, puis un de lecture des fichiers texte contenus dans ce dossier ( lecture récursive par défaut )
 
Il aurait fallu au minimum un fichier texte en exemple


Message édité par kiki29 le 15-05-2009 à 16:28:17
n°1885074
kiki29
Posté le 15-05-2009 à 19:42:12  profilanswer
 

Une autre approche plus simple permettant la sélection d'un ou plusieurs fichiers texte  


Option Explicit
 
Dim r As Long, Cpt As Long
 
Function Lire(ByVal NomFichier As String)
Dim Chaine As String
Dim Ar() As String
Dim i As Long
Dim iCol As Long
Dim NumFichier As Integer
Dim Separateur As String * 1
 
    Separateur = ","
 
    Close
    NumFichier = FreeFile
 
    Open NomFichier For Input As #NumFichier
        Cpt = Cpt + 1
        Do While Not EOF(NumFichier)
            iCol = 1
            Line Input #NumFichier, Chaine
            Ar = Split(Chaine, Separateur)
            For i = LBound(Ar) To UBound(Ar)
                ShFichiers.Cells(r, iCol) = Ar(i)
                iCol = iCol + 1
            Next
            r = r + 1
        Loop
        Application.StatusBar = " Fichiers : " & Cpt
    Close #NumFichier
End Function
 
Sub OuvertureFichiersMultiples()
Dim fichier As Variant, i As Integer
    ChDir ThisWorkbook.Path
    fichier = Application.GetOpenFilename("Fichiers Texte,*.txt", 1, "Sélectionner un ou plusieurs fichiers Texte", , True)
    If TypeName(fichier) = "Boolean" Then Exit Sub
     
    r = 2: Cpt = 0
    ShFichiers.Cells.Clear
     
    Application.ScreenUpdating = False
    For i = 1 To UBound(fichier)
        Lire fichier(i)
    Next i
    ShFichiers.Range("D1" ).Select
    Application.ScreenUpdating = True
End Sub


Message édité par kiki29 le 17-05-2009 à 11:40:57
n°1885402
superniko1
Posté le 17-05-2009 à 16:31:42  profilanswer
 

ok,
 
C'est un peu compliqué parceque je n'ai pas internet au boulot et pas excel chez moi ;)
 
Je vais essayer ce que tu me propose là, même si à vu de nez comme ça, je n'y comprends pas grand chose... ;)
 
Les fichiers txt que je veux inserer sont celui-ci et celui-là, ce sont des captures de liaisons série hyperterminal.
 
le premier doit être inséré à partir de la case A5 et le deuxième à partir de la case B5 dans la feuille Checksum de ce fichier Excel.
 
Ce que je voudrais, c'est un bouton "Voie A" pour importer le fichier FFFHXXX voie A.TXT dans la case A5 et un bouton "Voie B" pour importer le fichier FFFHXXX voie B.TXT dans la case B5.
Une précision importante, une fois les fichier txt vérifiés, je les déplace dans un autre dossier. Il n'y a donc jamais dans le dossier initial 2 fichiers contenant "voie A" ou "voie B".  
 
J'essaie ce que tu me propose lundi matin au bouot ;)
Merci !

n°1885425
kiki29
Posté le 17-05-2009 à 19:16:44  profilanswer
 

Salut, un fichier qui devrait correspondre à ton contexte, à toi de l'adapter si nécessaire http://cjoint.com/?frtoGjJL2w

n°1885442
superniko1
Posté le 17-05-2009 à 20:10:02  profilanswer
 

Merci beaucoup !!
 
Comme je t'ai dis, je ne peux pas tester chez moi, j'essai demain au boulot !!

n°1886876
superniko1
Posté le 21-05-2009 à 19:44:46  profilanswer
 

Ça fonctionne nikel !! :)
Merci !!
 
J'ai ais comme ça donc :
 
Option Explicit
 
Dim r As Long, Cpt As Long
 
Function Lire(ByVal NomFichier As String)
Dim Chaine As String
Dim Ar() As String
Dim i As Long
Dim iCol As Long
Dim NumFichier As Integer
Dim Separateur As String * 1
 
    Separateur = ","
 
    Close
    NumFichier = FreeFile
 
    Open NomFichier For Input As #NumFichier
        Cpt = Cpt + 1
        Do While Not EOF(NumFichier)
            iCol = 1
            Line Input #NumFichier, Chaine
            Ar = Split(Chaine, Separateur)
            For i = LBound(Ar) To UBound(Ar)
                ShFichiers.Cells(r, iCol) = Ar(i)
                iCol = iCol + 1
            Next
            r = r + 1
        Loop
        Application.StatusBar = " Fichiers : " & Cpt
    Close #NumFichier
End Function
 
Sub OuvertureFichiersVoieA()
Dim fichier As Variant, i As Integer
    ChDir ThisWorkbook.Path
    fichier = Application.GetOpenFilename("Fichiers Texte,*.txt", 1, "Sélectionnez le fichier voie A", , True)
    If TypeName(fichier) = "Boolean" Then Exit Sub
     
    r = 3: Cpt = 2
     
    Application.ScreenUpdating = False
    For i = 1 To UBound(fichier)
        Lire fichier(i)
    Next i
    ShFichiers.Range("D1" ).Select
    Application.ScreenUpdating = True
End Sub
 
 
Le fichier excel :
 
Ce que j'aimerais maintenant, c'est afficher dans une celulle le nom du fichier ouvert par la macro.
Ça me permettrais de vérifier qu'on ouvre le bon fichier, il faut qu'on ouvre par exemple FFFH1234 VOIE A.txt et FFFH1234 VOIE B.txt, et qu'on ne fasse pas 2 fois la même voie...
 
Ça avance bien !!

n°1889703
superniko1
Posté le 29-05-2009 à 22:42:01  profilanswer
 

Bon, j'ai trouvé, c'était bidon en fait (pour rajouter le nom)
 

Code :
  1. Option Explicit
  2. Dim r As Long, Cpt As Long
  3. Function Lire(ByVal NomFichier As String)
  4. Dim Chaine As String
  5. Dim Ar() As String
  6. Dim i As Long
  7. Dim iCol As Long
  8. Dim NumFichier As Integer
  9. Dim Separateur As String * 1
  10.     Separateur = ","
  11.     Close
  12.     NumFichier = FreeFile
  13.     Open NomFichier For Input As #NumFichier
  14.         Cpt = Cpt + 1
  15.         Do While Not EOF(NumFichier)
  16.             iCol = 1
  17.             Line Input #NumFichier, Chaine
  18.             Ar = Split(Chaine, Separateur)
  19.             For i = LBound(Ar) To UBound(Ar)
  20.                 ShFichiers.Cells(r, iCol) = Ar(i)
  21.                 iCol = iCol + 1
  22.             Next
  23.             r = r + 1
  24.         Loop
  25.         Application.StatusBar = " Fichiers : " & Cpt
  26.     Close #NumFichier
  27. End Function
  28. Sub OuvertureFichiersVoieA()
  29. Dim fichier As Variant, i As Integer
  30.     ChDir ThisWorkbook.Path
  31.     fichier = Application.GetOpenFilename("Fichiers Texte,*.txt", 1, "Sélectionnez le fichier voie A", , True)
  32.     If TypeName(fichier) = "Boolean" Then Exit Sub
  33.    
  34.     r = 3: Cpt = 2
  35.    
  36.     Application.ScreenUpdating = False
  37.     For i = 1 To UBound(fichier)
  38.         Lire fichier(i)
  39.     Next i
  40.     ShFichiers.Cells(40, 1) = fichier
  41.     ShFichiers.Range("D1" ).Select
  42.     Application.ScreenUpdating = True
  43. End Sub


 
Merci encore...
Aprè, je m'attaque à la lisaison série en VBA... Mais c'est pas pour tout de suite, et ce sera un autre topic... ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Aquerir dans Excel des données venant de fichiers txt

 

Sujets relatifs
Jasper Reporting ExcelCopier / Coller ligne entre fichiers excel
[VBAExcel Résolu] Copier coller de excel dans wordComparaison de deux colonnes dans 2 classeurs Excel
Copier coller une ligne excel sur autre feuille avec conditionsInclure automatiquement des données dans un pdf
[C] Probléme de récupération des données à travers ttyS (LINUX)des fichiers qui portent les nom des tables
Eviter un reload des données POST 
Plus de sujets relatifs à : Aquerir dans Excel des données venant de fichiers txt


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR