XL 2013 VBA Supprimer une ligne si la date est inférieure à une date donnée

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bonjour,

Il va falloir autre chose qu'une image. parce qu'avec ca. on ne peut rien faire
sinon
pour avoir un début de code
1) tu lances l'enregistreur de macro
2) tu fais un filtre sur la date
3) tu supprimes les lignes filtrées
4) et tu arretes l'enregistreur de macro
 
quelque chose comme ca ?

VB:
Sub yo()
Dim rng As Range: Set rng = Application.Range(Cells(2, 1), Cells(2, 1).End(xlDown))
Dim cel As Range
premierdumois = DateSerial(Year(Date), Month(Date), 1)
j = rng.Cells.Count
For i = 2 To rng.Cells.Count
    If Cells(i, 1).Value < premierdumois Then
    Cells(i, 1).EntireRow.Delete
    i = i - 1
    j = j - 1
    End If
Next
End Sub
 
@yoyovento : Hello
ton idée est bonne, toutefois quelques "pbs"
si tu ne fais pas de application.screenupdating=false, ca risque d'etre long et faire sapin de noel (surtout si il y a beaucoup de lignes)
ton j=j-1 ne sert à rien car il n'est pas utilisé dans le for i=2 to rng.cells.count
il aurait fallu faire for i=2 to j

et le fait que tu fasses le i=i-1 montre que tu as déjà vu/subit le décalage suite aux lignes supprimées
d'où la règle / habitude qu'on utilise:
quand on supprime des lignes, on fait la boucle en remontant du bas vers le haut
for i= rng.cells.count to 2 step -1

à noter que ma solution n'est pas parfaite non plus puisque déjà. elle ne correspond pas à la solution que je décrivais au tout début: (filtre + suppression)==> j'ai toujours un pb pour faire des filtres avec des dates...
l'enregistreur de macro me donne pourtant un script qui une fois executé, ne reproduit pas le résultat.....
 
@yoyovento : Hello
ton idée est bonne, toutefois quelques "pbs"
si tu ne fais pas de application.screenupdating=false, ca risque d'etre long et faire sapin de noel (surtout si il y a beaucoup de lignes)
ton j=j-1 ne sert à rien car il n'est pas utilisé dans le for i=2 to rng.cells.count
il aurait fallu faire for i=2 to j

et le fait que tu fasses le i=i-1 montre que tu as déjà vu/subit le décalage suite aux lignes supprimées
d'où la règle / habitude qu'on utilise:
quand on supprime des lignes, on fait la boucle en remontant du bas vers le haut
for i= rng.cells.count to 2 step -1

à noter que ma solution n'est pas parfaite non plus puisque déjà. elle ne correspond pas à la solution que je décrivais au tout début: (filtre + suppression)==> j'ai toujours un pb pour faire des filtres avec des dates...
l'enregistreur de macro me donne pourtant un script qui une fois executé, ne reproduit pas le résultat.....
exact je n'ai pas collé le dernier texte 🙁 il faut boucler jusqu'à j 😛
bonne idée de partir depuis la fin, j'aurai dû y penser !

PS : moi j'aime bien quand ca bouge LOL ca fait matrix

louane2022 ca va avec ce code à adapter ?​

 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
582
Retour