suppression de lignes en fonction d'un critère date

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

mmg

XLDnaute Nouveau
Bonjour à tous,

Voilà quelques jours que je tourne sur ce forum en espérant trouver réponse...
Malheureusement, mon cas semble trop tordu pour cela.
Alors je me lance, si quelqu'un d'assez calé et un peu disponible pouvait m'aider ?????

Voici mon cas, j'ai un fichier excel assez conséquent (28000 lignes, 32 colonnes ! --> c'est une extraction brute d'une petite base de données) et je souhaiterais "nettoyer" ce fichier pour réaliser un tableau de bord tous les mois.

Mon premier critère de tri est :
- Si la date inscrite dans la colonne "N" est inférieure au 01/01/2008 alors suppression de la ligne. Problème, certaines cellules de N sont vides, alors il ne faudrait pas supprimer la ligne !!

- si la colonne "X" est égale à 2, suppression de la ligne.

Je ne sais pas si c'est très clair, j'ai mis un jeu de test en pièce jointe.

Merci beaucoup à tous cux qui auront la patience de lire mon message en entier, et qui accepteront de me répondre.
 

Pièces jointes

Re : suppression de lignes en fonction d'un critère date

Bonsoir,

La macro suivante supprime les lignes pour lesquelles la colonne N < 1/1/2008 ou pour lesquelles la colonne X contient 2.

Ta formulation pour le test est ambigüe:

Si une ligne ne contient pas de date en colonne N mais un 2 en colonne X que faut-il faire?
Code:
Sub SupprimerLignes()
Dim CurLigne As Long, nbLignes As Long
Dim PlageSuppr As Range
Dim dte As Date
dte = DateSerial(2008, 1, 1)
With Sheets("Pompom")
    nbLignes = .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row).Rows.Count
    For CurLigne = 1 To nbLignes
        If .Range("N" & CurLigne) < dte Or .Range("X" & CurLigne) = 2 Then
            If PlageSuppr Is Nothing Then
                Set PlageSuppr = .Cells(CurLigne, 1)
            Else
                Set PlageSuppr = Union(PlageSuppr, .Cells(CurLigne, 1))
            End If
        End If
    Next CurLigne
    If Not PlageSuppr Is Nothing Then PlageSuppr.EntireRow.Delete
End With
End Sub

[edit] Salut Pierre-Jean! comment vas-tu bien?
Hello Pierrot et toi?
A+
 
Dernière modification par un modérateur:
Re : suppression de lignes en fonction d'un critère date

Bonjour,

regarde le code ci dessous :

Code:
Dim i As Integer
For i = Range("A65536").End(xlUp).Row To 2 Step -1
    If (Not IsEmpty(Cells(i, 14).Value) And Cells(i, 14).Value < #1/1/2008#) Or _
        Cells(i, 24).Value = 2 Then Rows(i).Delete
Next i

bonne soirée
@+

Edition : bonsoir PierreJean, Hasco
 
Re : suppression de lignes en fonction d'un critère date

Bonsoir et bienvenu sur le forum MMG,

Voici ci-dessous un exemple de macro correspondant à tes attentes.

Code:
Sub PropositionMacro()
[COLOR="Green"]' Macro enregistrée le 06/10/2009 par Excel-lent[/COLOR]
    
Dim ColonneX As Long

ColonneX = [X65536].End(xlUp).Row

   For i = ColonneX To 2 Step -1
      If Cells(i, 14) < 39448 And Cells(i, 14) <> 0 Then
             Rows(i).Delete
      Else: If Cells(i, 24) = 2 Then Rows(i).Delete
      End If
   Next i

End Sub

Edition : Que de réponses! Bonsoir à tous.
 
Dernière édition:
Re : suppression de lignes en fonction d'un critère date

Merci, merci, merci beaucoup à vous tous pour vos réponses... Non seulement vous avez été supers rapides, mais en plus c'est parfait !
PierreJean m'a même mis un bouton pour réaliser directement l'opération.

C'est vrai que ma demande était ambigüe, et pourtant j'ai essayé d'être le plus clair possible ! Comme quoi on ne l'est jamais assez 🙂
A priori, je ne souhaite pas supprimer les lignes pour lesquelles la colonne X est à 2 et qu'il n'y a pas de date dans la colonne N.

Avec votre aide, cela est maintenant réalisable, et très rapidement !

Quand je pense au temps que j'ai passé à chercher !!!

Encore merci à toute la communauté d'entre-aide aux incultes de la macro Excel (dont je fais partie).

Bonne journée à tous
 
- 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
8
Affichages
476
Retour