COPY FILE (Concaténation de fichiers en un seul) [Résolu]

Signaler
Messages postés
16
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 août 2005
-
Messages postés
16
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 août 2005
-
Bonjour,
Je voudrais savoir si quelqu'un saurait comment concaténer plusieurs fichiers en un seul en vba.
J'ai trouvé une solution mais elle est tres restrictive au niveau du nombre de caractere pour le pattern, exemple:

Celle ci marche
Shell("Command.com /c COPY c:\az*.* c:\res.txt")

Mais le code suivant ne marche plus:
Shell("Command.com /c COPY c:\azerty*.* c:\res.txt")
car apparemment je peux pas depasser les 5 caracteres.

Yaurait il une fonction equivalente en vba mais sans restriction de longueur de caracteres?

Merci.

5 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
salut,
le problème, c'est que je suis pas du tout VBA moi...

le fait qu'il ne te concatène pas tous les fichiers, çà peut être normal (surtout avec ton exemple de chemin)
tu ne va pas forcément pouvoir copier un fichier système protégé par exemple. il faut penser aux droits, formats, etc....

"COPY" a pour but de copier réellement une source vers une destination
mais pourquoi ne pas adapter ce genre de routine :

tu répertories tous les fichiers de ton dossier, et un a un, tu les ajouter dans ton fichier text

dir(...) jusqu'à ce que dir retourne ""

Dim Contenu As String, i As Integer, FF As Integer
MyName = Dir(MyPath & "*.txt")
MyPath = App.Path & "\test" 'ton chemin
i = 0


Do While MyName <> "" ' Commence la boucle.
Contenu = ""
FF = FreeFile
Open MyPath & MyName For Input As #FF
Contenu = Input(LOF(FF), 1)
Close #FF
DoEvents

FF = FreeFile
Open App.Path & "\sauve.txt" For Append As #FF
Print #FF, Contenu
Close #FF
DoEvents


MyName = Dir ' Extrait l'entrée suivante.
i = i + 1
Loop
MsgBox "Fin : " & i & " fichier(s) traité(s)"

là çà fonctionne, mais je n'ai pris que les fichiers txt.
sinon, tu dois ouvrir les fichiers en binary

PCPT
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
slt
as-tu essayé ceci?

Shell("Command.com /c COPY c:\aze~1*.* c:\res.txt")
'pour 1 2 3 4 .... selon l'ordre alphabétique....

PCPT
Messages postés
16
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 août 2005

Non, apparemment ça ne marche toujours pas.
En plus du problème, j'ai un truc assez bizarre. Lorsque j'ecris l'expression avec 3 caracteres comme ceci aze*.* il ne copie que kelkes fichiers, pas tous, et lorsque j'utilise que 2 caracteres comme ceci az*.* il me concatene tous les fichiers du repertoire. Je ne comprends vraiment pas le mécanisme de cette commande. ça marche tres bien avec un bat mais avec la commande shell sous vba ya bcp de problemes.
Pouvez vous m'eclaircir sur ce sujet? merci infiniment.
Messages postés
16
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 août 2005

je test avec ta méthode et je te dis de suite après et sinon merci pour tes réponses rapides et claires ^^
Messages postés
16
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
26 août 2005

ça marche nikel, merci infiniment ^^