Supprimer les lignes antérieures à une date donnée [VBA]

Résolu/Fermé
Fitz_Chev - 23 mars 2016 à 17:00
 Fitz_Chev - 24 mars 2016 à 10:04
Bonjour,

Dans le cadre d'une de mes macros, je souhaite, comme indiqué dans le titre, supprimer toutes mes lignes antérieures à une date spécifique.
J'ai déjà préparer un petit quelque chose mais je ne comprends pas car quand je lance ma macro, il me supprime toutes mes lignes, même celle postérieures ou égales à ma date. Pour info, ma date est en colonne C, bien entendu en format date, et mon tableau a des en-têtes.
Voici ce que j'ai fait:
Sub test()
saisie_date:
    Date_CA = InputBox(Chr(13) & Chr(10) & Chr(13) & Chr(10) & "      Saisissez la date du fichier de surcos (format JJ/MM/AAAA)", "Saisie de la date", Format(Date, "dd/mm/yyyy"))
    If Date_CA = "" Then
        Exit Sub
    End If
    If Not IsDate(Date_CA) Then
        MsgBox "Format de date saisie incorrect !"
        GoTo saisie_date
    End If
    If Date_CA <> Format(Date_CA, "dd/mm/yyyy") Then
        MsgBox "le format doit être jj/mm/aaaa !"
        GoTo saisie_date
    End If
    For n = [C65000].End(xlUp).Row To 2 Step -1
    If Range("C" & n).Value < Date_CA Then Range("C" & n).EntireRow.Delete
    Next n
End Sub


Si vous avez besoin d'un fichier exemple, dites le moi.

Merci d'avance

A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
24 mars 2016 à 09:23
Bonjour

ton pb vient du fait que la valeur de date de l'inputbox se transforme en date anglophone
02/04/2016 te renvoie 04/02/2016 !

ci joint une petite maquette à adapter à ton contexte en utilisant un userform avec un combobox: les dates inférieures à la date choisie sont supprimées
attention le combobos renvoie la date sous forme de string

MAIS:
le + simple (à mon avis ) serait de mettre dans ta feuille une à validation de donnée reprenant les dates ou d'inscrire la date dans une cellule

la maquette
http://www.cjoint.com/c/FCyiwNWEn8t
1
Merci, je n'ai pas utiliser ta méthode mais avec ta réponse, j'ai inscrit ma date dans une cellule que j'ai converti après ce qui me donne la bonne date, pour info, ça peut servir, voici les 3 lignes que j'ai rajoutées:

    Range("R1").Select
    ActiveCell = Date_CA
    Range("R1").Value = Format(Range("R1").Value, "dd/mm/yyyy")
0