Extraction MM/AA depuis JJ/MM/AA pour statistiques mensuelles

J0K068 Messages postés 32 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 8 mai 2018 - 7 mai 2011 à 13:30
J0K068 Messages postés 32 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 8 mai 2018 - 10 mai 2011 à 04:47
Bonjour à toutes et 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 ...)

Un début de code pour compter le nombre de fois où apparait un certain mot .... macro réutiliser pour tous les mots souhaités ... Manque plus que l'extraction MM/AA avant de lancer ces macros ...
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

4 réponses

J0K068 Messages postés 32 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 8 mai 2018
7 mai 2011 à 15:19
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 ....

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
0
J0K068 Messages postés 32 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 8 mai 2018
7 mai 2011 à 21:00
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 :)

''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 :
Call Code_Accid_janvier


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

Merci - J0K0
0
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
9 mai 2011 à 18:24
J'arrive un peu tard sur le sujet...

Si j'ai bien compris tu filtre tes colonnes en fonction du mois et de l'année..

Je serait toi je ferais quelque chose du genre...
On error goto Tag
Creation de collection pour chaque mois
Une boucle de parcours du fichier jusqu'a nombre de ligne
Select case Mois
       Case 1
             Instruction genre collectionJanvier.add
       ....
       Case 12
             Instruction
End select
Fin boucle
Enfin Parcours de la collection du mois sélectionné
exit sub
Tag :
Traitement numéro erreur
resume next
End sub


Ce n'est qu'un exemple...au moins avec ton select case ta pas 12 procédure identique
0
J0K068 Messages postés 32 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 8 mai 2018
10 mai 2011 à 04:47
ouaip un peu !
mieux vaut tard que jamais mais là dommage j'ai déjà tout écris ... long mais ça marche !

bref .......

merci quand mm ;)
0
Rejoignez-nous