VBA - Dernière date du mois
Fermé
derout
Messages postés
23
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
28 décembre 2009
-
8 mai 2009 à 13:31
derout Messages postés 23 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 28 décembre 2009 - 10 sept. 2009 à 14:12
derout Messages postés 23 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 28 décembre 2009 - 10 sept. 2009 à 14:12
A voir également:
- VBA - Dernière date du mois
- Supprimer dernière page word - Guide
- Publipostage date en anglais ✓ - Forum Excel
- Ajouter 6 mois à une date excel ✓ - Forum Excel
- Trouver une date de naissance gratuit - Forum Webmastering
2 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
8 mai 2009 à 14:01
8 mai 2009 à 14:01
Bonjour,
Essaye avec cette macros..
Marque les dernières lignes des mois et les copies dans la feuil2
A+
Essaye avec cette macros..
Sub MarquerLigne() Dim Lig As Long, DerLig As Long Dim M As Byte, MC As Byte Dim i As Long DerLig = 2 Sheets("Sheet2").Cells.ClearContents With Sheets("Sheet1") .Cells.Interior.ColorIndex = xlNone M = Month(.Cells(2, 2)) For Lig = 2 To .Range("B65536").End(xlUp).Row MC = Month(.Cells(Lig, 2)) If MC > M Or (MC = 1 And M = 12) Then .Rows(Lig - 1).Copy Sheets("Sheet2").Rows(DerLig) DerLig = DerLig + 1 .Rows(Lig - 1).Interior.ColorIndex = 3 M = MC End If Next Lig End With End Sub
Marque les dernières lignes des mois et les copies dans la feuil2
A+
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
9 mai 2009 à 04:57
9 mai 2009 à 04:57
M et MC font tout les deux références au mois, en fait quand MC > M c'est que l'ont a changer de mois, donc la ligne précédante est le dernier jour du mois qui est dans M.
Il peu y avoir changement d'année, j'ai pris ça en compte avec Or (MC = 1 And M = 12)
A+
PS: Le truc pour apprendre le VBA... L'éditeur de macro et la touche F1 (aide)
Quand tu a fait une macro avec l'éditeur sélectionner un mot (double clic dessus) et taper F1 pour avoir la définition de ce mot.
Il peu y avoir changement d'année, j'ai pris ça en compte avec Or (MC = 1 And M = 12)
A+
PS: Le truc pour apprendre le VBA... L'éditeur de macro et la touche F1 (aide)
Quand tu a fait une macro avec l'éditeur sélectionner un mot (double clic dessus) et taper F1 pour avoir la définition de ce mot.
derout
Messages postés
23
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
28 décembre 2009
1
11 mai 2009 à 15:49
11 mai 2009 à 15:49
Ok,
Je te remercie pour tes éclaircissements.
Derout
Je te remercie pour tes éclaircissements.
Derout
derout
Messages postés
23
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
28 décembre 2009
1
10 sept. 2009 à 14:12
10 sept. 2009 à 14:12
salut lermite,
J'ai constaté que la macro ne fonctionne plus lorsqu'il y a des trous dans l'historique (s'il manquent des mois)
à cause de la condition suivante:
If MC > M Or (MC = 1 And M = 12) Then
.Rows(Lig - 1).Copy Sheets("Sheet2").Rows(DerLig)
En effet, si la date passe par exemple de 18/07/2004 à 25/01/2006 alors la condition n'est plus respectée et la ligne nécessaire n'est pas sélectionnée.
J'ai essaye d'intégrer une condition années.
Voici ce que j'ai fait:
Sub MarquerLigne()
Dim Lig As Long, DerLig As Long
Dim M As Byte, MC As Byte
Dim Y As Integer, YC As Integer
Dim i As Long
DerLig = 2
Sheets("Sheet2").Cells.ClearContents
With Sheets("Sheet1")
.Cells.Interior.ColorIndex = xlNone
M = Month(.Cells(2, 2))
Y = Year(.Cells(2, 2))
For Lig = 2 To .Range("B65536").End(xlUp).Row
MC = Month(.Cells(Lig, 2))
YC = Year(.Cells(Lig, 2))
If MC > M Or (MC = 1 And M = 12) Then
.Rows(Lig - 1).Copy Sheets("Sheet2").Rows(DerLig)
DerLig = DerLig + 1
.Rows(Lig - 1).Interior.ColorIndex = 3
M = MC
If MC < M Or (MC = 1 And M = 12) And YC > Y Or (Y = 2000 And YC = 2009) Then
.Rows(Lig - 1).Copy Sheets("Sheet2").Rows(DerLig)
DerLig = DerLig + 1
.Rows(Lig - 1).Interior.ColorIndex = 3
End If
End If
Next Lig
End With
End Sub
Le code que j'ai ajouté n'a aucun impact et les lignes ne sont pas sélectionnées. Est ce que tu vois la cause du problème?
Qu'est ce que ça signifie Derlig?
Merci,
J'ai constaté que la macro ne fonctionne plus lorsqu'il y a des trous dans l'historique (s'il manquent des mois)
à cause de la condition suivante:
If MC > M Or (MC = 1 And M = 12) Then
.Rows(Lig - 1).Copy Sheets("Sheet2").Rows(DerLig)
En effet, si la date passe par exemple de 18/07/2004 à 25/01/2006 alors la condition n'est plus respectée et la ligne nécessaire n'est pas sélectionnée.
J'ai essaye d'intégrer une condition années.
Voici ce que j'ai fait:
Sub MarquerLigne()
Dim Lig As Long, DerLig As Long
Dim M As Byte, MC As Byte
Dim Y As Integer, YC As Integer
Dim i As Long
DerLig = 2
Sheets("Sheet2").Cells.ClearContents
With Sheets("Sheet1")
.Cells.Interior.ColorIndex = xlNone
M = Month(.Cells(2, 2))
Y = Year(.Cells(2, 2))
For Lig = 2 To .Range("B65536").End(xlUp).Row
MC = Month(.Cells(Lig, 2))
YC = Year(.Cells(Lig, 2))
If MC > M Or (MC = 1 And M = 12) Then
.Rows(Lig - 1).Copy Sheets("Sheet2").Rows(DerLig)
DerLig = DerLig + 1
.Rows(Lig - 1).Interior.ColorIndex = 3
M = MC
If MC < M Or (MC = 1 And M = 12) And YC > Y Or (Y = 2000 And YC = 2009) Then
.Rows(Lig - 1).Copy Sheets("Sheet2").Rows(DerLig)
DerLig = DerLig + 1
.Rows(Lig - 1).Interior.ColorIndex = 3
End If
End If
Next Lig
End With
End Sub
Le code que j'ai ajouté n'a aucun impact et les lignes ne sont pas sélectionnées. Est ce que tu vois la cause du problème?
Qu'est ce que ça signifie Derlig?
Merci,
8 mai 2009 à 18:45
Splendide, ta macro marche parfaitement, merci pour ton aide.
J'essaie de comprendre le code et si je ne m'abuse, Dim M As Byte, MC As Byte fait reference à jour et mois. Qu'en est il des années?
Comment devrais-je modifier la macro pour que les années soient prises en compte (dans le cadre du traitement d'un fichier comportant un historique plus vaste)?
Est-il possible d'obtenir les définitions (un lexique par exemple) des termes employé en VBA (ceux qui s'affichent en menu deroulant)?
Merci pour ton aide
Derout