Probleme importation donnees txt

  • Initiateur de la discussion Initiateur de la discussion vvillss
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

V

vvillss

Guest
Je cherche a importer une ligne d'une ficher txt et de pouvoir revenir a la ligne après les symbole / et _

Exemple de txt

dC09_2.780/2.780/2.900/K01_20.019/19.950/20.150/J04_0.253/0.250/0.500/J07_1.332/1.200/1.400/09/09/11/06:31:51dC09_2.780/2.780/2.900/K01_20.019/19.950/20.150/J04_0.250/0.250/0.500/J07_1.337/1.200/1.400/09/09/11/06:32:02dC09_2.780/2.780/2.900/K01_20.019/19.950/20.150/J04_0.246/0.250/0.500/J07_1.341/1.200/1.400/09/09/11/06:32:12dC09_2.780/2.780/2.900/K01_20.020/19.950/20.150/J04_0.249/0.250/0.500/J07_1.338/1.200/1.400/09/09/11/06:32:22dC09_2.780/2.780/2.900/K01_20.020/19.950/20.150/J04_0.248/0.250/0.500/J07_1.338/1.200/1.400/09/09/11/06:32:31dC09_2.780/2.780/2.900/K01_20.019/19.950/20.150/J04_0.248/0.250/0.500/J07_1.338/1.200/1.400/09/09/11/06:32:42

et j'aimerais obtenir un feuille excel du genre



J'ai réussi a trouver la solution pour importer les données mais pas pour aller a la ligne suivant soit un nombre de caractère défini ou un caractère défini.

J’espère vraiment que vous pourrez m'aider .
Merci
 
Re : Probleme importation donnees txt

Bonjour,
Faut dire que tu n'es pas aidé: avoir l'idée d'utiliser le slash comme séparateur dans une chaîne qui contient une date...vive le progrès !
Donc, il semble que chaque ligne débute par "d", oui-non ?
Il semble également que chaque ligne contient toujours le même nb de séparateurs, je veux dire que si une valeur n'était pas renseignée, ce qui n'est pas le cas dans ton fichier exemple, on obtiendrait par exemple xx//yy , oui-non ?
Si tu réponds oui au 2 questions alors normalement ceci devrait fonctionner (attention il faut indiquer le path complet du fichier txt s'il n'est pas dans le répertoire courant
Code:
Sub Test()
Dim fs, f, ft, texte$, Ta, Tb, i&, j&
x = Range("A65000").End(xlUp).Row + 1
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(ActiveWorkbook.Path & "\pg 20.txt") 'à adapter
Set ft = f.OpenAsTextStream(1, 0)
texte = ft.ReadLine
If Len(texte) > 0 Then
    texte = Replace(texte, "_", "/")
    Ta = Split(texte, "d")
    For i = 1 To UBound(Ta)
        Tb = Split(Ta(i), "/")
        For j = 0 To 15
            Cells(x, j + 1) = Tb(j)
        Next
        Cells(x, 17) = DateSerial(Tb(18), Tb(17), Tb(16))
        Cells(x, 18) = Tb(19)
        x = x + 1
    Next
End If
ft.Close
Set f = Nothing
Set fs = Nothing
End Sub
A+
kjin
 

Pièces jointes

Re : Probleme importation donnees txt

Re bonjour Kjin


Pour répondre au question la première étant la présence du "/" malheureusement je n'ai pas le choix.
Effectivement chaque ligne commence par la lettre "d" j'ai d’ailleurs le choix pour se caractère ci
la seul nuance qu'il pourrais y avoir se soint plus de valeur entre "d" et l'heure . mais toujours même syntaxe du genre /v8 + trois valeur toujours entre le "d" et l'heure

Je viens de teste et c'est parfais pour le fichier exemple
j'ai une erreur si il y a une valeur supplémentairement (incompatibilité de type)

exemple : dC09_2.780/2.780/2.900/K01_20.019/19.950/20.150/K08_20.019/19.950/20.150/J04_0.253/0.250/0.500/J07_1.332/1.200/1.400/09/09/11/06:31:51
en rouge la valeur ajouter.par contre jeu peu rajouter un symbole de fin si ça peu aider pour le changement de ligne .

En tous les cas merci pour ton aide
 
Dernière modification par un modérateur:
Re : Probleme importation donnees txt

Bonsoir,
par contre jeu peu rajouter un symbole de fin si ça peu aider pour le changement de ligne
Nouvelle mouture si les 4 dernières données correspondent toujours à la date et à l'heure
Code:
Sub Test()
Dim fs, f, ft, texte$, Ta, Tb, i&, j&
x = 1
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(ActiveWorkbook.Path & "\pg 20.txt") 'à adapter
Set ft = f.OpenAsTextStream(1, 0)
texte = ft.ReadLine
If Len(texte) > 0 Then
    texte = Replace(texte, "_", "/")
    Ta = Split(texte, "d")
    For i = 1 To UBound(Ta)
        Tb = Split(Ta(i), "/")
        For j = 0 To UBound(Tb) - 4
            Cells(x, j + 1) = Tb(j)
        Next
        Cells(x, j) = DateSerial(Tb(j), Tb(j + 1), Tb(j + 2))
        Cells(x, j + 1) = Tb(UBound(Tb))
        x = x + 1
    Next
End If
ft.Close
Set f = Nothing
Set fs = Nothing
End Sub
A+
kjin
 

Pièces jointes

Re : Probleme importation donnees txt

Bonjour kjin,
il y a deux problème sur le fichier auxquelles je n'avais pas fais attention.
le 1er il manque la dernière valeur avant la date.
le 2 eme la date indique 2013 (peu être un problème liée )
et pour finir est t'il possible d'avoir le choix du fichier texte a ouvrir ?
Voici deux fichier exemple

Merci pour ton aide
 

Pièces jointes

Re : Probleme importation donnees txt

le 1er il manque la dernière valeur avant la date.
Oui, ça c'est une erreur d'incrémentation de ma part
le 2 eme la date indique 2013 (peu être un problème liée )
Non, juste une mauvaise interprétation
Rectification
Code:
Sub Test()
Dim fs, f, ft, texte$, Ta, Tb, i&, j&
x = 1
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(ActiveWorkbook.Path & "\pg 20.txt") 'à adapter
Set ft = f.OpenAsTextStream(1, 0)
texte = ft.ReadLine
If Len(texte) > 0 Then
    texte = Replace(texte, "_", "/")
    Ta = Split(texte, "d")
    For i = 1 To UBound(Ta)
        Tb = Split(Ta(i), "/")
        For j = 0 To UBound(Tb) - 4
            Cells(x, j + 1) = Tb(j)
        Next
        Cells(x, j + 1) = DateSerial(Tb(j + 2), Tb(j + 1), Tb(j))
        Cells(x, j + 2) = Tb(UBound(Tb))
        x = x + 1
    Next
End If
ft.Close
Set f = Nothing
Set fs = Nothing
End Sub
A+
kjin
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour