Microsoft 365 VBA recopie données onglets entre deux dates

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 !

Paddy33000

XLDnaute Nouveau
Bonjour,
Je souhaiterai créer une macro ou un filtre élaboré qui,lorsque dans la feuille récap je renseigne une date de début et une date de fin, les données (qui sont dans les 3 feuilles avant la feuille "recap") qui correspondent à ce critère de date se recopie a la suite a partir de la cellule A10 de la page "recap".
Aussi lorsque je change de date début et date de fin, la macro efface le résultat précédent et copie les données actualisées.
En pj fichier exemple
Merci pour votre aide
 

Pièces jointes

Bonsoir,
Faut-il absolument du vba ?
Cela peut se faire également avec des fonctions Excel (ASSEMB.V, FILTRE, TRIER, etc ...) (cf fichier joint en tant qu'idée)
ou en PowerQuery également.

Petit conseil : utiliser les tableaux structurés, c'est, me semble-t-il plus "propre" 😉

Bonne soirée
Laurent
 

Pièces jointes

Bonsoir Paddy33000, Laurent78,

Le code (classique) de la feuille RECAP :
VB:
Private Sub Worksheet_Activate()
Worksheet_Change [A2]
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A2:B2]) Is Nothing Then Exit Sub
Dim lig&, dat1, dat2, w As Worksheet
lig = 6 '1ère ligne à renseigner
dat1 = [A2].Value2
dat2 = [B2].Value2
Application.ScreenUpdating = False
Range("A" & lig & ":E" & Rows.Count).Delete xlUp 'RAZ
If Not IsNumeric(CStr(dat1)) Or Not IsNumeric(CStr(dat2)) Then Exit Sub
For Each w In Worksheets
    If UCase(w.Name) <> "RECAP" Then
        With w.Range("A5").CurrentRegion
            .AutoFilter 1, ">=" & dat1, xlAnd, "<=" & dat2
            .Copy Cells(lig, 1)
            .AutoFilter
            Cells(lig, 1).Resize(, 5).Delete xlUp
            lig = Cells(Rows.Count, 1).End(xlUp).Row + 1
        End With
    End If
Next
End Sub
A+
 

Pièces jointes

Laurent,
Et si dans les feuilles qui sont avant récap, certaines feuilles n'ont que la colonne montant et pas les 2 autres. Imaginons que la feuil3 pour les montants n'a que la colonne "Montant 1".Comment faire pour que la formule s'adapte?
Merci pour votre retour
 
Laurent,
Et si dans les feuilles qui sont avant récap, certaines feuilles n'ont que la colonne montant et pas les 2 autres. Imaginons que la feuil3 pour les montants n'a que la colonne "Montant 1".Comment faire pour que la formule s'adapte?
Merci pour votre retour
Avec la macro, il est possible de n'avoir qu'une colonne et la macro fonctionne quand meme, mais pas si avec le premier exemple (formule sans vba).
 
Bon ce n'est pas trop l'usine à gaz, il suffit de copier-coller les colonnes une par une :
VB:
Private Sub Worksheet_Activate()
Worksheet_Change [A2]
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A2:B2]) Is Nothing Then Exit Sub
Dim lig&, dat1, dat2, w As Worksheet, col%, i As Variant
lig = 6 '1ère ligne à renseigner
dat1 = [A2].Value2
dat2 = [B2].Value2
Application.ScreenUpdating = False
Rows(lig & ":" & Rows.Count).Delete 'RAZ
If Not IsNumeric(CStr(dat1)) Or Not IsNumeric(CStr(dat2)) Then Exit Sub
For Each w In Worksheets
    If UCase(w.Name) <> "RECAP" Then
        With w.Range("A5").CurrentRegion
            .AutoFilter 1, ">=" & dat1, xlAnd, "<=" & dat2
            For col = 1 To .Columns.Count
                i = Application.Match(.Cells(1, col), Rows(5), 0)
                If IsNumeric(i) Then .Columns(col).Copy Cells(lig, i) 'copie-colle chaque colonne
            Next col
            .AutoFilter
            Rows(lig).Delete
            lig = Cells(Rows.Count, 1).End(xlUp).Row + 1
        End With
    End If
Next w
End Sub
Mais il faut que les en-têtes de colonnes se retrouvent exactement dans la feuille RECAP.
 

Pièces jointes

Dernière édition:
Laurent,
Et si dans les feuilles qui sont avant récap, certaines feuilles n'ont que la colonne montant et pas les 2 autres. Imaginons que la feuil3 pour les montants n'a que la colonne "Montant 1".Comment faire pour que la formule s'adapte?
Merci pour votre retour
Bonjour,
Si je comprends bien, toutes les feuilles auraient au minimum les colonnes DATE, LIBELLE, et au moins une colonnes MONTANT, mais par forcément MONTANT1, MONTANT2 ou MONTANT3, est-ce bien cela ?
Si oui, supposons qu'une feuille n'ait que MONTANT2 et une autre que MONTANT3, dans le récap, faut-il tout de même les 3 colonnes MONTANT1, MONTANT2 et MONTANT3 ?

Arrivé ici, je pense qu'il nous faudrait un peu plus d'info sur le projet. Parce que, que cela soit en formules, en VBA, en PowerQuery, nous risquons de revoir notre copie en fonction de du projet.
 
@Laurent78 le fichier du post #7 me paraît clair c'est pourquoi j'ai donné la solution du post #11.
Possible, mais, d'expérience, je me "méfie". N'ayant qu'une ébauche du fichier, qui a d'ailleurs changé entre le post#1 et #7, je me permettais de poser quelques questions complémentaires à Paddy, cela ne remet certainement pas ta proposition en question. Cdlt.
 
Comme ce forum est un lieu d'échange, je me suis demandé si il était possible d'utiliser les fonctions Choisircols, trier, filter, etc ...., sans vba, pour le problème évoqué par Paddy.
Vous trouverez en pj une classeur avec quelques idées.
L'idée est de faire en sorte que si les 3 tableaux n'ont pas les mêmes colonnes (en nombre et/ou en nom et/ou en ordre) que cela fonctionne tout de même (si je ne me suis pas planté bien sûr).

Donc, on récupère la liste de tous les noms des champs des 3 tableaux (ASSEM.H), et on supprime les doublons (UNIQUE).
Chaque tableau à une colonne/champ intitulé vide; cette colonne servira à combler si besoin une colonne manquante. Par exemple, si dans le TableauB la colonne MONTANT1 n'existe pas elle sera émulée par la colonne vide.

Pas certain d'être très clair.
Cela est juste un partage d'idée pour ceux que cela intéresserait. Quelques ajustements sont certainement nécessaires.
@+
 

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

Réponses
4
Affichages
122
Réponses
1
Affichages
246
Retour