Macro exc el pour convertir données d'un .txt

UsulArrakis Messages postés 7683 Statut Contributeur -  
UsulArrakis Messages postés 7683 Statut Contributeur -
Bonjour à tous

je dispose d'office 2007

un petit pb pour les macroteurs :

je récupère un fichier .txt qui est une suite de données séparées par des ;

ces données correspondent à une personne tout les 15 ;

mais il n'y a pas de retour à la ligne pour marquer le changement de personne

donc excel importe tout dans les les 20 premières lignes de la colonne A et ensuite pour convertir les données en indiquant le ; comme séparateur ça ne permet pas d'avoir une ligne par personne

si qq'un a une idée ça me dépannerait grandement

merci
A voir également:

4 réponses

gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 731
 
bonjour UsulArrakis,

Comme personne ne se bouscule pour te dépanner, une petite macro qui ouvre le fichier texte choisi et le ventile sur 15 colonnes à partir de la ligne 3 (à modifier) de la feuille active.

Public Sub txt_15col()
Dim lig As Long     ' ligne
Dim col As Integer  ' colonne
Dim art As String   ' article lu
Dim cel As String   ' valeur cellule
Dim fic As String   ' chemin fichier
Dim idx As Integer  ' index caractère
fic = Application.GetOpenFilename("Textes,*.txt")
Open fic For Input As #1    ' ouvre fichier texte
lig = 3                     ' ligne début
Do
    Input #1, art           ' lecture
    idx = 0                 ' initiatisation index
    While idx < Len(art)    ' boucle mongueur article
        For col = 1 To 15   ' 15 colonnes
            cel = ""        ' initiatisation cellule
            Do
                idx = idx + 1
                If Mid(art, idx, 1) = ";" Then Exit Do
                cel = cel & Mid(art, idx, 1)
            Loop While idx < Len(art)
            Cells(lig, col).Value = cel ' valorisation cellule
        Next col
        lig = lig + 1       ' changement de ligne
    Wend
Loop While Not EOF(1)
Close #1
End Sub


En espérant avoir compris le problème...
0
UsulArrakis Messages postés 7683 Statut Contributeur 3 194
 
hello gb
merci pour cette macro

je viens de la tester. tu avais bien compris mon pb.

mais car il y a un mais ;-) elle s'arrête à la 217ème ligne avec un message d'erreur : "dépassement de capacité" et en débogage la ligne idx = idx + 1 est en surbrillance
est-ce qu'il n'y aurait pas une limite à #32 000 caractères ?

pour être complet c'est 37 et non pas 15, mais là j'ai modifié la macro et c'est tout bon
par contre je dois obtenir environ 4500 lignes à partir du txt soit # 700 000 caractères

si tu as une idée

encore merci
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour tout le monde,

met Dim idx As long au lieu de Dim idx As Integer
0
UsulArrakis Messages postés 7683 Statut Contributeur 3 194
 
YESSSSSSSSSSSSSSSSS !

nickel eriiic

un grand merci à vous 2

donc voici la macro qui fonctionne parfaitement dans mon cas :

Public Sub txt_37col()
Dim lig As Long     ' ligne
Dim col As Integer  ' colonne
Dim art As String   ' article lu
Dim cel As String   ' valeur cellule
Dim fic As String   ' chemin fichier
Dim idx As Long     ' index caractère
fic = Application.GetOpenFilename("Textes,*.txt")
Open fic For Input As #1    ' ouvre fichier texte
lig = 3                     ' ligne début
Do
    Input #1, art           ' lecture
    idx = 0                 ' initiatisation index
    While idx < Len(art)    ' boucle mongueur article
        For col = 1 To 37   ' 37 colonnes
            cel = ""        ' initiatisation cellule
            Do
                idx = idx + 1
                If Mid(art, idx, 1) = ";" Then Exit Do
                cel = cel & Mid(art, idx, 1)
            Loop While idx < Len(art)
            Cells(lig, col).Value = cel ' valorisation cellule
        Next col
        lig = lig + 1       ' changement de ligne
    Wend
Loop While Not EOF(1)
Close #1
End Sub

0