Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Supprimer ligne si date aujourdhui()

J- Paul

XLDnaute Nouveau
Bonjour à tous
Dans le classeur joint je voudrais supprimer la ligne si la date de création colonne A est égale ou supérieure à la date aujourd'hui
Merci
 

Pièces jointes

  • Test.xlsm
    10 KB · Affichages: 6

Gégé-45550

XLDnaute Accro
Bonjour,
Dans un module,
VB:
Sub Suppression()
Dim derlig&, i&
    derlig = ThisWorkbook.Worksheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row
    With ThisWorkbook.Worksheets("Feuil1")
        For i = 2 To derlig
            If .Cells(i, 1).Value > Now() Then
                .Cells(i, 1).EntireRow.Clear
            End If
        Next i
    End With
End Sub
puis vous lancez la procédure 'Suppression' comme bon vous semble ; bouton, changement de valeur d'une cellule, etc.
Cordialement
 

patricktoulon

XLDnaute Barbatruc
re
ben c'est surtout qu'avec delete non seulement tu ira trop loin mais tu va en zaper
apres a i regarder de plus près tu utilise un clearcontents donc tu delete pas

et secondo le demandeur a demandé "est égale ou supérieure à la date aujourd'hui"
pour deleter

sur un range

VB:
Sub RealSuppressionRowInRange()
Dim derlig&, i&
    derlig = Cells(Rows.Count, 1).End(xlUp).Row
        For i = derlig To 2
            If Cells(i, 1).Value > Date - 1 Then
                Cells(i, 1).EntireRow.Delete
            End If
        Next i
End Sub

si c'est un listobject("Tableau structuré')
attention on ne delete pas une row mais un listrow

VB:
Sub RealSuppressionRowInListObject()
Dim i&
         With Range("Tableau1").ListObject
         For i = .ListRows.Count To 1 Step -1
             If .ListRows(i).Range(1).Value > Date - 1 Then
               .ListRows(i).Delete
            End If
        Next i
End With
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
et je vois même un 3 eme problème même avec une boucle a reculons et même avec clearcontents
tu clear la ligne complète
il se peut que le tableau fasse x colonnes et qu'a coté ( à draite il y ai d'autre données (ex:un autre tableau)
resultat tu bousille le tableau d'a coté aussi
comme quoi une question simple peut bien en succiter quelques autres

donc sur un range avec la methode clearr il faudrait travailler sur un tableau et non une colonne
et suprimer le ".rows(i) de la plage " et non la "cells(i,1).entirerow de la feuille "
ce n'est pas du tout la même chose
exemple
VB:
Sub Suppressiononlyinrangefixe()
Dim derlig&, i&
     derlig = Cells(Rows.Count, 1).End(xlUp).Row
  With Range("A1:d" & derlig)
     For i = 2 To .Rows.Count
            If .Cells(i, 1).Value > Now() Then
                .Rows(i).Clear
            End If
        Next i
    End With
End Sub

les ligne supprimées dans A ne seront pas supprimées dans le reste des colonnes de la feuille
 
Dernière édition:

Gégé-45550

XLDnaute Accro
Parfaitement d'accord avec toi, mais bon, comme fichier de test, on avait une douzaine de lignes toutes seules ; après, c'est au demandeur de préciser correctement son besoin et d'avertir s'il y a des précautions à prendre en dessous et à côté ... ce qui n'enlève rien à la pertinence de toutes tes remarques.
 

Discussions similaires

Réponses
5
Affichages
275
Réponses
16
Affichages
499
Réponses
11
Affichages
179
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…