COPY FILE (Concaténation de fichiers en un seul)

Résolu
overpower Messages postés 16 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 août 2005 - 1 août 2005 à 17:20
overpower Messages postés 16 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 août 2005 - 2 août 2005 à 14:40
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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
2 août 2005 à 12:04
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
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 août 2005 à 19:47
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
0
overpower Messages postés 16 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 août 2005
2 août 2005 à 09:52
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.
0
overpower Messages postés 16 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 août 2005
2 août 2005 à 14:07
je test avec ta méthode et je te dis de suite après et sinon merci pour tes réponses rapides et claires ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
overpower Messages postés 16 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 août 2005
2 août 2005 à 14:40
ça marche nikel, merci infiniment ^^
0
Rejoignez-nous