begin process at 2008 07 06 20:23:27
1 205 742 membres
305 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

Catégorie :Texte Classé sous : manipulation, fichier, concaténation, données Niveau : Débutant Date de création : 15/07/2007 Date de mise à jour : 15/07/2007 19:45:58 Vu / téléchargé: 5 079 / 466

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note


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.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

15 juillet 2007 19:45:58 :
15/07/2007 le fichier créé n'est plus dans le même rep (pb entre le création et la prise en compte dans le controle file1 1 sous rep est créé dans le rep cible ou est placé le fichier final. rajout de on error resume next si plusieur opération sur le même repertoire une erreur se produit quand il créé un répertoire déja créé.
  • signaler à un administrateur
    Commentaire de hvb le 16/07/2007 09:35:37

    File1.ListCount - 2..??
    et ça sert à quoi de coller plusieurs fichiers en un pour "eviter le copier coller"?

  • signaler à un administrateur
    Commentaire de aloneinthedark le 16/07/2007 09:45:10

    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+

  • signaler à un administrateur
    Commentaire de clementpat le 16/07/2007 11:00:56

    tres utile pour moi , je teste .

  • signaler à un administrateur
    Commentaire de Patrice99 le 16/07/2007 13:52:21

    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

  • signaler à un administrateur
    Commentaire de Patrice99 le 16/07/2007 13:53:31

    (Jai utilisé ce système une fois pour fusionner des fichiers html en un seul document)

  • signaler à un administrateur
    Commentaire de clementpat le 16/07/2007 14:04:54

    impeccable , mais le programme ajoute une ligne vide entre chaque fichier , comment faire pour ne pas avoir cette ligne vide ?

  • signaler à un administrateur
    Commentaire de Renfield le 16/07/2007 14:13:33 administrateur CS

    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

  • signaler à un administrateur
    Commentaire de clementpat le 16/07/2007 14:37:13

    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

  • signaler à un administrateur
    Commentaire de Renfield le 16/07/2007 14:47:51 administrateur CS

    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

  • signaler à un administrateur
    Commentaire de Renfield le 16/07/2007 14:58:47 administrateur CS

    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...)

  • signaler à un administrateur
    Commentaire de aloneinthedark le 16/07/2007 21:19:43

    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+

  • signaler à un administrateur
    Commentaire de clementpat le 16/07/2007 21:34:10

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

    ya plus de probleme .

  • signaler à un administrateur
    Commentaire de flypig le 15/11/2007 15:17:41

    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.

Ajouter un commentaire

Pub



Appels d'offres

WEB DESIGN
Budget : 1 000€
Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS