Création d'un fichier à partir de plusieurs fichier (pour éviter les copier-coller)

Soyez le premier à donner votre avis sur cette source.

Vue 9 948 fois - Téléchargée 704 fois

Description

le code colle plusieur fichier dans un seul en conservant les petits

Conclusion :


voici une appli qui permet de créer un fichier à partir de plusieurs
fichier (de structure identique de préférence)

pour cela :
  • mettre les petits fichiers dans un répertoire
  • classer les fichers dans l'ordre


ATTENTION : dans cette version l'appli colle a partie du fichier
le plus bas pour aller jusqu'au plus haut, pour changer le sens
voyer plus bas et dans le fichier du début à la fin.
  • choisir ce répertoire avec les controles
  • cliquez sur "coller les ficher"
  • le fichier est crée dans le même répertoire


pour le sens, le code actuel de la boucle est :

For a = File1.ListCount - 2 To 0 Step -1

pour l'autre sens

for a=0 to File1.listCount -2

c'est tout.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
lundi 10 septembre 2007
Statut
Membre
Dernière intervention
15 novembre 2007

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.
Messages postés
406
Date d'inscription
lundi 2 décembre 2002
Statut
Membre
Dernière intervention
25 janvier 2014

oui tu as raison , le curseur d'un des 2 fichiers etait mal placé.

ya plus de probleme .
Messages postés
12
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
16 juillet 2007

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+
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
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...)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
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
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.