Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

masque ligne si date dans la cellule différente du mois courant

2 réponses
Avatar
J
Bonjour à tous
j'ai une macro qui me masque bien des lignes dont la cellule B est vide,
mais comment masquer ces lignes si la date (format jj/mm/aaaa) qu'elle
contient montre que cette date n'est pas du mois en cours??

Sub MasqueLignesSiDateAncienneB()
Range("B7:B300").Select
For Each ligne In ActiveSheet.UsedRange.Rows
If ligne.Cells(1, 2).Value = 0 Then
' si la date dans la cellule de la colonne B n'est pas de ce mois
' la ligne est masquée
ligne.EntireRow.Hidden = True
End If
Next
End Sub

2 réponses

Avatar
Clément Marcotte
Bonjour,

J'ai testé sur 4 lignes au lieu au lieu de 294. mais cela marche chez
moi comme cela. Chez moi ton UsedRange me ramène des valeurs de date à
0


Sub MasqueLignesSiDateAncienneB()
Dim ligne As Range, i As Integer
'cela ne marche pas chez moi
'For Each ligne In ActiveSheet.UsedRange.Rows
'Cela marche chez moi
For i = 7 To 10 'Tu pourras mettre 300 au besoin
If Month(CDate(Cells(i, 2).Value)) <> Month(Date) Then
' si la date dans la cellule de la colonne B n'est pas de ce mois
' la ligne est masquée
Rows(i).EntireRow.Hidden = True
End If
Next

End Sub

"J@@" a écrit dans le message de
news:
Bonjour à tous
j'ai une macro qui me masque bien des lignes dont la cellule B est
vide,

mais comment masquer ces lignes si la date (format jj/mm/aaaa)
qu'elle

contient montre que cette date n'est pas du mois en cours??

Sub MasqueLignesSiDateAncienneB()
Range("B7:B300").Select
For Each ligne In ActiveSheet.UsedRange.Rows
If ligne.Cells(1, 2).Value = 0 Then
' si la date dans la cellule de la colonne B n'est pas de ce mois
' la ligne est masquée
ligne.EntireRow.Hidden = True
End If
Next
End Sub


Avatar
J
Bonjour Clément et merci
j'ai adapté ton code (en fait j'ai une feuille qui compile automatiquement
pleins de lignes avec dates en B, et début de mois, je cherche à tirer un
état de tout ce qui se réfère au mois précédent.
je n'avais pas pensé que le test sur le mois seul ne me filtrait pas les
dates de l'année passée.
Ce code a l'air de bien fonctionner (j'espère que je n'y ai pas introduit
d'erreur).
Encore merci,
@+
J@@ (qui t'envoie un peu de chaud soleil à Amos :-)

Sub MasqueLignesSiDateAncienneB()
Dim ligne As Range, i As Integer
For i = 7 To 30 'Tu pourras mettre 300 au besoin
If Year(CDate(Cells(i, 2).Value)) < Year(Date) Or _
Month(CDate(Cells(i, 2).Value)) < Month(Date) - 1 Or _
Month(CDate(Cells(i, 2).Value)) = Month(Date) Then
' si la date dans la cellule de la colonne B n'est pas du mois dernier
' ou est de l'année dernière
' la ligne est masquée
Rows(i).EntireRow.Hidden = True
End If
Next
End Sub


"Clément Marcotte"
J'ai testé sur 4 lignes au lieu au lieu de 294. mais cela marche chez
moi comme cela. Chez moi ton UsedRange me ramène des valeurs de date à
0


Sub MasqueLignesSiDateAncienneB()
Dim ligne As Range, i As Integer
'cela ne marche pas chez moi
'For Each ligne In ActiveSheet.UsedRange.Rows
'Cela marche chez moi
For i = 7 To 10 'Tu pourras mettre 300 au besoin
If Month(CDate(Cells(i, 2).Value)) <> Month(Date) Then
' si la date dans la cellule de la colonne B n'est pas de ce mois
' la ligne est masquée
Rows(i).EntireRow.Hidden = True
End If
Next

End Sub

"J@@" <
j'ai une macro qui me masque bien des lignes dont la cellule B est vide,
mais comment masquer ces lignes si la date (format jj/mm/aaaa) qu'elle
contient montre que cette date n'est pas du mois en cours??

Sub MasqueLignesSiDateAncienneB()
Range("B7:B300").Select
For Each ligne In ActiveSheet.UsedRange.Rows
If ligne.Cells(1, 2).Value = 0 Then
' si la date dans la cellule de la colonne B n'est pas de ce mois
' la ligne est masquée
ligne.EntireRow.Hidden = True
End If
Next
End Sub