VBA - supprimer toutes les lignes au dessus/en dessous

Fermé
USF123 Messages postés 2 Date d'inscription vendredi 29 juillet 2016 Statut Membre Dernière intervention 1 août 2016 - 29 juil. 2016 à 10:47
thev Messages postés 1853 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 27 avril 2024 - 1 août 2016 à 21:51
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 1853 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 27 avril 2024 681
29 juil. 2016 à 13:19
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 vendredi 29 juillet 2016 Statut Membre Dernière intervention 1 août 2016
Modifié par USF123 le 1/08/2016 à 17:30
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 1853 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 27 avril 2024 681
Modifié par thev le 1/08/2016 à 21:51
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