Fusionner plusieurs fichiers en 1 feuille Excel

Bonjour ,

Voila , je suis désolé de poster ici alors que ce sujet est traité un peu partout sur le net, mais meme si je suis pas "novice" dans excel , les macro , VBA ... ce n'est pas ma tasse de thé .

Donc voici mon problème :

Je possède 11 fichiers avec une feuille par fichier avec les memes noms et nombre de colonnes pour l'ensemble des fichiers.

Ce que souhaite faire c'est donc de reunir ces 11 fichiers (donc 11 feuilles) sur un nouveau fichier excel (appelé global) avec l'ensemble des données dans une seul feuille.

Mes 11 fichiers sont tous classé dans un dossier séparé , regrouper dans un dossier unique avec donc 11 sous dossiers.

Mes 11 fichiers sont amené à evoluer , (ils garderont cependant les memes colonnes) , mais de nouvelles lignes seront créé , des anciennes effacées, des données modifiés ...

En Pj , en feuille 1 la forme de des 11 tableau et en feuille 2 la forme de mon tableau final souhaité.

La forme est la meme sauf la première colonne sera supprimé (pictures).

Pouvez vous svp me donner un coup de main pour regrouper tous ces fichiers sous une seul feuille.

J'utilise Excel 2010 en anglais , mais avec les termes francais je devrais m'en sortir

Merci d'avance de votre aide.

Benoit

68test.xlsx (9.41 Ko)

Salut je n'ai pas compris ton fichier de test , je vais recapituler avec mes mots

Tu as 11 fichier avec une feuille et tu veux les regrouper sur une feuille dans un seul fichier ?

(Tes fichiers auront toujours le meme nom ? )

Si oui avec l'enregistreur de macro tu fait tout simplement des copier coller d'une colonne d'un fichier à l'autre dans ce style la

    Columns("A:A").Select
    Range("A2").Activate
    Selection.Copy
    Windows("2007ok.xlsm").Activate
    Sheets.Add After:=Sheets(Sheets.Count)
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Windows("cible - Copie2003ok.xlsm").Activate

tu va devoir te débrouille un peu seul car sans les noms de tes 11 fichiers + le nom de ton fichier ou tu compile les données on va pas pouvoir faire ta macro

Bonjour bluestar,

Donc tu as bien compris mon problème

Mes 11 fichiers + le global garderons toujours le meme nom.

Mon fichier test , en page 1 ce sont les noms des colonnes de mes fichiers "sources" et en page 2 ce sont le noms des colonnes du fichier global.

Seul dif la colonne pictures a été supprimé.

Mon fichier final s'appelera Storecheck Global

Si tu peux m'aider un peu plus ce serais génial

Merci beaucoup déjà

bonjour

sans fichier pour tester difficile de faire ....

essaye de me mettre ce fichier dans le dossier parent de tes 11 sous dossiers...

et faire des tests...

les noms de fichiers n'ont pas d'importance. mais dans tous tes fichiers les données doivent être dans l'onglet 1... et aucun autre fichier doit etre dans ce dossier parent

Fred

Edit : j'avais pas mis le bon fichier a re-telechager

Edit 2 : Quand on veux aller trop vite petite coquille qui supprimait l'entete de la feuille corriger

43test-v001.xlsm (18.77 Ko)
73test-v002.xlsm (19.33 Ko)

Merci fred.

Cependant quand je lance la Macro , j'ai un message d'erreur et dans la macro une phrase est souligné en jaune :

Sub ouverture_copie_donnees(fichier_source As String, fichier_a_ouvrir As String, der_ligne As Integer)

Peux tu me dire ce que je dois modifier ?

Merci d'avance

oups erreur(s) de frappe

rempalce le tout c'est plus simple :

Sub ouverture_copie_donnees(fichier_source As String, fichier_a_ouvrir As String, der_ligne As Integer)
 Workbooks.OpenText Filename:=(fichier_a_ouvrir), DataType:=xlDelimited, Tab:=True
 ActiveWorkbook.Sheets(1).Range("B2:O" & Sheets(1).Range("B65536").End(xlUp).Row).Copy Workbooks(fichier_source).Sheets(1).Range("A" & der_ligne)
 ActiveWorkbook.Close False

End Sub

toujours vouloir aller trop vite.....

fred

Merci beaucoup Fred

Il me reste un dernier petit soucis sur cette Macro avant que ce sois PARFAIT

