Boucle sur VBA

Fermé
Holtlion31 Messages postés 26 Date d'inscription jeudi 6 février 2014 Statut Membre Dernière intervention 1 juin 2016 - 4 nov. 2015 à 10:07
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 4 nov. 2015 à 16:57
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 lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
4 nov. 2015 à 11:00
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 jeudi 6 février 2014 Statut Membre Dernière intervention 1 juin 2016
4 nov. 2015 à 11:21
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 lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
4 nov. 2015 à 11:37
Je répète: collez ici le résultat de l'enregistrement de la macro
0
Holtlion31 Messages postés 26 Date d'inscription jeudi 6 février 2014 Statut Membre Dernière intervention 1 juin 2016
4 nov. 2015 à 14:31
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 lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
4 nov. 2015 à 16:57
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