VBA : Extraction de plusieurs dates pour statistiques mensuelles

J0K0

XLDnaute Nouveau
Bonsoir à tous,

J'expose mon soucis, j'ai une colonne contenant des dates au format JJ/MM/AA, une colonne à côté contenant un code de type "code1" ; "code2" ; "code3" ; etc ... et je cherche à faire des statistiques mensuelles par rapport à ces codes.
Donc dire qu'au mois de janvier 2011 (affiché 01/11), il y a tant de "code1", de "code2", de "code3", etc ... et donc d'en faire des courbes.

Je commence à me débrouiller avec EXCEL et VBA mais là je suis pommé, je ne sais pas comment débuter ce code ...

Une idée de départ ? (pas forcément du code, mais une marche à suivre ...)

Merci - J0K0
 

J0K0

XLDnaute Nouveau
Re : VBA : Extraction de plusieurs dates pour statistiques mensuelles

Bonjour,

Ben en fait, je n'ai pas de début parce que là étant réellement pommé je ne sais pas comment récupérer tous les mois de "01/11", compter le nombre de fois où se trouve le "code1" "code2" "code3" ...., remettre les dates au format JJ/MM/AA, trier ensuite le 02/11, recompter les codes ....
voilà ! tout se situe en fait sur l'extraction MM/AA ......
 

J0K0

XLDnaute Nouveau
Re : VBA : Extraction de plusieurs dates pour statistiques mensuelles

Sinon j'ai déjà le code pour compter .... C'est le mm code pour compter les autres "codes" :
Code:
Sub Code_Accid2()
'Accid   Prompt  Feu Sec.Vic Inond   Animal  Divers  Prev.Acc    Insectes    Gaz
    Dim Accid As Long
    Dim Li As Long
    Dim Tmp As Long
    'ActiveSheet.Columns("E:E").Select
For cal = 8 To ActiveSheet.Range("A10000").End(xlUp).Row
Next cal
c = cal - 2
ActiveSheet.Range("E8:E" & c).Select
    On Error Resume Next
        Call Selection.Find(What:="Accid", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False).Activate

    If Err.Number = 91 Then
        'MsgBox "Pas trouver"
        'Call Err.Clear
    ActiveSheet.Range("F4").Value = 0
    Else
        Li = ActiveCell.Row
        If Li <> 0 Then Accid = Accid + 1
        While Tmp <> Li
            Selection.FindNext(After:=ActiveCell).Activate
            Tmp = ActiveCell.Row
            Accid = Accid + 1
        Wend
ActiveSheet.Range("F4").Value = Accid - 1
        'MsgBox NumFois - 1
    End If
    On Error GoTo 0
End Sub

Merci
 

J0K0

XLDnaute Nouveau
Re : VBA : Extraction de plusieurs dates pour statistiques mensuelles

J'ai un début de code ... mais toujours bloqué au mm endroit !
Pour l'instant, dans la feuille, ça transforme les dates JJ/MM/AA en MM/AA.

Je dois trouver le moyen maintenant de garder juste le mois 01/AA, compter ensuite (ça j'ai le code), puis le mois 02/AA, puis 03/AA, etc ....

Code:
Sub macro_mois_test()
Sheets("Donnees_completes").Select
For cal = 5 To Sheets("donnees_completes").Range("A10000").End(xlUp).Row
Next cal
c = cal - 2
Sheets("donnees_completes").Range("C5:C" & c).Select

'Selection = Format(Date,"mm - aa") ''MARCHE PAS ...
Selection.NumberFormat = "mm/yy"

'A mettre après le comptage des codes pour affichage normal
'Selection.NumberFormat = "dd/mm/yy"
End Sub

Merci
 

Modeste

XLDnaute Barbatruc
Re : VBA : Extraction de plusieurs dates pour statistiques mensuelles

Bonjour J0K0, Victor21,

Ce que Victor te suggérait, c'était de joindre un extrait de ton fichier. Tu parles de
une colonne contenant des dates au format JJ/MM/AA, une colonne à côté contenant un code de type "code1" ; "code2" ; "code3" ; etc
C'est sûr qu'on pourrait re-créer un fichier qui ressemble à ça en assez peu de temps, mais il y a peut-être une particularité dans le tien, que nous ne saurions reproduire (sans savoir) ... et qui ferait que la solution ne serait pas adaptée.
Voilà pourquoi une cinquantaine de lignes de ton fichier serait les bienvenues!

Par ailleurs, tu cherches une solution uniquement par macro??
 

J0K0

XLDnaute Nouveau
[RESOLU] : VBA : Extraction de plusieurs dates pour statistiques mensuelles

Hello ...
Je suis arrivé à mes fins très difficilement avec beaucoup de bidouillage mais ça marche ...
Il y a surement plus simple ...
Voici une partie de mon lonnnnnnng code :)
Code:
''Janvier
Sub stats_janvier()
'sélection de la colonne date de la première date à la dernière date
Sheets("Donnees_completes").Select
For cal = 5 To Sheets("donnees_completes").Range("A10000").End(xlUp).Row
Next cal
c = cal - 1
Sheets("donnees_completes").Range("C5:C" & c).Select

