Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Importer fichier Texte fragmenté

2 réponses
Avatar
Pistache71
Bonjour

Je souhaite importer un fichier txt un peu sp=E9cial, je m' explique:

Fichier texte compos=E9 comme ceci

1=B0 ligne: Num=E9ro commande;nom; adresse;ville; (divers info sur le
client)

2=B0 ligne plusieurs champs pour la commande 1( s=E9parateur ";")

3=B0 ligne plusieurs champs pour la commande 2( s=E9parateur ";")

4=B0 ligne le s=E9parateur 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=E9e pour l importation cela m'aiderait
grandement

merci et bonne journ=E9e

2 réponses

Avatar
Fabien
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
@+
Avatar
Fabien
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