Supprimer ligne si année passée

Bonjour

Je voudrais supprimer une ligne si l'année de la date en cellule E est passée :

    If IsDate(Cells(lig, 5)) And Year(Cells(lig, 5)) < Year(Now) Then Rows(lig).Delete

Ma formulation est elle mauvaise où dois je déclarer une variable à cela ?

Merci de votre aide

Bonjour,

à lire ça parait correct.
Dans la mesure où tu as une vraie date et non une date en texte (s'aligne à gauche)
Quel est ton soucis ?
eric

Bonjour

Erreur 1004 :

Sub Afficher_Taux()

  Dim DLig As Long
  Dim I As Integer

  Sheets("Taux d'occupation").Visible = True

  Worksheets("Taux d'occupation").Range("A2:E200").Clear

  ' Récupérer la dernière ligne du tableau
  DLig = Range("A" & Rows.Count).End(xlUp).Row

  Range("A2:A" & DLig & ",B2:B" & DLig & ",D2:D" & DLig & ",M2:M" & DLig).Copy
  'Ouvre le fichier ou l'on colle les données

        With Sheets("Taux d'occupation").Range("A2").End(xlUp)(2)
        .PasteSpecial Paste:=xlPasteValues, Transpose:=False
        End With

  Sheets("Archives").Activate

  DLig = Range("A" & Rows.Count).End(xlUp).Row

  Range("A68:A" & DLig & ",B68:B" & DLig & ",D68:D" & DLig & ",M68:M" & DLig & ",BE68:BE" & DLig).Copy
  'Ouvre le fichier ou l'on colle les données

        With Sheets("Taux d'occupation").Range("A69").End(xlUp)(2)
        .PasteSpecial Paste:=xlPasteValues, Transpose:=False
        End With

    Sheets("Taux d'occupation").Select

            Columns("A:A").Select
    Selection.Font.Bold = False
    Selection.Font.Bold = True
    Columns("B:B").Select
    Selection.Font.Bold = False
    Selection.Font.Bold = True
    ActiveWindow.SmallScroll Down:=-12
    Columns("C:E").Select
    Selection.NumberFormat = "dd/mm/yy;@"
    With Selection
        .HorizontalAlignment = xlLeft
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With

    If IsDate(Cells(Lig, 5)) And Year(Cells(Lig, 5)) < Year(Now) Then Rows(Lig).Delete <======== ICI

    Sheets("Taux d'occupation").Visible = True
    Sheets("Taux d'occupation").Activate

End Sub

C'est bien un format date

Salut Theyoshi,
Salut Eriiic,

je suppose que ta Sub se trouve dans un Module ?
Avec tous tes Activate, Select et Visible = True qui s'entremêlent joyeusement, j'ai bien l'impression que ta macro a perdu le nord et tape dans une mauvaise feuille.
Le code fonctionne sans souci (sur une feuille d'essai) quoique j'aurais plutôt tendance à d'abord tester la validité de la valeur-date de la cellule puis de faire le calcul de la condition.


A+

Bonjour

Voici un extrait de la feuille et de la macro pour mieux cerner le problème.

Merci de votre aide

12classeur3.xlsm (42.21 Ko)

Comme je te le disais, cela fonctionne très bien à partir du moment où la macro sait où taper...

Sub Afficher_Taux(ByVal Lig%)
'
With Worksheets("Taux d'occupation")
    If IsDate(.Cells(Lig, 5)) And Year(.Cells(Lig, 5)) < Year(Now) Then .Rows(Lig).Delete
End With
'
End Sub

Clique sur une ligne adéquate..

20theyoshi.xlsm (41.85 Ko)


A+

Pas mieux, toujours les mêmes erreurs.

Dans ce cas comment faire pour ne copier que les valeurs en colonne BE dont la date contient l'année en cours.

Merci de votre soutien

Rechercher des sujets similaires à "supprimer ligne annee passee"