VBA - supprimer toutes les lignes au dessus/en dessous

USF123 Messages postés 2 Statut Membre -  
thev Messages postés 2013 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Je bosse actuellement sur un projet VBA et j'ai besoin d'un petit coup de pouce :)
L'idée est que dans mon userform on peut sélectionner une date de début et une date de fin de période et j'aimerais qu'en cliquant sur un commandbutton toutes les lignes au dessus et en dessous de ces dates soient supprimées.

Avez-vous une petite idée du code nécessaire ?

Thanks all !

3 réponses

  1. thev Messages postés 2013 Date d'inscription   Statut Membre Dernière intervention   725
     
    Bonjour,

    ci-dessous exemple de code


    Sub supprimer_lignes()

    'si les dates se trouvent en colonne A
    Dim date_i As Range, ligne As Range, lignes_à_supprimer As Range

    With ActiveSheet

    'stockage lignes à supprimer
    For Each date_i In Range(.[A1], .[A:A].Find("", SearchOrder:=xlRows, SearchDirection:=xlPrevious))
    Set ligne = date_i.EntireRow
    If date_i < date_début.Value Or date_i > date_fin.Value Then
    If lignes_à_supprimer Is Nothing Then Set lignes_à_supprimer = ligne _
    Else Set lignes_à_supprimer = Union(lignes_à_supprimer, ligne)
    End If
    Next date_i

    'suppression lignes
    lignes_à_supprimer.Delete

    End With

    End Sub

    0
  2. USF123 Messages postés 2 Statut Membre
     
    Merci beaucoup Thev !
    Ton code marche un peu trop bien, à chaque fois toutes les lignes sont supprimées ...
    Une idée ?

    Thanks !
    0
  3. thev Messages postés 2013 Date d'inscription   Statut Membre Dernière intervention   725
     
    Si toutes les lignes sont supprimées, c'est que cette condition
     If date_i < date_début.Value Or date_i > date_fin.Value 

    est toujours vraie.

    Je t'invite donc à vérifier les contenus de date_début.Value et date_fin.Value. Si date_fin_value est vide, la condition est toujours vraie.
    Dans ton Userform, les noms des contrôles correspondant à ces 2 dates, ne sont pas forcément date_début et date_fin.  
    0