Extraction MM/AA depuis JJ/MM/AA pour statistiques mensuelles
J0K068
Messages postés32Date d'inscriptionmercredi 23 février 2011StatutMembreDernière intervention 8 mai 2018
-
7 mai 2011 à 13:30
J0K068
Messages postés32Date d'inscriptionmercredi 23 février 2011StatutMembreDerniè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
A voir également:
Extraction MM/AA depuis JJ/MM/AA pour statistiques mensuelles
J0K068
Messages postés32Date d'inscriptionmercredi 23 février 2011StatutMembreDerniè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
J0K068
Messages postés32Date d'inscriptionmercredi 23 février 2011StatutMembreDerniè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 ......
Phalalis
Messages postés83Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention19 février 20121 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