Macro mettre bout à bout plusieurs fichiers sur une même feuille

Bonjour,

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 !

Je reviens avec plus de données !

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

197fusion.xlsx (7.51 Ko)

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

image

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 sub

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

image2

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 sub

Cdlt,

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.

Rechercher des sujets similaires à "macro mettre bout fichiers meme feuille"