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 à tous 🙂,

Moi aussi, je veux participer et jouer🚴‍♀️.

Je n'ai pas examiné les autres méthodes (et c'est volontaire).
Le code est dans module1 et il est commenté.

Pour l'utiliser :
1) il faut initialiser les lignes sources
  • en V6, choisir le nombre de lignes sources
  • en V7, choisir le pourcentage des lignes sources à conserver à la fin du traitement
  • cliquer sur le bouton Init pour lancer la création des lignes
2) lancer la suppression des lignes
  • cliquer sur le bouton Hop!
Les résultats s'affichent dans le tableau structuré en U10

nota 1 : les résultats doivent selon les méthodes dépendre (ou non) du nombre de lignes initiales et du nombre de lignes à supprimer.

Sur ma bécane, on obtient :

1751565983479.png
 

Pièces jointes

Bonsoir Job,
Mais alors, d'où vient le souci ?
Tout ce que je peux te dire c'est que si l'on n'insère pas de colonne il n'y a plus de problème :
VB:
Sub Supp_Lignes()
T0 = Timer  ' pour mesure du temps
 Application.ScreenUpdating = False
    Dim DL&
    Formule = "=IF(OR(L2<=$T$1,COUNTIF(Liste_Org!$A$2:$A$50,D2)=0),CHAR(1),0)"
    DL = Cells(Cells.Rows.Count, "L").End(xlUp).Row
    With Range("U2:U" & DL)
        .Formula = Formule
        .Value = .Value
        .EntireRow.Sort .Cells, xlAscending, Header:=xlNo
        On Error Resume Next
        .SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete
    End With
    Columns("U").ClearContents
MsgBox Timer - T0 ' pour afficher temps d'execution
End Sub
s'exécute chez moi en 0,58 seconde.
 

Pièces jointes

Re,
Tout ce que je peux te dire c'est que si l'on n'insère pas de colonne il n'y a plus de problème :
Encore un truc qui restera incompréhensible.
Que les formules se mettent en A ou en U, en quoi cela ferait une différence.
( Le pb c'est qu'en U le fichier final pourrait avoir des datas, c'est pour ça que je préfère insérer ça en A )

Moi aussi, je veux participer et jouer🚴‍♀️.
Bien joué. 🙂
Sur mon 2007, j'obtiens les mêmes temps que sur les PJ précédentes.
 
- 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