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