Boucle sur VBA

Bonjour,

Je débute en VBA alors je vais essayer d'être le plus précis et concis possible.

Voilà j'ai un automate qui calcule des puissances toutes les minutes tous les jours.
Dans ma colonne B figure la date et l'heure (02/09/2015 00:00).
J'ai fais 2 petites formules pour extraire le jour et le mois de cette colonne.
L'extraction va de A23 à O90356
Les jours vont de 1 à 31 et les mois de 9 à 11. (Attention, en novembre je n'ai que 3 jours).
Donc je filtre sur le jour 1 du mois 9, j'ai 1440 lignes (60min*24h par jours)
Ensuite, j'aimerai créer une boucle permettant de faire ce processus:

Je filtre sur jour 1 et mois 9 => Je sélectionne de A23:O1463 => Je copie => Je colle la sélection dans une nouvelle Feuille que je nomme (150901: AAMMJJ).

Je répète ce processus 63 fois (30 jours en Septembre, 31 en octobre et 3 en novembre)

Merci de votre aide

PS: Je ne peux vous donner mon extraction excel c'est professionnel

2 réponses

  1. RE
    Voici, comme vous n'avez pas précisé, quels étaient les 3 jours de novembre, j'ai fait du 1 au 3, à vous de l'adapter si ce n'est pas ça.
    Sub RecopieZoneFiltée()
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Set f1 = Sheets(ActiveSheet.Name)
        Annee = Year(Date)
        
        For m = 9 To 11
            If m = 9 Then
                DerJour = 31
                Mois = "09"
            ElseIf m = 10 Then
                DerJour = 30
                Mois = 10
            ElseIf m = 11 Then
                DerJour = 3
                Mois = 11
            End If
            For j = 1 To DerJour
                If j < 10 Then Jour = "0" & j Else Jour = j
                f1.Select
                ActiveSheet.AutoFilterMode = False
                ActiveSheet.Range("$P$22:$Q$91079").AutoFilter Field:=1, Criteria1:=j
                ActiveSheet.Range("$P$22:$Q$91079").AutoFilter Field:=2, Criteria1:=m
                NbCol = [B22].End(xlToRight).Column
                Range("_FilterDataBase").Offset(0, -14).Resize(, NbCol).SpecialCells(xlCellTypeVisible).Copy
                Sheets.Add After:=ActiveSheet
                ActiveSheet.Select
                ActiveSheet.Name = Right(Annee, 2) & Mois & Jour
                Range("A1").Select
                ActiveSheet.Paste
            Next j
        Next m
        Application.Calculation = xlCalculationAutomatic
    End Sub
    
    Cdlt
    0
    1. Bonjour
      Je ne peux vous donner mon extraction excel c'est professionnel rien ne vous empêche de mettre des données non confidentielles.
      Cependant, vous pouvez toujours utiliser l'enregistreur de macros, faite au moins 2 à 3 cycles complets de vos manipulations et coller le résultat ici dans votre prochaine réponse. il ne restera qu'à faire une boucle pour que cela se reproduise 63 fois.
      Cdlt
      0
      1. C'est surtout pour la boucle je fais appel à vous
        J'ai déjà utilisé l'enregistreur de Macro et en bidouillant un peu je vais arriver à ce que je veux.

        Mais je ne sais pas comment créer une boucle.
        Si vous pouvez m'aider sur celà
        0
      2. Je répète: collez ici le résultat de l'enregistrement de la macro
        0
      3. Sub Macro3()
        '
        ' Macro3 Macro
        '

        '
        ActiveSheet.Range("$P$22:$Q$91079").AutoFilter Field:=1, Criteria1:="2"
        ActiveSheet.Range("$P$22:$Q$91079").AutoFilter Field:=2, Criteria1:="9"
        Range("B22").Select
        Range(Selection, Selection.End(xlToRight)).Select
        Range("B22:O22").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Sheets.Add After:=ActiveSheet
        Sheets("Feuil2").Select
        Sheets("Feuil2").Name = "150902"
        Range("A1").Select
        ActiveSheet.Paste
        End Sub

        Le nom de la feuille serai mis à jour en fonction du jour et du mois sélectionné dans le filtre
        0