'format des dates de JJ/MM/AA à MM/AA
Selection.NumberFormat = "mm/yy"

'filtre des dates du mois de janvier
annee = Sheets("informations").Range("S4").Value
    Rows("4:4").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=3, Criteria1:="01/" & annee

'comptage + écriture des codes inter mensuels
'Accid   Prompt  Feu Sec.Vic Inond   Animal  Divers  Prev.Acc    Insectes    Gaz
Call Code_Accid_janvier
Call Code_Prompt_janvier
Call Code_Feu_janvier
Call Code_SecVic_janvier
Call Code_Inond_janvier
Call Code_Animal_janvier
Call Code_Divers_janvier
Call Code_PrevAcc_janvier
Call Code_Insectes_janvier
Call Code_Gaz_janvier

'affichage de toutes les dates
Sheets("donnees_completes").Activate
    Rows("4:4").Select
    Selection.AutoFilter
'affichage de la date de MM/AA en JJ/MM/AA
Sheets("Donnees_completes").Select
For cal = 5 To Sheets("donnees_completes").Range("A10000").End(xlUp).Row
Next cal
c = cal - 2
Sheets("donnees_completes").Range("C5:C" & c).Select
Selection.NumberFormat = "dd/mm/yy"
End Sub
Sub Code_Accid_janvier()
'Accid   Prompt  Feu Sec.Vic Inond   Animal  Divers  Prev.Acc    Insectes    Gaz
    Dim Accid As Long
    Dim Li As Long
    Dim Tmp As Long
    
Sheets("Donnees_completes").Select
For cal = 5 To Sheets("donnees_completes").Range("A10000").End(xlUp).Row
Next cal
c = cal - 1
Sheets("donnees_completes").Range("G5:G" & c).Select
    On Error Resume Next
        Call Selection.Find(What:="Accid", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False).Activate

    If Err.Number = 91 Then
        'MsgBox "Pas trouver"
        'Call Err.Clear
    Sheets("Stats_Inter").Range("B38").Value = 0
    Else
        Li = ActiveCell.Row
        If Li <> 0 Then Accid = Accid + 1
        While Tmp <> Li
            Selection.FindNext(After:=ActiveCell).Activate
            Tmp = ActiveCell.Row
            Accid = Accid + 1
        Wend
Sheets("Stats_Inter").Range("B38").Value = Accid - 1
        'MsgBox NumFois - 1
    End If
    On Error GoTo er1
Sheets("Stats_Inter").Activate
Exit Sub
er1: MsgBox "ERREUR : Calculs statistiques mensuelles"
End Sub

Ce n'est qu'une partie, là concernant le code "Accid", -> voir les lignes suivants le :
Code:
Call Code_Accid_janvier

Ensuite, la totalité x12 pour tous les mois ......

Merci - J0K0
 

Staple1600

XLDnaute Barbatruc
Re : VBA : Extraction de plusieurs dates pour statistiques mensuelles

Bonsoir

Il est souvent bénéfique d'éviter les Select

Ainsi ceci
Code:
Sheets("donnees_completes").Range("C5:C" & c).Select

'format des dates de JJ/MM/AA à MM/AA
Selection.NumberFormat = "mm/yy"
peut s'écrire
Code:
'format des dates de JJ/MM/AA à MM/AA
Sheets("donnees_completes").Range("C5:C" & c).NumberFormat = "mm/yy"

Par contre je ne comprends pas cette syntaxe :confused:
Code:
For cal = 5 To Sheets("donnees_completes").Range("A10000").End(xlUp).Row
Next cal
c = cal - 1
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 273
Messages
2 086 694
Membres
103 372
dernier inscrit
BibiCh