A voir également:
- VBA - Dernière date du mois
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Supprimer dernière page word - Guide
- Dernière version chrome - Accueil - Applications & Logiciels
- Formule excel date + 6 mois - Forum Excel
- Formation 600 heures en mois ✓ - Forum Bureautique
2 réponses
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+
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.
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,
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