Séparer des données mois par mois, 1 feuille par mois
florz
Messages postés1Date d'inscriptionjeudi 1 avril 2010StatutMembreDernière intervention 1 avril 2010
-
1 avril 2010 à 11:07
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
1 avril 2010 à 11:16
Bonjour,
je cherche à créer une macro qui réaliserait les tâches suivantes ; à l'origine j'ai une grosse feuille excel avec les dates au format dd/mm/yyyy hh:mm sur une colonne tout à gauche ; puis des données relatives à ces dates sur les colonnes à droite de la colonne des dates.
En travaillant sur ce tableau j'ai fait un petit truc qui permet de vérifier la cohérence de la plage de dates saisies, c'est à dire que les mois et les années se suivent dans le bon ordre :
'sélectionne la première date dans la feuille des extractions
Sheets("essais").Select
Range("B7").Select
' boucle do until cellule vide (fin de la plage des dates)
Do Until IsEmpty(ActiveCell)
'vérifier les données à l'intérieur d'un mois
If Month(ActiveCell) Month(ActiveCell.Offset(-1, 0)) And Year(ActiveCell) Year(ActiveCell.Offset(-1, 0)) Then
ActiveCell.Offset(1, 0).Select
'vérifier les données à l'intérieur d'une année
ElseIf (Month(ActiveCell) Month(ActiveCell.Offset(-1, 0)) + 1 And Year(ActiveCell) Year(ActiveCell.Offset(-1, 0))) Then
ActiveCell.Offset(1, 0).Select
'vérifier si décembre d'une année A est suivi par janvier de l'année A+1
ElseIf (Month(ActiveCell) Month(ActiveCell.Offset(-1, 0)) - 11 And Year(ActiveCell) (Year(ActiveCell.Offset(-1, 0))) + 1) Then
ActiveCell.Offset(1, 0).Select
'Sinon, afficher message d'erreur
Else
MsgBox "SVP veuillez vérifier la plage de dates saisie": ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub
Maintenant je cherche à réaliser la chose suivante :
séparer les données, mois par mois, en créant autant de nouvelles feuilles que de mois, chaque feuille portant comme nom l'année et le mois de la plage de données ainsi séparée.
Pour le moment j'ai fait ce truc qui est censé créer une nouvelle feuuille, vide, par mois, mais je sais qu'en utilisant ActiveCell ça ne peut pas marcher ; je me demande aussi si il n'y a pas une manière plus futée de faire ce que je veux...
'sélectionne la première date dans la feuille des extractions
Sheets("essais").Select
Range("B7").Select
'premier mois extraction = mois premier jour cycle
Do Until IsEmpty(ActiveCell)
'si le mois et l'année ne changent pas => parcourt les valeurs
If Month(ActiveCell) Month(ActiveCell.Offset(-1, 0)) And Year(ActiveCell) Year(ActiveCell.Offset(-1, 0)) Then
ActiveCell.Offset(1, 0).Select
'si le mois change => créée une nouvelle feuille
ElseIf Month(ActiveCell) Month(ActiveCell.Offset(-1, 0)) + 1 And Year(ActiveCell) Year(ActiveCell.Offset(-1, 0)) Then