Aquerir dans Excel des données venant de fichiers txt - VB/VBA/VBS - Programmation
Marsh Posté le 15-05-2009 à 15:01:38
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
Marsh Posté le 15-05-2009 à 19:42:12
Une autre approche plus simple permettant la sélection d'un ou plusieurs fichiers texte  
|   | 
Marsh Posté le 17-05-2009 à 16:31:42
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 !
Marsh Posté le 17-05-2009 à 19:16:44
Salut, un fichier qui devrait correspondre à ton contexte, à toi de l'adapter si nécessaire http://cjoint.com/?frtoGjJL2w
Marsh Posté le 17-05-2009 à 20:10:02
Merci beaucoup !! 
 
Comme je t'ai dis, je ne peux pas tester chez moi, j'essai demain au boulot !!
Marsh Posté le 21-05-2009 à 19:44:46
Ç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 !! 
Marsh Posté le 29-05-2009 à 22:42:01
Bon, j'ai trouvé, c'était bidon en fait (pour rajouter le nom) 
 
| Code : 
 | 
 
 
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... 
Marsh Posté le 15-05-2009 à 12:32:46
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...