Microsoft 365 Suppression lignes par rapport à une date

  • Initiateur de la discussion Initiateur de la discussion pierrof
  • 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 !

pierrof

XLDnaute Occasionnel
Bonjour à tous,

Dans un nouveau projet j'aimerais mettre en forme un tableau en supprimant des lignes par rapport à une date.

En effet j'aimerais supprimer toutes les lignes du tableau si la date dans la colonne L est inférieur ou égale à la date de la cellule U2.

Je laisse un petit fichier exemple.

Merci de votre aide

Bonne journée
 

Pièces jointes

Solution
Re,
Si j'ai bien compris, essayez cette PJ avec :
VB:
Sub Supp_Lignes()
 Application.ScreenUpdating = False
    Dim DL%, DL1%, L%, DateSupp
    DL1 = Sheets("Liste_Org").Cells(Cells.Rows.Count, "A").End(xlUp).Row
    Set Plage = Sheets("Liste_Org").Range("A2:A" & DL1)
    DL = Cells(Cells.Rows.Count, "L").End(xlUp).Row
    DateSupp = [T1]
    For L = DL To 2 Step -1
        If Cells(L, "L") <= DateSupp Or Application.CountIf(Plage, Cells(L, "D")) = 0 Then Cells(L, "A").EntireRow.Delete
    Next L
End Sub
Bonjour Pierrof, Djidji,
Un essai en PJ.
Il suffit de modifier la date de suppression pour que le filtre s'effectue automatiquement en feuille Filtrée.
Avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [U2]) Is Nothing Then
         Application.ScreenUpdating = False
         Dim DL%, L%
         DL = Cells(Cells.Rows.Count, "L").End(xlUp).Row
         With Sheets("Filtrée")
            .Cells.Clear
            .Range("A1:L" & DL) = Range("A1:L" & DL).Value
            For L = DL To 2 Step -1
                If .Cells(L, "L") <= Target Then .Cells(L, "A").EntireRow.Delete
            Next L
            .Select
         End With
    End If
Fin:
End Sub
 

Pièces jointes

Bonjour Pierrof, Djidji,
Un essai en PJ.
Il suffit de modifier la date de suppression pour que le filtre s'effectue automatiquement en feuille Filtrée.
Avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [U2]) Is Nothing Then
         Application.ScreenUpdating = False
         Dim DL%, L%
         DL = Cells(Cells.Rows.Count, "L").End(xlUp).Row
         With Sheets("Filtrée")
            .Cells.Clear
            .Range("A1:L" & DL) = Range("A1:L" & DL).Value
            For L = DL To 2 Step -1
                If .Cells(L, "L") <= Target Then .Cells(L, "A").EntireRow.Delete
            Next L
            .Select
         End With
    End If
Fin:
End Sub
Bonjour Sylvanu,
Merci ça fonctionne, mais si je ne veux pas garder l'original mais que les lignes se suppriment de suite à l'aide d'un bouton ,ets-ce que le code peut adapté?
Car ensuite j'ai une autre mise en forme à réaliser en supprimant des lignes dont certaines cellules ne sont pas listé dans un autre tableau...

Merci
 
Re,
mais si je ne veux pas garder l'original mais que les lignes se suppriment de suite à l'aide d'un bouton ,ets-ce que le code peut adapté?
Voir PJ avec :
VB:
Sub SupprimerLignes()
    Application.ScreenUpdating = False
    Dim DL%, L%, DateSupp
    DL = Cells(Cells.Rows.Count, "L").End(xlUp).Row
    DateSupp = [T1]
    For L = DL To 2 Step -1
        If Cells(L, "L") <= DateSupp Then Cells(L, "A").EntireRow.Delete
    Next L
End Sub
A noter que bouton et Date à supprimer doivent se trouver en ligne 1 car la ligne 2 pourrit être supprimée suivant la date en colonne L.
 

Pièces jointes

Re,

Voir PJ avec :
VB:
Sub SupprimerLignes()
    Application.ScreenUpdating = False
    Dim DL%, L%, DateSupp
    DL = Cells(Cells.Rows.Count, "L").End(xlUp).Row
    DateSupp = [T1]
    For L = DL To 2 Step -1
        If Cells(L, "L") <= DateSupp Then Cells(L, "A").EntireRow.Delete
    Next L
End Sub
A noter que bouton et Date à supprimer doivent se trouver en ligne 1 car la ligne 2 pourrit être supprimée suivant la date en colonne L.
Super, merci beaucoup ça fonctionne et oui pour la date j'ai pensé après avoir déposé le fichier 🙂.

Pour finaliser mon projet, il faudrait que puisse supprimer les lignes du tableau dont les cellu de la colonne D ne correpondent pas aux valeur de la colonne A de la feuille List_Org.

est-ce que tu crois que c'est possible d'avoir un code VBA pour que le tableau se mettent à jour ?

Merci

Bon app
 

Pièces jointes

Re,
Si j'ai bien compris, essayez cette PJ avec :
VB:
Sub Supp_Lignes()
 Application.ScreenUpdating = False
    Dim DL%, DL1%, L%, DateSupp
    DL1 = Sheets("Liste_Org").Cells(Cells.Rows.Count, "A").End(xlUp).Row
    Set Plage = Sheets("Liste_Org").Range("A2:A" & DL1)
    DL = Cells(Cells.Rows.Count, "L").End(xlUp).Row
    DateSupp = [T1]
    For L = DL To 2 Step -1
        If Cells(L, "L") <= DateSupp Or Application.CountIf(Plage, Cells(L, "D")) = 0 Then Cells(L, "A").EntireRow.Delete
    Next L
End Sub
 

Pièces jointes

Re,
Si j'ai bien compris, essayez cette PJ avec :
VB:
Sub Supp_Lignes()
 Application.ScreenUpdating = False
    Dim DL%, DL1%, L%, DateSupp
    DL1 = Sheets("Liste_Org").Cells(Cells.Rows.Count, "A").End(xlUp).Row
    Set Plage = Sheets("Liste_Org").Range("A2:A" & DL1)
    DL = Cells(Cells.Rows.Count, "L").End(xlUp).Row
    DateSupp = [T1]
    For L = DL To 2 Step -1
        If Cells(L, "L") <= DateSupp Or Application.CountIf(Plage, Cells(L, "D")) = 0 Then Cells(L, "A").EntireRow.Delete
    Next L
End Sub
C'est parfait encore une fois.
Merci beaucoup Sylvanu bonne journée
 
- 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

  • Question Question
Microsoft 365 format date
Réponses
3
Affichages
94
Réponses
6
Affichages
135
Retour