XL 2010 Synthèse automatique de plusieurs feuilles

RNS

XLDnaute Nouveau
Bonjour,

J'ai besoin de votre aide. J'ai regardé plusieurs discussions mais aucune ne m'a éclairée.

J'ai dans un fichier quelques onglets qui contiennent un nombre différent de données. Toutefois, elles ont toutes le même gabarit. Le résultat que je recherche, est une consolidation de toutes les lignes des différents onglets dans un même onglet nommé "Synthèse".

Avec le temps, certaines lignes s'ajouteront et d'autres seront supprimées. L'onglet synthèse devra alors s'ajuster aux nouvelles données.

Merci à l'avance !
 

Pièces jointes

  • synthese_aide.xlsx
    11.5 KB · Affichages: 42

Hieu

XLDnaute Impliqué
Salut,

Une solution par macro :
VB:
Sub mlk()
Range(Range("A2"), Selection.End(xlToRight).End(xlDown)).ClearContents
k = 2
For Each s In Sheets
If s.Name <> "Synthese" And s.Name <> "Explications" Then
    For i = 2 To s.Range("a65536").End(xlUp).Row
    s.Rows(i).Copy
    Sheets("Synthese").Rows(k).PasteSpecial
    k = k + 1
    Next i
End If
Next s
End Sub
 

Pièces jointes

  • synthese_aide_v0.xlsm
    24.5 KB · Affichages: 77

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

cf PJ

Copie chaque feuille en une seule fois.

Code:
Sub consolide_onglets()
  Sheets("synthese").[A1].CurrentRegion.Offset(1, 0).Clear
  For s = 3 To Sheets.Count
  Range(Sheets(s).[A2], Sheets(s).[A65000].End(xlUp).End(xlToRight)).Copy [A65000].End(xlUp).Offset(1, 0)
  Next s
End Sub

http://boisgontierjacques.free.fr/pages_site/GestionOnglets.htm#Consolidation

ou

Code:
Sub auto_open()
  Sheets("synthese").Activate
  Sheets("synthese").[A1].CurrentRegion.Offset(1, 0).Clear
  For s = 3 To Sheets.Count
  Range(Sheets(s).[A2], Sheets(s).[A65000].End(xlUp).End(xlToRight)).Copy [A65000].End(xlUp).Offset(1, 0)
  Next s
End Sub

JB
 

Pièces jointes

  • Copie de synthese_aide.xls
    47 KB · Affichages: 52
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour RNS, Hieu, JB, le forum,

Plutôt que de copier les lignes une par une il est beaucoup plus rapide de copier entièrement chaque feuille :
Code:
Private Sub Worksheet_Activate()
Dim a, w As Worksheet, h&
a = Array("Feuil1", "Feuil2") 'CodeNames des feuilles à exclure
Application.ScreenUpdating = False
Rows("2:" & Rows.Count).Delete 'RAZ
For Each w In Worksheets
  If IsError(Application.Match(w.CodeName, a, 0)) Then
    w.UsedRange.Offset(1).Copy Cells(2 + h, 1)
    h = h + w.UsedRange.Rows.Count
  End If
Next
Me.UsedRange.Sort [A1], Header:=xlYes 'tri sur colonne A
End Sub
Bonne journée.
 

RNS

XLDnaute Nouveau
Bonjour,

Je dois avouer que c'est au delà de mes espérances, ça fonctionne vraiment bien.

Sincères remerciement pour vos réponses...

Si je pousse ma chance plus loin, Y aurait moyen d'activer la macro en ouverture de fichier?
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 944
Membres
103 989
dernier inscrit
jralonso