Comment consolider les données de tous les mois sur une feuil recap

  • Initiateur de la discussion Initiateur de la discussion BArack07
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

BArack07

XLDnaute Nouveau
Bonjour,
EN effet, j'ai un soucis, j'e ne connais pas bien VBA et j'arrive pas à le faire sur Excel. évidemment j'ai cherché sur le forum mes j'ai pas trouvé un exemple qui colle à ma demande. je sollicite votre aide svp.

j'ai créé un fichier Excel avec 12 feuilles (mois de l'année). j'ai rajouté une 13 -ème feuilles qui s'appelle "recap", sur laquelle j'aimerais avoir l'ensemble des données saisies sur les 12 autres feuilles et de manière automatique.
le soucis est que dès fois je suis amener à corriger/rajouter des données sur une feuille antérieure.
j'aimerais avoir une solution svp, soit sur Excel ou sur VBA.
NB: le nombre de ligne par mois est variable.
ci-joint, le fichier Excel.

Merci d'avance
 

Pièces jointes

Bonjour BArack07, bienvenue sur XLD,

Fichier joint avec cette macro dans la feuille "Recap" (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Activate()
Dim w As Worksheet, h&, hs&
Application.ScreenUpdating = False
Rows("3:" & Rows.Count).Delete 'RAZ
For Each w In Worksheets
    If w.Name <> Me.Name Then
        With w.[A2].CurrentRegion
            h = .Rows.Count - 1
            If h > 0 Then
                .Offset(1).Resize(h).Copy Range("A3").Offset(hs)
                hs = hs + h
            End If
        End With
    End If
Next
End Sub
Elle se déclenche quand on active la feuille.

A+
 

Pièces jointes

Bonjour BArack07, bienvenue sur XLD,

Fichier joint avec cette macro dans la feuille "Recap" (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Activate()
Dim w As Worksheet, h&, hs&
Application.ScreenUpdating = False
Rows("3:" & Rows.Count).Delete 'RAZ
For Each w In Worksheets
    If w.Name <> Me.Name Then
        With w.[A2].CurrentRegion
            h = .Rows.Count - 1
            If h > 0 Then
                .Offset(1).Resize(h).Copy Range("A3").Offset(hs)
                hs = hs + h
            End If
        End With
    End If
Next
End Sub
Elle se déclenche quand on active la feuille.

A+
Ohhhh, c'est magnifique
Merci pour la rapidité et l'efficacité
c'est pile poil ce que je voulais.

Merci
 
Bonjour BArack07, bienvenue sur XLD,

Fichier joint avec cette macro dans la feuille "Recap" (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Activate()
Dim w As Worksheet, h&, hs&
Application.ScreenUpdating = False
Rows("3:" & Rows.Count).Delete 'RAZ
For Each w In Worksheets
    If w.Name <> Me.Name Then
        With w.[A2].CurrentRegion
            h = .Rows.Count - 1
            If h > 0 Then
                .Offset(1).Resize(h).Copy Range("A3").Offset(hs)
                hs = hs + h
            End If
        End With
    End If
Next
End Sub
Elle se déclenche quand on active la feuille.

A+
Bonjour Job75
En effet, depuis la dernière fois, j'ai essayer d'apporter quelque réglage sur le fichier que tu m'avais fais, mais j'arrive pas. Par exemple, j'aurai besoin de ramener la ligne d'entête (ligne 3) à la 14 -ème ligne. dès que je le fais, ça ne marche plus comme avant. du coup j'ai récréé un nouveau fichier que j'ai joint et j'ai besoin de ton aide stp.
 

Pièces jointes

Bonjour BArack07,

L'adaptation est pourtant évidente :
VB:
Private Sub Worksheet_Activate()
Dim w As Worksheet, h&, hs&
Application.ScreenUpdating = False
Rows("15:" & Rows.Count).Delete 'RAZ
For Each w In Worksheets
    If w.Name <> Me.Name Then
        With w.[A14].CurrentRegion
            h = .Rows.Count - 1
            If h > 0 Then
                .Offset(1).Resize(h).Copy Range("A15").Offset(hs)
                hs = hs + h
            End If
        End With
    End If
Next
End Sub
A+
 

Pièces jointes

Bonjour BArack07,

L'adaptation est pourtant évidente :
VB:
Private Sub Worksheet_Activate()
Dim w As Worksheet, h&, hs&
Application.ScreenUpdating = False
Rows("15:" & Rows.Count).Delete 'RAZ
For Each w In Worksheets
    If w.Name <> Me.Name Then
        With w.[A14].CurrentRegion
            h = .Rows.Count - 1
            If h > 0 Then
                .Offset(1).Resize(h).Copy Range("A15").Offset(hs)
                hs = hs + h
            End If
        End With
    End If
Next
End Sub
A+
Merci beaucoup JOB75, vous êtes génial et sympa sur cette page
si je rajoute une nouvelle feuille qui constituera ma base de donnée pour faire une liste déroulante sur les autres feuilles, comment faire en sorte que ma BDD ne soit pas pris en compte dans mon onglet synthèse stp
Regarde ma feuille de janvier avec les liste déroulante

merci d'avance
 
Merci beaucoup JOB75, vous êtes génial et sympa sur cette page
si je rajoute une nouvelle feuille qui constituera ma base de donnée pour faire une liste déroulante sur les autres feuilles, comment faire en sorte que ma BDD ne soit pas pris en compte dans mon onglet synthèse stp
Regarde ma feuille de janvier avec les liste déroulante

merci d'avance
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour