XL 2019 Supprimer lignes après échéance

  • Initiateur de la discussion Initiateur de la discussion KTM
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

KTM

XLDnaute Impliqué
Bonjour chers tous
Je voudrais supprimer les lignes pour lesquelles l'échéance est dépassée de 28 jours.
Mon code si dessous fonctionne avec plusieurs lignes mais avec une seule ligne j'ai l'impression que quelque chose ne va pas.
Voir mon fichier joint.
VB:
Sub trier()
With ActiveSheet
  If .Range("AW1") = "AUXIL" Then .Columns("AW:AW").Delete
 .Columns("AW:AW").Insert: .Range("AW1") = "AUXIL"
  With .Range("AM2:BA" & .Range("AM" & Rows.Count).End(xlUp).Row)
     .Sort key1:=.Cells(2, 3), order1:=xlAscending, Header:=xlNo
     .Columns(11).FormulaR1C1 = "=IF((R2C37-RC[1])>=R1C37,"""",ROW())"
     .Columns(11).Value = .Columns(11).Value
     .Sort key1:=.Cells(2, 11), order1:=xlAscending, Header:=xlNo
     On Error Resume Next
      Intersect(.Columns(11).SpecialCells(xlCellTypeBlanks).EntireRow, .Rows).Clear
  End With
  If .Range("AW1") = "AUXIL" Then .Columns("AW:AW").Delete
End With
End Sub
 

Pièces jointes

Bonjour KTM,

Au lieu de baser les suppressions sur les cellules vides basez-les sur les valeurs d'erreur :
VB:
Sub trier()
With ActiveSheet
    With .Range("AM2:BA" & .Range("AM" & .Rows.Count).End(xlUp).Row)
        If .Row < 2 Then Exit Sub 'sécurité
        .Columns(11).EntireColumn.Insert 'colonne auxiliaire
        .Columns(11).FormulaR1C1 = "=IF((R2C37-RC[1])>=R1C37,""#N/A"",ROW())"
        .Columns(11).Value = .Columns(11).Value
        .Sort key1:=.Cells(1, 11), order1:=xlAscending, Header:=xlNo
         On Error Resume Next
        Intersect(.Columns(11).SpecialCells(xlCellTypeConstants, 16).EntireRow, .Rows).Clear
        .Columns(11).EntireColumn.Delete
    End With
End With
End Sub
Sur la 2ème feuille il n'y aura pas de problème s'il n'y a pas de #N/A en ligne 2.

A+
 
Bonjour KTM,

Au lieu de baser les suppressions sur les cellules vides basez-les sur les valeurs d'erreur :
VB:
Sub trier()
With ActiveSheet
    With .Range("AM2:BA" & .Range("AM" & .Rows.Count).End(xlUp).Row)
        If .Row < 2 Then Exit Sub 'sécurité
        .Columns(11).EntireColumn.Insert 'colonne auxiliaire
        .Columns(11).FormulaR1C1 = "=IF((R2C37-RC[1])>=R1C37,""#N/A"",ROW())"
        .Columns(11).Value = .Columns(11).Value
        .Sort key1:=.Cells(1, 11), order1:=xlAscending, Header:=xlNo
         On Error Resume Next
        Intersect(.Columns(11).SpecialCells(xlCellTypeConstants, 16).EntireRow, .Rows).Clear
        .Columns(11).EntireColumn.Delete
    End With
End With
End Sub
Sur la 2ème feuille il n'y aura pas de problème s'il n'y a pas de #N/A en ligne 2.

A+
Grand merci !!
ça marche.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
514
Réponses
5
Affichages
398
Réponses
6
Affichages
303
Réponses
0
Affichages
378
Réponses
5
Affichages
468
Retour