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

Si cellule active, supprimer x lignes vba

  • Initiateur de la discussion Initiateur de la discussion fenec
  • 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 !

fenec

XLDnaute Impliqué
Bonsoir le forum,

Dans mon tableau je renseigne des produits par fournisseur avec leurs descriptifs, j’aimerais pour alléger cette liste, supprimer les fournisseurs avec lesquels je ne travaille plus et c’est la que j’ai besoin de votre aide.

Je m’explique :
Plutôt que de supprimer toutes les lignes une par une j’aimerais en sélectionnant le fournisseur que toutes les lignes produits et détails se suppriment jusqu’au fournisseur suivant sachant que le nombre de ligne est variable d’un fournisseur à un autre.

Je suis arrivé pour l’instant à faire un code qui me supprime la ligne du fournisseur si la cellule est active mais je ne sais pas comment supprimer les autres lignes.

Je ne sais pas si c’est très clair …, alors vous joint un exemple.

Cordialement

Philippe
 

Pièces jointes

Re : Si cellule active, supprimer x lignes vba

Bonsoir fenec,

Un essai avec ce code:?
VB:
Sub SupprimerLignes()
  If ActiveCell.Interior.ColorIndex = 35 Then
    ActiveCell.EntireRow.Delete
    Do While ActiveCell.Interior.ColorIndex = 19 Or ActiveCell.Interior.ColorIndex = xlNone
      ActiveCell.EntireRow.Delete
    Loop
  End If
End Sub
 
Re : Si cellule active, supprimer x lignes vba

re,

Ou mieux, avec ce code:?
VB:
Sub SupprimerLignes()
Dim xrg As Range, Asuppr As Range
  If ActiveCell.Interior.ColorIndex = 35 Then
    Set Asuppr = ActiveCell: Set xrg = ActiveCell.Offset(1)
    Do While xrg.Interior.ColorIndex = 19 Or xrg.Interior.ColorIndex = xlNone
      Set Asuppr = Asuppr.Resize(Asuppr.Rows.Count + 1)
      Set xrg = xrg.Offset(1)
    Loop
      Asuppr.EntireRow.Delete
  End If
End Sub
 

Pièces jointes

Dernière édition:
Re : Si cellule active, supprimer x lignes vba

Bonjour fenec, mapomme,

Ou aussi :

Code:
Sub SupprimerLignes()
Dim i
With ActiveCell
  If .Interior.ColorIndex = 35 Then
    While .Offset(i + 1) = "PRODUITS" Or .Offset(i + 1) = "Détail"
      i = i + 1
    Wend
    .Resize(i + 1).EntireRow.Delete
  End If
End With
End Sub
A+
 
Re : Si cellule active, supprimer x lignes vba

Re,

Ou encore :

Code:
Sub SupprimerLignes()
Dim derlig&, i&
With ActiveCell
  If .Interior.ColorIndex = 35 Then
    derlig = Range("B" & Rows.Count).End(xlUp).Row
    While .Offset(i + 1).Interior.ColorIndex <> 35 And .Row + i < derlig
      i = i + 1
    Wend
    .Resize(i + 1).Delete xlUp
  End If
End With
End Sub
A+
 
Re : Si cellule active, supprimer x lignes vba

Bonsoir le forum, mapomme, job75

Merci pour votre temps et vos codes qui fonctionnent tous très bien.

Sans vouloir abuser de votre temps pourriez vous svp commenter un peu vos codes afin que je comprenne mieux leurs fonctionnement

Cordialement

Philippe
 
Re : Si cellule active, supprimer x lignes vba

Re,

Quand on ne comprend pas bien une ligne, par exemple :

Code:
derlig = Range("B" & Rows.Count).End(xlUp).Row
il suffit d'ajouter une MsgBox :

Code:
derlig = Range("B" & Rows.Count).End(xlUp).Row: Msgbox derlig: End
ça décoince les neurones.

A+
 
Dernière édition:
- 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
5
Affichages
557
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…