VBA - supprimer toutes les lignes au dessus/en dessous

USF123 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
thev Messages postés 1986 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 !

A voir également:

3 réponses

thev Messages postés 1986 Date d'inscription   Statut Membre Dernière intervention   713
 
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
USF123 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup Thev !
Ton code marche un peu trop bien, à chaque fois toutes les lignes sont supprimées ...
Une idée ?

Thanks !
0
thev Messages postés 1986 Date d'inscription   Statut Membre Dernière intervention   713
 
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