Est il possible de fusionner plusieurs documents excel en un seul ?

cmarchisio

XLDnaute Nouveau
Bonjour,

J'ai pas mal de fichiers Excel que je voudrais fusionner en un seul dans differentes feuilles en gardant le meme non de feuille. Existe-t-il une option permetant la fusion de plusieurs fichiers Excell ?

merci d'avance,

Christophe
 

Staple1600

XLDnaute Barbatruc
Re : Est il possible de fusionner plusieurs documents excel en un seul ?

Re

C'est juste une histoire de choix des bons mots clés lors de la recherche
combiner classeurs
fusionner classeurs

Sinon un exemple de code en guise d'inspiration ici
https://www.excel-downloads.com/thr...-feuille-les-donnees-dautres-feuilles.162782/

NB
: J'ai du commettre une macro jadis sur le forum qui fait peu ou prou ce que tu cherches
Mais repas de famille dominical oblige, j'ai pas le temps (on verra après le dessert) de faire la recherche.
Je te laisse chercher (en allant en Recherche avancée et en cherchant sur mon pseudo et avec les mots-clés idoines)
 
G

Guest

Guest
Re : Est il possible de fusionner plusieurs documents excel en un seul ?

Bonjour,

voici une possibilité:

Code:
Sub consolide()
  ChDir ThisWorkbook.Path
  Set classeurMaitre = ThisWorkbook
  sup
  'Ajoute une feuille à ce classeur
  Set feuille = classeurMaitre.Sheets.Add(after:=classeurMaitre.Sheets(classeurMaitre.Sheets.Count))
  feuille.Name = "Import"
  
  compteur = 0
  'parcourir les classeurs de ce répertoire
  nf = Dir("*.xls")
  Do While nf <> ""
    If nf <> classeurMaitre.Name Then
      compteur = compteur + 1
      Workbooks.Open Filename:=nf
      With ActiveWorkbook.Sheets(1).UsedRange
      If compteur = 1 Then
            'si compteur = 1 copie avec la ligne d'entête de la plage
            .Copy Destination:=feuille.Cells(Rows.Count, 1).End(xlUp)
      Else
            'sinon copie sans l'entête
            With .Offset(1).Resize(.Rows.Count - 1)
                    .Copy Destination:=feuille.Cells(Rows.Count, 1).End(xlUp).Offset(1)
            End With
        End If
      End With
      Workbooks(nf).Close False
    End If
    nf = Dir
  Loop
End Sub

Remplacer la macro 'consolide' existante par cette dernière, conserver la macro sup.

Cette macro rajoute une feuille dans le classeur puis copie la plage utilisée de la première feuille de chaque classeur du répertoire, dans cette feuille ajoutée.

A+

MyBrother à dit:
repas de famille dominical oblige, j'ai pas le temps (on verra après le dessert)
Puisque tu sembles ne rien en laisser aux petits camarades...
Bonne digestion:)
 

PFG60

XLDnaute Junior
Re : Est il possible de fusionner plusieurs documents excel en un seul ?

Bonjour à tous,

Je viens seulement de voir vos réponse.
Merci pour cette aide très rapide Staple1600.

Je vais tester dans la semaine la solution de Hasco et vous tiens au courant rapidement.
 

PFG60

XLDnaute Junior
Re : Est il possible de fusionner plusieurs documents excel en un seul ?

Salut les Exceliens !

Je viens de tester vos bout de codes dans un seul et même fichier avec un userform.
Ils sont absolument formidable. Comme cela ne vient pas de moi, j'ai ajouter vos pseudo en commentaire dans le code ("Ben voui hein, c'est la moindre des choses.").

Sinon question toute bête :
est-il possible de faire apparaître la boite de dialogue "Enregistrer sous" ?
J'en aurais grand besoin.
 
Dernière édition:

PFG60

XLDnaute Junior
Re : Est il possible de fusionner plusieurs documents excel en un seul ?

Saluts à tous,

J'ai enfin terminé mon fichier.
Je dis un grand merci à tous ceux qui ont participé.

Comme à mon habitude, j'ai ajouté en commentaire dans le code vos pseudos et la source.
 

PFG60

XLDnaute Junior
Re : Est il possible de fusionner plusieurs documents excel en un seul ?

Bonsoir ou Bonjour (au choix vu l'heure : insomnie),

Je ne peux pas vous joindre le fichier final car c'est confidentiel.

J'ai souhaité ajouter encore plus d'automatisme (besoin de mon entreprise) : ajout d'onglets supplémentaires comportant des TCD. Cela provoque une erreur : "erreur d’exécution 5 : argument ou appel de procédure incorrect".
J'ai cherché sur le net des solutions mais rien qui puisse répondre à mon attente.

Vous trouverez ci-joint un dossier zip avec le fichier xlsm permettant d'exécuter la macro : "Fusion Google formulaire CM - PFG60".

Avez-vous une idée de mon erreur dans le code ?
Pour vous aider voici une copie écran :
2014-08-10 01_07_52-Microsoft Visual Basic pour Applications - Fusion Google formulaire CM - PFG.jpg
 

Pièces jointes

  • Fusion Google formulaire CM - PFG60.zip
    209.1 KB · Affichages: 256
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Est il possible de fusionner plusieurs documents excel en un seul ?

Bonjour à tous,
Salut Florian,

Tu demandes à la macro de créer le TCD sur la Feuil2...
Il faut passer par une feuille nommée existante :

' Billettique Macro


Sheets.Add
ActiveSheet.Name = "Tempo"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"CM_reponses", Version:=xlPivotTableVersion15).CreatePivotTable _
TableDestination:="Tempo!R3C1", TableName:="TCD1", _
DefaultVersion:=xlPivotTableVersion15

