Boucle sur VBA

Holtlion31 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   -
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

Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
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
Holtlion31 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
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
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
Je répète: collez ici le résultat de l'enregistrement de la macro
0
Holtlion31 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
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
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
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