phenrent76
Messages postés13Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention 3 mars 2005
-
19 févr. 2005 à 11:33
phenrent76
Messages postés13Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention 3 mars 2005
-
20 févr. 2005 à 01:40
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
A voir également:
Créer un fichier texte avec des données issues de 2 fichiers txt
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 19 févr. 2005 à 17:51
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
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.
phenrent76
Messages postés13Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention 3 mars 2005 20 févr. 2005 à 01:40
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