Créer un fichier texte avec des données issues de 2 fichiers txt [Résolu]

Signaler
Messages postés
13
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
3 mars 2005
-
Messages postés
13
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
3 mars 2005
-
Avec un fichier 'base.txt' dans le quel se trouve :
representant;adresse-rep;tph-rep;societe;departement

et un second fichier 'complement.txt' ayant comme champs :
societe;adresse-soc;departement;nom responsable

je souhaiterais avec ces deux fichiers, en créer un nouveau tel que:
representant;adresse-rep;tph-rep;societe;departement;nom responsable
après bien sur recherche et correspondance de l'un ou l'autre des critères
representant ou societe ou ...

quelqu'un peut t'il me donner un petit coup de main
cordialement

2 réponses

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
14
Salut, j'ai déjà posté cette réponse à ta question en privé et je la recopie ici, ça pourra peut-être servir à d'autres :

Il y a au moins 2 façons de voir la chose, ton fichier complement.txt n'est pas trop grand ou il est énorme.
Je te propose une solution pour un fichier pas trop grand. S'il est énorme (plusieurs Mo) il faudra voir autre chose.
Bien entendu, tu peux l'adapter.
J'ai mis des commentaires, peut-être un peu trop.

J'ai testé avec un form contenant un commandbutton (command1) et ça a l'air de fonctionner.

Si tu as des questions .......

'si tu déclares ce type dans un module
'Public Type enreg_complement
' champ() As String
'End Type
'si tu le déclares dans le form contenant le commandbutton
Private Type enreg_complement
champ() As String
End Type

Private Sub Command1_Click()
Dim nf1 As Integer, nf2 As Integer, nf3 As Integer
Dim societe As String, departement As String
Dim i As Integer, j As Integer
Dim t_complement() As enreg_complement
Dim tampon As String
Dim trouve As Boolean
Dim arret As Boolean
Dim rep As Long
Dim msg As String
Dim fichier_base As String
Dim fichier_complement As String
Dim fichier_destination As String

fichier_base = "C:\Temp\test\base.txt"
fichier_complement = "C:\Temp\test\complement.txt"
fichier_destination = "C:\Temp\test\base_plus_complement.txt"

nf1 = FreeFile 'récup d'un numéro de fichier libre

' ouverture du fichier complement.txt
Open fichier_complement For Input As #nf1

i = 0 '1ère ligne du tableau
Do While Not EOF(nf1) 'parcours du fichier txt
ReDim Preserve t_complement(i) 'redim du tableau en conservant les données déjà lues
Line Input #nf1, tampon 'lecture du fichier complement.txt
t_complement(i).champ = Split(tampon, ";") 'transfert de l'enreg dans le tableau
i = i + 1 'incrémentation pour le prochain enreg
Loop

Close #nf1

'A ce point, le fichier complement.txt est en mémoire dans le tableau t_complement

'ouverture du fichier base.txt (origine)
nf2 = FreeFile 'récup d'un numéro de fichier libre
Open fichier_base For Input As #nf2

'ouverture du fichier base_complement.txt (destination)
nf3 = FreeFile 'récup d'un numéro de fichier libre
Open fichier_destination For Output As #nf3

Do While Not EOF(nf2)

Line Input #nf2, tampon 'lecture du fichier base.txt
societe = Split(tampon, ";")(3) 'récupère valeur du champ societe
departement = Split(tampon, ";")(4) 'récupère valeur du champ departement

trouve = False

'parcours du tableau t_complement pour rechercher le responsable
For i = 0 To UBound(t_complement) If societe t_complement(i).champ(0) And departement t_complement(i).champ(2) Then
tampon = tampon & ";" & t_complement(i).champ(3)
trouve = True
Exit For
End If
Next

If trouve = True Then
Print #nf3, tampon
Else
arret = False
msg = "Sociéte : " & societe & _
" et/ou Département : " & departement & " inconnu(s)." & _
vbCrLf & "Voulez-vous continuer quand même ?"
rep = MsgBox(msg, vbQuestion + vbYesNo)
'là c'est à toi de cécider ce que tu veux faire
'je propose
Select Case rep
Case vbNo 'on arrête tout
arret = True
Exit Do
Case vbYes 'on continue en ajoutant une indication
Print #nf3, tampon & ";" & "responsable inconnu"
End Select
End If
Loop

Close #nf2
Close #nf3

'si tu veux arrêter, inutile de conserver le fichier destination
If arret = True Then
Kill fichier_destination 'destruction du fichier destination
MsgBox "Concaténation interrompue."
Else
MsgBox "Concaténation bien terminée."
End If

End Sub

Maintenant, il serait mieux d'utiliser une base de données, Access ou autre que des fichiers texte.

Loup Gris
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Messages postés
13
Date d'inscription
mardi 16 mars 2004
Statut
Membre
Dernière intervention
3 mars 2005

Comme tu me l'a indiqué, j'ai changé
Dim i As Integer
par Dim i as long,
mon fichier comportant plus de 40.000 enregistrements
et tout fontionne.
Comme d'habitude, nickel encore un grand merci à toi
cordialement