flypig
Messages postés2Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention15 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és406Date d'inscriptionlundi 2 décembre 2002StatutMembreDernière intervention25 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és12Date d'inscriptionlundi 7 mai 2007StatutMembreDernière intervention16 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és406Date d'inscriptionlundi 2 décembre 2002StatutMembreDernière intervention25 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és406Date d'inscriptionlundi 2 décembre 2002StatutMembreDernière intervention25 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és1221Date d'inscriptionjeudi 23 août 2001StatutMembreDerniè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és1221Date d'inscriptionjeudi 23 août 2001StatutMembreDerniè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és406Date d'inscriptionlundi 2 décembre 2002StatutMembreDernière intervention25 janvier 2014 16 juil. 2007 à 11:00
tres utile pour moi , je teste .
cs_aloneinthedark
Messages postés12Date d'inscriptionlundi 7 mai 2007StatutMembreDernière intervention16 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és939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 16 juil. 2007 à 09:35
File1.ListCount - 2..??
et ça sert à quoi de coller plusieurs fichiers en un pour "eviter le copier coller"?
15 nov. 2007 à 15:17
la taille. Si la taille du fichier est au dela, on aura sans doute problème.
16 juil. 2007 à 21:34
ya plus de probleme .
16 juil. 2007 à 21:19
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+
16 juil. 2007 à 14:58
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...)
16 juil. 2007 à 14:47
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
16 juil. 2007 à 14:37
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
16 juil. 2007 à 14:13
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
16 juil. 2007 à 14:04
16 juil. 2007 à 13:53
16 juil. 2007 à 13:52
Copy /b /Y *.dat fusion.fus
16 juil. 2007 à 11:00
16 juil. 2007 à 09:45
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+
16 juil. 2007 à 09:35
et ça sert à quoi de coller plusieurs fichiers en un pour "eviter le copier coller"?