Macro mettre bout à bout plusieurs fichiers sur une même feuille
Voilà je vous explique la situation : j'ai un appareil de mesure qui me
renvoie des fichier .csv (texte), il m'en donne plusieurs et je dispose
déjà d'une macro qui transforme tout ces fichiers .csv en .xls.
Je souhaiterais maintenant créer une macro qui me permettent de
fusionner ces plusieurs fichier .xls (sachant que TOUT les fichiers
contiennent exactement le même nombre de colonne) sur un fichier .xls et
sur une seule feuille. Que ce fichier final soit tout les fichiers mit
bout à bout de colonne (de gauche à droite) et pas en ligne (du haut
vers le bas).
J’espère avoir était assez clairs et concis.
Merci du temps que vous aurez pris à lire mon message !
Du coup voilà 4 fichiers excel que j'aimerai combiner de gauche à droite sur une seule feuille c'est a dire ne pas les empiler.
Ces 4 classeurs excel j'ai réussi
à les mettre d'en un seul classeur
mais plusieurs feuilles différentes. Dans le fichier "fusion" il y a la
macro "combine" qui combine les plusieurs feuilles du classeur sur une
seule feuille mais ça se combine en empilant les fichiers les uns sur
les autres, et moi j'aimerai qu'il soit mit bout à bout de gauche à
droite.
Merci de votre aide.
Petite précision si la différence du nombre de colonne pose un problème entre les fichiers je peux faire en sorte qu'ils aient tous le même nombre de colonne. Mais je ne peux pas modifier les lignes.
J'aimerais aboutir au même résultat sur la photo mais avec une macro sans devoir copier-coller.
Chaque encadrés en rouge correspond à un fichier .csv que j'ai transformé en .xls.
Bonjour,
Voici un code pour coller le contenu de la feuille 1 de chaque classeur (d'extension xls !!!) d'un même dossier vers la feuille 1 du classeur contenant le code :
sub test()
spath = "C:\..." '<<<< adapter chemin
if dir(spath, vbdirectory) = "" then msgbox "dossier inexistant", 16: exit sub
sfilename = dir(spath & "\*.xls")
do while sfilename <> ""
sfullname = spath & "\" & sfilename
with workbooks.open(sfullname)
t = .sheets(1).usedrange.value
.close true
end with
with thisworkbook.sheets(1)
nlc = .cells(1, .columns.count).end(xltoleft).column + 2
.cells(1, nlc).resize(ubound(t), ubound(t, 2)).value = t
end with
sfilename = dir
loop
end subIl faut :
- adapter le chemin du répertoire contenant les fichiers (celui-ci ne doit pas terminer par un anti-slash),
- que le fichier exécutant (et receveur) ne soit pas dans le même dossier,
- que les fichiers source soient fermés au moment de l'exécution,
- bien surveiller l'extension des fichiers : xls n'est pas la même chose que xlsx.
Cdlt,
Bonjour et bienvenue sur le forum
Un essai à tester. Te convient-il ?
Nota : tous les fichiers doivent être dans le même dossier.
Bye !
Bonjour et merci !
J'ai essayé avec votre macro mais je n'arrive qu'a ouvrir des csv or je veux utiliser des .xls que j'ai deja importé avec la macro "combine".
Avec l'image ici, en encadré bleu chaque feuille vient d'un classeur xls différent , la macro jusque la fonctionne bien, et le type de fichier qu'il y a dans ses feuilles et semblable à l'encadré en rouge.
J'aimerai réussir à faire fonctionner la macro "combine" (en feuille 1) pour qu'elle me fusionne toute les feuilles (encadré en bleu) sur la feuille 1 et que les données soit disposé de gauche à droite. ( Par exemple donnée de feuille 2 sur colonne A à D, données feuille 3 sur colonne E à H et etc..)
Actuellement la macro fusion m'empile les colonnes. J'ai essayé avec votre macro en l'intégrant au code et avec votre fichier mais elle me demande d'importer que des fichiers csv et m'empile les données.
N'y aurait il pas un moyen de modifier le code de la macro combine pour qu'elle me dispose les fichier de gauche à droite au lieu de me les empiler ?
Ps: au début de mon post je me suis trompé la macro "fusion" fonctionne comme je le souhaite c'est la macro combine qui me joue des tours.
Merci beaucoup pour votre patience et de m'accorder de votre temps !
(Je suis désolé je débute si jamais je n'ai pas saisi certaine choses.)
Merci 3GB j'ai réussi finalement à faire marcher votre macro !
Cependant y'a t'il un moyen pour que le dossier source (là ou on vient chercher les différent xls) ne soit pas fiche et qu'on viennt le chercher avec un explorateur de fichier ?
Merci !
Bonjour à tous,
Oui, c'est possible. Voici un essai :
sub test()
with application.filedialog(msoFileDialogFolderPicker)
if .show = -1 then spath = .selecteditems(1)
end with
if dir(spath, vbdirectory) = "" then msgbox "Merci de sélectionner un dossier", 16: exit sub
sfilename = dir(spath & "\*.xls")
do while sfilename <> ""
sfullname = spath & "\" & sfilename
with workbooks.open(sfullname)
t = .sheets(1).usedrange.value
.close true
end with
with thisworkbook.sheets(1)
nlc = .cells(1, .columns.count).end(xltoleft).column + 2
.cells(1, nlc).resize(ubound(t), ubound(t, 2)).value = t
end with
sfilename = dir
loop
end subCdlt,
Bonjour TASDorian. Votre fichier fusion est vide... pourrais-je svp avoir le code vba qui empile les fichiers ???? J'ai justement besoin d'un code vba qui empile les données de plusieurs fichiers dans un même fichier.
Merci d'avance.