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

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

  • jeu de test macro.zip
    8.8 KB · Affichages: 69
  • jeu de test macro.zip
    8.8 KB · Affichages: 76
  • jeu de test macro.zip
    8.8 KB · Affichages: 81

pierrejean

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

bonjour mmg

Et bienvenue sur XLD

Vois si cela te convient
 

Pièces jointes

  • jeu de test macro.zip
    12.8 KB · Affichages: 140
  • jeu de test macro.zip
    12.8 KB · Affichages: 137
  • jeu de test macro.zip
    12.8 KB · Affichages: 151
G

Guest

Guest
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:

Pierrot93

XLDnaute Barbatruc
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
 

Excel-lent

XLDnaute Barbatruc
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:

mmg

XLDnaute Nouveau
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
 

Discussions similaires

Statistiques des forums

Discussions
312 240
Messages
2 086 514
Membres
103 239
dernier inscrit
wari