Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

suppression ligne sous condition

  • Initiateur de la discussion Initiateur de la discussion roni
  • Date de début Date de début

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 !

R

roni

Guest
Bonjour,

Je voudrai supprimer les lignes d'un tableau déjà trié par la colonne E avec comme condition 9 en colonne E et garder les autres lignes .

Merci d'avance
 
Re,

En attendant le fichier (et que mes pâtes soient al dente 😉 )
VB:
Sub MacroAuPifTestéeDansLeVide()
Dim Lig&: Lig = Cells(Rows.Count, 5).End(xlUp).Row - 1
[F2].Resize(Lig) = "=IF(RC[-1]=9,""Staple1600"",0)"
With Columns(6)
.SpecialCells(-4123, 2).EntireRow.Delete: .Clear
End With
End Sub
 
Re,

@roni
Apparemment tu as zappé le message#4, non ?
Car j'y avais posté une macro (qu'il suffisait de modifier un chouia) 😉 et qui fait ce que tu souhaites.
VB:
Sub MacroAuPifTestéeDansLeVideDésormaisRempli()
Dim Lig&: Lig = Cells(Rows.Count, 5).End(xlUp).Row - 1
[F3].Resize(Lig) = "=IF(RC[-1]=9,""Staple1600"",0)"
With Columns(6)
.SpecialCells(-4123, 2).EntireRow.Delete: .ClearContents
End With
End Sub
 
 
Bonsoir roni et bonsoir Staple1600, Lone-wolf,

Si la colonne E est triée :
VB:
Sub delete_9()
   On Error Resume Next
   With Feuil1.Columns(5)
      .Range(.Find(9), .Find(9, after:=.Cells(1, 1), searchdirection:=xlPrevious)).EntireRow.delete
   End With
End Sub
 
Bonsoir mapomme

Le tri a son importance lors de la suppression des lignes?
(Je te demande cela parce que j'ai pas le courage de retélécharger le fichier exemple pour tester ton code)
Nos deux codes ne produisent pas le même effet?
Si non tu peux m'expliquer (ou me marabouter que s'évanouisse ma fainéantise) ? 😉

EDITION: Je viens de relire ton code, et je crois comprendre après avoir noté le double Find 😉
(par contre le xlPrevious me pertube)
 
Re @Staple1600,

Une autre écriture plus lisible :
VB:
Sub delete_9()
Dim deb As Range, fin As Range
   With Feuil1.Columns(5)
      Set deb = .Find(9, after:=.Cells(Rows.Count, 1), searchdirection:=xlNext)
      Set fin = .Find(9, after:=.Cells(1, 1), searchdirection:=xlPrevious)
      If Not deb Is Nothing Then .Range(deb, fin).EntireRow.delete
   End With
End Sub

(par contre le xlPrevious me pertube)
En fait le after devient l'équivalent d'un "before" quand searchdirection:=xlPrevious. Au début ça m'a aussi un peu chagriné.

En prime un fichier.
 

Pièces jointes

Dernière édition:
Bonsoir à tous,

Puisque le tableau est trié sur la colonne E c'est simple :
Code:
Sub Supprimer()
If Application.CountIf([E:E], 9) Then Rows(Application.Match(9, [E:E], 0)).Resize(Application.CountIf([E:E], 9)).Delete
End Sub
Bonne nuit.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
335
Réponses
6
Affichages
267
Réponses
23
Affichages
425
  • Question Question
Microsoft 365 Fonction si
Réponses
7
Affichages
126
Réponses
5
Affichages
449
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…