Boucle sur VBA

Holtlion31 Messages postés 29 Statut Membre -  
Frenchie83 Messages postés 2254 Statut Membre -
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. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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. Holtlion31 Messages postés 29 Statut Membre
       
      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. Frenchie83 Messages postés 2254 Statut Membre 339
       
      Je répète: collez ici le résultat de l'enregistrement de la macro
      0
    3. Holtlion31 Messages postés 29 Statut Membre
       
      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
  2. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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