............................
Sheets("Tempo").Select
Sheets("Tempo").Name = "Billéttique"
Sheets("Billéttique").Select

Pareil pour les autres créations de TCD

BILLETIQUE est différent de Billétique...

A+ à tous
 

PFG60

XLDnaute Junior
Re : Est il possible de fusionner plusieurs documents excel en un seul ?

Bonjour à tous,
Bonjour JCGL,

OK j'avais oublier que les macros précédentes créaient des feuilles. De ce fait, je vais de ce pas changer le code.

Pour ce qui est de la fermeture d'Excel, je connais que trop bien les personnes qui vont utiliser le fichier : ils ne font pas différence entre un XLS et XLM. Surtout que certains poste n'ont pas Office mais Open Office.
C'est pour ces deux raisons que j'oblige mes collègues à générer le fichier puis à l'enregistrer dans un format "classique" lisible sur Office et Open Office.
Peut-être que certains trouverons cette explication scabreuse mais cela me convient parfaitement.

Pour ce qui est du fichier final, il ressemble quasiment à celui que j'ai mis en pièce-joint plus haut (manque les logos, adresse, service et l'intitulé des fenêtres).
Pour les données d'exemple, c'était en fichier que j'avais créer pour former les nouveaux dans l'entreprise.


@+ et bon dimanche à tous
 
Dernière édition:

PFG60

XLDnaute Junior
Re : Est il possible de fusionner plusieurs documents excel en un seul ?

Bonjour à tous,

Hélas je dois rouvrir cette discutions car j'ai un problème.

Je suis en pleine rédaction d'un nouveau fichier (encore un, hé voui ;)).
Le but du fichier sera de fusionner plusieurs fichiers en un seul. jusque là rien de bien sorcier.
Pour le moment je suis en plein test de la macro avec un seul fichier test. Seulement voilà...

Le fichier d'origine est structuré de la même façon que le fichier de destination. J'ai des colonnes de A à AH.
Or lors de l'import du fichier test avec la macro, seulement les colonnes A à K sont prise en compte.

D'où provient mon erreur ?
Ci-dessous les fichiers pour comprendre.


EDIT 11/08/14 à 23h02 : j'ai trouvé l'erreur de "débutant" :eek: et retiré les fichiers joints car ils ne sont plus utile
 
Dernière édition:

PFG60

XLDnaute Junior
Re : Est il possible de fusionner plusieurs documents excel en un seul ?

Slt à tous,

Voici un problème bien embêtant.

Je dois fusionner deux fichiers : un avec plus de 10570 lignes et l'autre avec plus de 5000 lignes.
Or le code ci-dessous fonctionne pour le premier fichier mais pas pour le second. Le code prend en compte les en-têtes (ligne A) du second et seulement la deuxième ligne (ligne B).
Code:
Private Sub CommandButton1_Click()
'pour fusionner plusieurs classeurs d'un même répertoire
  ChDir ActiveWorkbook.Path
  Set classeurMaitre = ActiveWorkbook
  compteur = 1
  nf = Dir("*.xls")
  Do While nf <> ""
    If nf <> classeurMaitre.Name Then
      Workbooks.Open Filename:=nf
      For k = 1 To Sheets.Count
        Sheets(k).Copy After:=classeurMaitre.Sheets(classeurMaitre.Sheets.Count)
        classeurMaitre.Sheets(classeurMaitre.Sheets.Count).Name = "CM" & compteur
        compteur = compteur + 1
      Next k
      Workbooks(nf).Close False
    End If
    nf = Dir
  Loop
  
Sheets("Fusion").Activate




'pour fusionner les onglets du classeur
For i = 2 To Sheets.Count
    With Sheets(i)
        T = .Range("A2:K" & .Range("A200000").End(xlUp).Row).Value
        Range("A200000").End(xlUp).Offset(1).Resize(UBound(T, 1), UBound(T, 2)) = T
    End With
Next

Sheets("Fusion").Activate
Range("A2").Select




'pour supprimer les onglets après fusion
  Application.DisplayAlerts = False
  If Sheets.Count > 1 Then
    Sheets("Fusion").Move before:=Sheets(1)
    Sheets(2).Select
    For i = 2 To Sheets.Count
      ActiveSheet.Delete
    Next i
  End If

Sheets("Fusion").Activate
Petite précision : le code fonctionne sur 200000 lignes en prévision d'un grand nombre de lignes

Comment faire pour résoudre ce problème de fusion ?
J'ai beau chercher une astuce ou un défaut dans le code, je ne vois pas.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 184
Messages
2 086 007
Membres
103 088
dernier inscrit
Psodam