Importer fichier Texte fragmenté

Le
Pistache71
Bonjour

Je souhaite importer un fichier txt un peu spécial, je m' explique:

Fichier texte composé comme ceci

1° ligne: Numéro commande;nom; adresse;ville; (divers info sur le
client)

2° ligne plusieurs champs pour la commande 1( séparateur ";")

3° ligne plusieurs champs pour la commande 2( séparateur ";")

4° ligne le séparateur de commande qui est "***"

il y a soit 4 lignes 1/2/3/4 ou 3 Lignes 1/2/4

ma table doit avoir:

Ligne 1+ ligne 2

Ligne 1+ ligne 3

si quelques-uns a une idée pour l importation cela m'aiderait
grandement

merci et bonne journée
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien
Le #17890021
Pistache71 a écrit :
Bonjour

Je souhaite importer un fichier txt un peu spécial, je m' explique:

Fichier texte composé comme ceci

1° ligne: Numéro commande;nom; adresse;ville; (divers info sur le
client)

2° ligne plusieurs champs pour la commande 1( séparateur ";")

3° ligne plusieurs champs pour la commande 2( séparateur ";")

4° ligne le séparateur de commande qui est "***"

il y a soit 4 lignes 1/2/3/4 ou 3 Lignes 1/2/4

ma table doit avoir:

Ligne 1+ ligne 2

Ligne 1+ ligne 3

si quelques-uns a une idée pour l importation cela m'aiderait
grandement

merci et bonne journée



Bonjour,
Avec une exploration sequentielle de ton fichier texte et une boucle sur
chaque groupe tu devrais t'en sortir

Sub Conversion()
Dim Ligne_Admin as variant 'Pour stocker les données administratives
Dim Ligne_Com as Variant ' pour stocker les ligne commande
Dim Ligne_Txt as string 'Pour lire une ligne du fichier texte
Dim Num_Fichier as Integer 'Numéro logique du fichier texte
Dim I as Integer 'Compteur pour les élément de chaque tableaux
Dim Str_Sql as String 'Chaine Sql pour ajouter les éléments dans la table
Num_Fichier = FreeFile
Open "Lefichiertxt" for input as #Num_Fichier
Do while Not Eof(Num_fichier)
Line Input #Num_Fichier,Ligne_Txt
if Instr(1,Ligne_txt,";") then 'Une ligne qui contient des ; ?
If Num_ligne = 0 then 'Ligne admin ?
Ligne_Adm=Split(Ligne_Txt,";")
Num_Ligne=1
else 'ou ligne Commande ?
Ligne_Com=Split(Ligne_Txt,";")
Num_Ligne=2
End if
Else 'si ligne avec *
Num_ligne=0
end if
if Num_ligne=2 then
For i=0 to Ubound(Ligne_Adm)-1
Creation de la 1er partie de la chaine Sql pour ajouter les champs
Administratif dans la table
next I
For I=0 to Ubound(Ligne_Com)-1
Suite de la chaine avec les éléments commandes
Next I
Currentdb.execute Str_Sql 'Ajout des éléments dans la table

Loop
Close #Num_Fichier
end sub

A tester
@+
Fabien
Le #17890311
Fabien a écrit :
Pistache71 a écrit :
Bonjour

Je souhaite importer un fichier txt un peu spécial, je m' explique:

Fichier texte composé comme ceci

1° ligne: Numéro commande;nom; adresse;ville; (divers info sur le
client)

2° ligne plusieurs champs pour la commande 1( séparateur ";")

3° ligne plusieurs champs pour la commande 2( séparateur ";")

4° ligne le séparateur de commande qui est "***"

il y a soit 4 lignes 1/2/3/4 ou 3 Lignes 1/2/4

ma table doit avoir:

Ligne 1+ ligne 2

Ligne 1+ ligne 3

si quelques-uns a une idée pour l importation cela m'aiderait
grandement

merci et bonne journée



Bonjour,
Avec une exploration sequentielle de ton fichier texte et une boucle sur
chaque groupe tu devrais t'en sortir

Sub Conversion()
Dim Ligne_Admin as variant 'Pour stocker les données administratives
Dim Ligne_Com as Variant ' pour stocker les ligne commande
Dim Ligne_Txt as string 'Pour lire une ligne du fichier texte
Dim Num_Fichier as Integer 'Numéro logique du fichier texte
Dim I as Integer 'Compteur pour les élément de chaque tableaux
Dim Str_Sql as String 'Chaine Sql pour ajouter les éléments dans
la table
Num_Fichier = FreeFile
Open "Lefichiertxt" for input as #Num_Fichier
Do while Not Eof(Num_fichier)
Line Input #Num_Fichier,Ligne_Txt
if Instr(1,Ligne_txt,";") then 'Une ligne qui contient des ; ?
If Num_ligne = 0 then 'Ligne admin ?
Ligne_Adm=Split(Ligne_Txt,";")
Num_Ligne=1
else 'ou ligne Commande ?
Ligne_Com=Split(Ligne_Txt,";")
Num_Ligne=2
End if
Else 'si ligne avec *
Num_ligne=0
end if
if Num_ligne=2 then
For i=0 to Ubound(Ligne_Adm)-1
Creation de la 1er partie de la chaine Sql pour ajouter
les champs Administratif dans la table
next I
For I=0 to Ubound(Ligne_Com)-1
Suite de la chaine avec les éléments commandes
Next I
Currentdb.execute Str_Sql 'Ajout des éléments dans la table

Loop
Close #Num_Fichier
end sub

A tester
@+


Y a une erreur !

Sub Conversion()
> Dim Ligne_Admin as variant 'Pour stocker les données administratives
> Dim Ligne_Com as Variant ' pour stocker les ligne commande
> Dim Ligne_Txt as string 'Pour lire une ligne du fichier texte
> Dim Num_Fichier as Integer 'Numéro logique du fichier texte
> Dim I as Integer 'Compteur pour les élément de chaque tableaux
> Dim Str_Sql as String 'Chaine Sql pour ajouter les éléments dans
> la table
> Num_Fichier = FreeFile
> Open "Lefichiertxt" for input as #Num_Fichier
Line Input #Num_Fichier,Ligne_Txt
> Do while Not Eof(Num_fichier)
>
> if Instr(1,Ligne_txt,";") then 'Une ligne qui contient des ; ?
> If Num_ligne = 0 then 'Ligne admin ?
> Ligne_Adm=Split(Ligne_Txt,";")
> Num_Ligne=1
> else 'ou ligne Commande ?
> Ligne_Com=Split(Ligne_Txt,";")
> Num_Ligne=2
> End if
> Else 'si ligne avec *
> Num_ligne=0
> end if
> if Num_ligne=2 then
> For i=0 to Ubound(Ligne_Adm)-1
> Creation de la 1er partie de la chaine Sql pour ajouter
> les champs Administratif dans la table
> next I
> For I=0 to Ubound(Ligne_Com)-1
> Suite de la chaine avec les éléments commandes
> Next I
> Currentdb.execute Str_Sql 'Ajout des éléments dans la table
>
End if
Line Input #Num_Fichier,Ligne_Txt
> Loop
> Close #Num_Fichier
> end sub
Publicité
Poster une réponse
Anonyme