Copier les informations d'un classeur en une seule feuille.

ajox01

XLDnaute Junior
Bonjour tout le monde.

J'ai un sérieux problème. Je dois traiter un fichier excel composé de 400 feuilles. Je voudrais copier les éléments des 400 feuilles et les mettre dans une seule feuille. Mais là j'ai besoin de votre assistance.
 
C

Compte Supprimé 979

Guest
Re : Copier les informations d'un classeur en une seule feuille.

Bonjour Ajox01

Voici un exemple de code que tu peux utiliser
Code:
Sub Consolidation()  Dim ShtS As Worksheet, DLigS As Long, DLigD As Long
  Dim ShtD As Worksheet ' Feuille de destination
  ' Définir la feuille de destination
  Set ShtD = Sheets("MaFeuille")
  ' Pour chaque feuille
  For Each ShtS In ActiveWorkbook.Sheets
    If ShtS.Name <> ShtD.Name Then
      ' Dernière ligne remplie de la feuille de destination
      DLigD = ShtD.Range("A" & Rows.Count).End(xlUp).Row
      ' Dernière ligne remplie de la feuille source
      DLigS = ShtS.Range("A" & Rows.Count).End(xlUp).Row
      ' copier les données de la colonne A à C par exemple
      ShtS.Range("A2:C" & DLigS).Copy
      ShtD.Range("A" & DLigD).PasteSpecial Paste:=xlPasteValues
    End If
  Next ShtS
End Sub
A adapter selon les besoins

A+
 
C

Compte Supprimé 979

Guest
Re : Copier les informations d'un classeur en une seule feuille.

Re,

Le fichier aurais pu être mis à dispo sur le forum, rien de confidentiel dedans;

J'ai donc modifié le code pour couper les données de chaque feuille, plutôt que de simplement les copier
Et je calcule pour chacune d'elle la dernière colonne à couper
Ce qui donne comme code
Code:
Sub Consolidation()
  Dim ShtS As Worksheet, DCol As Integer, DLigS As Long, DLigD As Long
  Dim ShtD As Worksheet ' Feuille de destination
  ' Définir la feuille de destination
  Set ShtD = Sheets("Consolidation")
  ' Pour chaque feuille
  For Each ShtS In ActiveWorkbook.Sheets
    If ShtS.Name <> ShtD.Name Then
      ' Dernière ligne remplie de la feuille de destination
      DLigD = ShtD.Range("A" & Rows.Count).End(xlUp).Row
      ' Dernière colonne à copier
      DCol = ShtS.Cells(1, Columns.Count).End(xlToLeft).Column
      ' Dernière ligne remplie de la feuille source
      DLigS = ShtS.Range("A" & Rows.Count).End(xlUp).Row
      ' copier les données de la colonne A à C par exemple
      ShtS.Cells.UnMerge
      ShtS.Range(ShtS.Cells(1, 1), ShtS.Cells(DLigS, DCol)).Cut
      ShtD.Range("A" & DLigD + 1).Select
      ShtD.Paste
    End If
  Next ShtS
End Sub

Au plaisir
 
Dernière modification par un modérateur:

kiki29

XLDnaute Barbatruc
Re : Copier les informations d'un classeur en une seule feuille.

Salut, une autre approche qui devrait être plus véloce
Pour le CodeName ShConcat voir ici
Code:
Option Explciit

Sub ConcatenationFeuilles()
Dim T() As Variant
Dim Ws As Worksheet
    Application.ScreenUpdating = False
    ShConcat.Cells.Clear
    For Each Ws In ThisWorkbook.Worksheets
        If Ws.Name <> ShConcat.Name Then
            T = Ws.UsedRange
            ShConcat.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(UBound(T, 1), UBound(T, 2)) = T
        End If
    Next Ws
    Erase T
    Application.ScreenUpdating = True
End Sub
 
Dernière édition:

ajox01

XLDnaute Junior
Re : Copier les informations d'un classeur en une seule feuille.

Bonsoir tout le monde.

Je ne suis pas trop doué en excel. Je veux convertir un fichier PDF en excel et je voudrais que toutes les pages soient dans la même feuille. Je vous prie de bien vouloir m'aider.
 

Discussions similaires

Statistiques des forums

Discussions
312 364
Messages
2 087 621
Membres
103 623
dernier inscrit
Moltes1502