Suppression de ligne en fonction d'une date

Bonjour le forum,

Je souhaiterais supprimer toutes les lignes dont les dates contenues en colonne A sont antérieures à une date précise (et à préciser) et ce pour tout un classeur.

Je n'ai trouvé aucune codification qui remplisse les conditions posées.

Merci par avance.

bonjour

mon avis perso de moi

ne jamais supprimer de lignes dans un tableau de données

il suffit de filtrer pour ne voir que les lignes intéressantes

"supprimer" date d'il y a 30 ans, quand on traitait tout sur papier, et qu'il fallait recommencer une feuille par mois et archiver les anciennes. L'informatique permet de travailler autrement. Heureusement.

mais ce n'est que mon idée.

amitiés

Merci Jmd pour ta réponse qui ne s'adresse qu'à ceux qui maîtrisent les filtres, lol

Perso, j'ai pas 30 années de dates à supprimer régulièrement et une codification Vba dont j'arrive à cerner quelques fonctions et commandes me conviendrait parfaitement.

Merci

re

tu veux dire que tu fais du VBA et que tu ne connais pas les fonctions de base d'Excel (filtres, TCD... ) ?

si c'est le cas, je conseille d'abord de mieux maîtriser Excel, et ensuite dans quelques mois de te (re)lancer dans VBA.

note : VBA est l'outil à utiliser quand il n'y a pas d'autre fonction. Ce ne semble pas être ton cas.

à quoi sert ton fichier ?

pourquoi as-tu besoin de "supprimer" des lignes ?

(il est trèèèèèèèèèèèèèèèès rare qu'on supprime des données, ce qui motive ma question)

peux-tu joindre un petit fichier exemple avec quelques colonnes, quelques lignes et le résultat attendu ?

oui, il y a 3 questions

à te relire

amitiés

Bonjour fouggy, jmd,

un essai, qui sera à adapter selon que c'est des dates texte ou des vraies dates :

Option Explicit

Sub Essai()
  Dim FX As Worksheet, chn$: chn = InputBox("Date :")
  If Not IsDate(chn) Then MsgBox "Date " & chn & " non valide": Exit Sub
  Dim DateX As Date, nlm&, dlig&, lig&
  DateX = chn: nlm = Rows.Count: Application.ScreenUpdating = 0
  For Each FX In Worksheets
    dlig = FX.Cells(nlm, 1).End(xlUp).Row
    For lig = dlig To 1 Step -1
      With FX.Cells(lig, 1)
        If Not IsEmpty(.Value) And IsDate(.Value) Then
          If .Value < DateX Then FX.Rows(lig).Delete
        End If
      End With
    Next lig
  Next FX
End Sub

dhany

Bonsoir Dhany et Jmd,

Un grand merci à toi Dhany pour ta codification qui marche au Top...

Jmd, dsl pour les 3 questions mais j'aurais pu y répondre en 10 pages.

Pour information, je n'ai pas d'appétence particulière pour les maths et les formules, tcd et autres filtres proposés par excel et dont je ne doute pas de l'efficacité.

En revanche, il y a très longtemps en FAC, mes cours comprenaient de la programmation MS-Dos sur Dbase et je m'y retrouve dans le VBA où une action correspond à une codification très claire. Cela devient plus compliqué quand il y a plusieurs actions et il suffit d'essayer de comprendre pour avancer. C'est ce que je fais à mon rythme et chaque nouvelle macro m'apprend quelque chose qui me renvoi par curiosité aux cours en ligne sur le VBA...

Voici donc pour l'essentiel, ensuite je ne suis pas sûr que demander tout un explicatif du pourquoi et du comment de la demande soit une bonne approche mais ce n'est qu'un point de vue perso.

Enfin, Dhany à répondu à ma demande et sa macro marche très bien après de multiples tests avec de lourds fichiers et je l'en remercie grandement. J'ai bien évidemment fait beaucoup de recherches sur le net pour voir si une macro existait déjà avant de poser ma demande et cette macro (basique quelque part) va servir à d'autres internautes sans aucun doute possible et sa contribution n'en aura qu'autant de valeur.

Sur ce, je vous souhaite à tous les deux une excellente soirée

merci pour ton retour ! excellente soirée à toi aussi, et bonne continuation !

dhany

Rechercher des sujets similaires à "suppression ligne fonction date"