Macro exc el pour convertir données d'un .txt
UsulArrakis
Messages postés
7683
Statut
Contributeur
-
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
--
(_Usul d'Arrakis
Serial_Dreamer_)
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
--
(_Usul d'Arrakis
Serial_Dreamer_)
Configuration: Win XP pro
4 réponses
-
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... -
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 -
Bonjour tout le monde,
met Dim idx As long au lieu de Dim idx As Integer -
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