CRÉATION D'UN FICHIER À PARTIR DE PLUSIEURS FICHIER (POUR ÉVITER LES COPIER-COL

hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 - 16 juil. 2007 à 09:35
flypig Messages postés 2 Date d'inscription lundi 10 septembre 2007 Statut Membre Dernière intervention 15 novembre 2007 - 15 nov. 2007 à 15:17
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43466-creation-d-un-fichier-a-partir-de-plusieurs-fichier-pour-eviter-les-copier-coller

flypig Messages postés 2 Date d'inscription lundi 10 septembre 2007 Statut Membre Dernière intervention 15 novembre 2007
15 nov. 2007 à 15:17
Renfield, La fonction LOF renvoie une valeur de type long représentant
la taille. Si la taille du fichier est au dela, on aura sans doute problème.
cs_clementpat Messages postés 406 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 25 janvier 2014
16 juil. 2007 à 21:34
oui tu as raison , le curseur d'un des 2 fichiers etait mal placé.

ya plus de probleme .
cs_aloneinthedark Messages postés 12 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 16 juillet 2007
16 juil. 2007 à 21:19
salut,
merci pour les messages, c'est encourageant...
>CLEMENTPAT : je n'ai pas de ligne vide entre chaque fichier, et je ne sait pas pourquoi tu en as
>RENFIELD : le contrôle File1 est listé a l'envers parceque le contenu des fichier est classé par ordre chronologique et que les numéro d'index des fichiers s'ajoutent automatioquement au téléchargement (fich(1).xtx, fich(2).txt,etc...)
>RENFIELD : je trouve que l'open en binary est plus lent et plus long a programmer..
>pour la ligne il faut que le curseur soit à la fin de la dernière ligne sinon le fichier rajoute un retour chariot (13).

a+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 juil. 2007 à 14:58
tout le code peut se résumer en :



Private Sub Drive1_Change()
On Error Resume Next
Dir1.Path = Drive1.Drive
If Err Then
MsgBox Err.Description, vbExclamation
Drive1.Drive = Left$(Dir1.Path, 2)
End If
End Sub

Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Private Sub Command1_Click()
Dim sDestPath As String
Dim hOutFile As Integer
Dim hInFile As Integer
Dim xbBuffer() As Byte
Dim i As Long
If Right$(Dir1.Path, 1) = "" Then
sDestPath = Dir1.Path & "tmp"
Else
sDestPath = Dir1.Path & "\tmp"
End If
If Dir$(sDestPath, vbDirectory) = vbNullString Then
MkDir sDestPath
End If

hOutFile = FreeFile
Open sDestPath & "\Tmpfinal.txt" For Binary Access Write As #hOutFile
For i = File1.ListCount - 1 To 0 Step -1
hInFile = FreeFile
Open Dir1.Path & "" & File1.List(i) For Binary Access Read As #hInFile
ReDim xbBuffer(LOF(hInFile))
Get #hInFile, , xbBuffer
Close hInFile

Put hOutFile, , xbBuffer

If i Then
Put hOutFile, , vbCrLf
End If
Next i
Close #hOutFile

MsgBox "Terminé", vbInformation
End Sub

(je ne sais pas trop pourquoi les fichiers sont parcourus en sens inverse...)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 juil. 2007 à 14:47
tu n'a lu qu'a moitié ce que j'ai écris.

le code de aloneinthedark lis les fichiers ligne a ligne.
quand il reecrit le contenu, il faut REMETTRE le saut de ligne, c'est bien ce que fait Print, dans son code. Cependant, c'est également fait pour la dernière ligne du fichier...

pas l'idéal de lire le fichier ligne a ligne ici, faudrait detecter la dernière ligne, pour savoir si l'on doit faire un saut ou pas... (y'a d'autres moyen simples)

pas l'ideal non plus comme code... pas de Close #1, les numéros de canaux en dur, etc
cs_clementpat Messages postés 406 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 25 janvier 2014
16 juil. 2007 à 14:37
le fichier me donne :

1
2
3
4

5
6
7
8

avec le point virgule cela me donne :

12345678

moi je veux que cela donne :

1
2
3
4
5
6
7
8
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 juil. 2007 à 14:13
c'est l'instruction Print qui l'ajoute...

faire

Print 1,"jjj" ;

(point virgule) pour que Print n'ajoute pas de ligne

dommage de lire les fichiers ligne à ligne...
Open For Binary serait bien plus efficace, et tu n'aurais pas ce soucis de lignes vides
cs_clementpat Messages postés 406 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 25 janvier 2014
16 juil. 2007 à 14:04
impeccable , mais le programme ajoute une ligne vide entre chaque fichier , comment faire pour ne pas avoir cette ligne vide ?
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
16 juil. 2007 à 13:53
(Jai utilisé ce système une fois pour fusionner des fichiers html en un seul document)
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
16 juil. 2007 à 13:52
On peut le faire via une simple commande dos : il suffit d'ajouter /b pour binaire et /Y pour mode automatique :
Copy /b /Y *.dat fusion.fus
cs_clementpat Messages postés 406 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 25 janvier 2014
16 juil. 2007 à 11:00
tres utile pour moi , je teste .
cs_aloneinthedark Messages postés 12 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 16 juillet 2007
16 juil. 2007 à 09:45
salut,

j'ai récupérer les valeurs boursières sur internet et les périodes de téléchargement sont limités, il y a donc plusieurs (voire plus d'une dizaine de fichier ) pour la même valeur il faut donc copier coller bout a bout pour avoir un seul fichier.
le File1.listcount -2
en fait c'est File1.listcount -1 , il compte le nombre de fichier présent dans un controle filelistbox, le -1 est pour pointer sur la valeur de file1.listindex qui commance a zéro et que le filecount commance a 1 y 'a donc une différence de 1
pourquoi -2 avant et -1 maintenant?
avant je mettais le fichier crée dans le même repértoire mais il n'était pas pris en compte lors du listcount je l'ai crée dans un autre rep.
voilà...
a+
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
16 juil. 2007 à 09:35
File1.ListCount - 2..??
et ça sert à quoi de coller plusieurs fichiers en un pour "eviter le copier coller"?
Rejoignez-nous