J'espere que tu pourras me donner un dernier coup de main.

Voila , la macro colle en effet chacune de mes colonnes ... Sauf ... (helas ^^) la dernière colonne "Actual Supplier"

J'avou avoir fait une erreur car le nom de la colonne dans mes 11 fichiers respectif était "Fournisseur actuel" et non "actual supplier " comme dans mon fichier test en Pj.

Du coup j'ai fait 2 variante pour fixer ce problème:

  • changé le nom de la colonne dans la macro pour avoir identique au 11 fichiers -> Ca ne marche pas
  • Changé le nom de la colonne dans mes 11 fichiers respectif pour que ce sois identique à la Macro -> Ca ne marche pas (Helas encore :'( )

Le message d'erreur qui s'affiche est :

"Run Time error 1004"

"Unspecified error"

MErci beaucoup d'avance pour ce dernier petit conseil qui devrait me faciliter enormement la vie

Benoit

désolé , je vais encore t'embeter fred je suis désolé , j'aimerais aussi si possible ajouter une colonne à mon tableau Global ,

le nom de cette colonne serait "Customer", bien sur j'ajouterais cette même colonne à l'ensemble de mes 11 "sous fichiers" .

Cette colonne se trouverais en cellule A pour mon fichier global ainsi que pour mes 11 "sous fichiers"

merci beaucoup d'avance

Benoit

bonjour

Bon résumons : pour savoir si j'ai bien compris ...

je ne test pas les nom des colonnes donc même si tu renom les entêtes des colonnes cela ne change rien pour la macro.

dans ta nouvelle configuration tu veux que les colonnes B à P de ton fichier source soient copiées dans les colonnes A a O dans ton fichier de synthèse c'est bien cela ???? si oui le fichier est en pièce jointe... sinon Dis moi ce que tu veux précisement comme je viens de l'expliquer précédemment.

maintenant concernant l'erreur je ne le reproduit pas avec les fichiers test que j'ai fait chez moi... et il faudrait etre plus précis dans tes explications :

c'est sur tous tes fichiers que ce produit cette erreur ? ou sur un en particulier ?

sur quelle ligne du code cela se produit exactement ?

tu es bien sous Windows ?

Donc deux possibilités :

Soit tu arrives à debugger la chose toi même

Soit j'aurais besoin de tes fichiers pour tester chez moi. si tu ne veux pas que tes fichiers soient téléchargeable par tout le monde tu peux me les envoyer par MP

Fred

100test-v003.xlsm (21.12 Ko)

Bonjour Fred,

Donc en fait j'ai ajouté une colonne à chacun de mes fichiers donc maintenant Je copie mes colonnes BQ vers mes colonnes AP.

Ca c’est ok j’ai modifié moi-même la macro.

Par contre j’ai toujours un Bug qui s’affiche ( voir Pj).

L‘ensemble de mes fichiers sont bien copié dans mon fichier global mais le bug s’affiche toujours …

Aurais tu un moyen de supprimer ce message d’erreur ?

Merci d’avance

bug macro vba

bonjour

comme ça je ne peux pas dire ....

il faudrait faire debug et me dire sur qu'elle ligne il coince ... et sur quel fichiers fichiers sont ouverts a ce moment là....

sans tes fichiers je ne peux pas te dire ce qui cloche

Fred

Bonjour voici la ligne "Bug" en jaune dans la macro :

Workbooks.OpenText Filename:=(fichier_a_ouvrir), DataType:=xlDelimited, Tab:=True

Aucun de mes fichiers sont ouvert lorque je lance l'actualisation de mon fichier global

Merci d'avance

Bonjour alors on avance un petit peu...

Maintenant toujours en mode debug. Regarde la valeur de la variable fichier_a_ouvrir ....

Il suffit de se placer dessus avec la souris ou tu selectionne la variable et clique droit ajouter un espion...

Donne moi la valeur d cette variable.

fred

Re-bonjour Fred,

J'ai fait ce que tu as demandé et paf je vois le nom d'un de mes 11 fichiers apparaitre du coup je le vire , et la ca marche parfait.

Du coup j'ai refait mon fichier qui buggé sur un nouveau fichier excel et la paf ca fonctionne parfaitement

Merci beaucoup de ton aide

Vive Excel Pratique

Bonne journée !

Bon alors content que cela marche pour toi

a plus fred

Bonjour Cher excel "pratiqueur",

Je reviens vers vous après quelques mois de non action concernant ce sujet.

J'aimerais si possible changer une petite chose par rapport à ma demande précédente qui avait reussi.

Pour rapelle je voulais fusionner 11 fichier en un seul pour faire un fichier global -> c'est ok.

J'avais donc copier depuis mes fichiers sources : colonnes B à X vers mon fichier global A à W (grace à une VBA )

le nom des colonnes est en ligne 1 puis mes infos suive en dessous.

Maintenant voici le changement que je souhaite apporter :

dans mes fichiers sources j'ai une colonne (colonne A) avec des photos je souhaites les inclures dans mon fichier global :

je dois donc copier les colonnes A à X vers mon fichier sources en AàX ais attention en colonnes 1 ce sont des photos à déplacer , j'aimerais si possible qu'elle garde le format (taille) du fichier sources

Aussi un dernier détails je souhaiterais creer un ligne, la ligne n°1 qui serait vide afin de mettre monbouton d emacro sans empieter sur mon tableau

ci-joint dessous ma macro actuel merci de me conseiller sur les choses à changer afin de copier les photos en colonnes A et d'y ajouter une ligne (ligne n°1) qui sera vide de tout texte.

Merci beaucoup d'avance

Benoit

Macro :

Option Explicit

Sub lire_les_donnees()

If Sheets(1).Range("A65536").End(xlUp).Row > 1 Then Sheets(1).Range("A2:W" & Sheets(1).Range("A65536").End(xlUp).Row).Delete

Parcourir_dossiers_recup_donnees (ActiveWorkbook.Path), (ActiveWorkbook.Name)

End Sub

Sub Parcourir_dossiers_recup_donnees(chemin As String, fichier_source As String)

'Déclaration des variables

Dim Fso As Scripting.FileSystemObject

Dim SourceFolder As Scripting.Folder

Dim SubFolder As Scripting.Folder

Dim FileItem As Scripting.File

Dim i As Integer

Dim fichier_en_traitement As String

Dim fichier_sourcebis As String

fichier_sourcebis = "~$" & fichier_source

Set Fso = CreateObject("Scripting.FileSystemObject")

Set SourceFolder = Fso.GetFolder(chemin)

'Récupère le numéro de la dernière ligne vide dans la colonne A.

'Boucle sur tous les fichiers du répertoire

For Each FileItem In SourceFolder.Files

'recupere la deniere ligne occupée +1

i = Sheets(1).Range("A65536").End(xlUp).Row + 1 ' Récupère le numéro de la dernière ligne vide dans la colonne B dans le fichier ctx.

' on recupere le nom du fichier

fichier_en_traitement = FileItem.Name

' on verifie que c'est pas le fichier sur lequel on est, si c'est OK lecture des données

' mettre l'envoi au bon format pour l'execution instruction excel 4 avec les "[" "]")

' If fichier_en_traitement <> fichier_source And fichier_en_traitement <> nom_sauvegarde_fichier And fichier_en_traitement <> fichier_sourcebis Then: lire_donnees (fichier_source), ("'" & chemin & "\[" & fichier_en_traitement & "]"), (i)

If fichier_en_traitement <> fichier_source And fichier_en_traitement <> fichier_sourcebis Then: ouverture_copie_donnees (fichier_source), (chemin & "\" & fichier_en_traitement), (i)

Next FileItem 'fichier suivant

'--- Appel récursif pour lister les fichier dans les sous-dossiers du dossier indiquer par la boite de dialogue ---.

For Each SubFolder In SourceFolder.SubFolders

Parcourir_dossiers_recup_donnees SubFolder.Path, (fichier_source)

Next SubFolder

End Sub

Sub ouverture_copie_donnees(fichier_source As String, fichier_a_ouvrir As String, der_ligne As Integer)

Workbooks.OpenText Filename:=(fichier_a_ouvrir), DataType:=xlDelimited, Tab:=True

ActiveWorkbook.Sheets(1).Range("B2:X" & Sheets(1).Range("B65536").End(xlUp).Row).Copy Workbooks(fichier_source).Sheets(1).Range("A" & der_ligne)

ActiveWorkbook.Close False

End Sub

bonjour

ouvre un nouveau post et joint au moins un fichier source avec des photos pour faire des essais

fred

Rechercher des sujets similaires à "fusionner fichiers feuille"