XL 2010 Supprimer lignes dans une zone mais en laisser un certain nombre

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

Phillip

XLDnaute Occasionnel
Bonjour,

Je vous sollicite encore pour un problème qui est peut-être simple.

J'ai un tableau que je remplis ligne par ligne régulièrement (il a 5 colonnes). Il grossit donc de plus en plus en lignes.

De temps en temps je veux effacer les lignes et en supprimer MAIS en laisser 10 par exemple par rubrique (oui, j'ai des rubriques avec un titre qui occupe les 5 colonnes fusionnées pour ce titre).

J'ai fait une macro qui efface les lignes, pas de problèmes... Mais pour supprimer en en gardant 10 ?

Je sais identifier ma dernière ligne utilisée, ma première ligne vide, compter (par soustraction) le nombre de lignes, mais comment supprimer les lignes -10 ?

merci de votre aide

Cordialement

Phillip
 
Bonjour Phillip, le forum,
VB:
Sub SupprimerLignes()
'conserve 10 lignes sous chaque cellule fusionnée
Dim ncol%, i&, lig&, sup As Range
With ActiveSheet.UsedRange
    ncol = .Columns.Count
    For i = 1 To .Rows.Count
        If .Cells(i, 1).MergeArea.Columns.Count = ncol Then lig = i 'repère les lignes fusionnées
        If lig Then If i > lig + 10 Then Set sup = Union(IIf(sup Is Nothing, .Rows(i), sup), .Rows(i))
    Next
End With
If Not sup Is Nothing Then sup.Delete xlUp
End Sub
A+
 
Bonjour Job75 et le forum,

Cela marche sur un fichier test. J'ai adapté le code à mon cas réel. Je souhaite supprimer les lignes vides à partir d'une certaine ligne.

1) J'ai défini des noms dans ma feuille Dzone et Fzone pour début zone et fin zone
2) Je récupère la ligne de Dzone dans Rdzone
3) Je fais le même compteur i de Rdzone à nlig

Pourtant, lorsque i arrive à Rdzone = 187 dans mon ficheir exemple qui est une ligne fusionnée, il ne détecte pas la fusion et donc lig ne s'incrémente pas et ça ne marche pas... Qu'ai-je loupé ?

PS : Question subsidiaire : pourquoi ne met on jamais de end if ??

Merci

Cordialement

VB:
Sub SupprimerLignes()
''
'''on espere supprimer toutes les lignes vides de chaque section sauf 10
Dim ncol%, i&, lig&, sup As Range
''
'
'conserve 10 lignes sous chaque cellule fusionnée

Set zone = Range("Dzone", "Fzone")
'zone.Select
'Range("Dzone").Select
Rdzone = Range("Dzone").Row
With zone
    ncol = .Columns.Count
    nlig = .Rows.Count + Rdzone
    'ncol = 5
    For i = Rdzone To nlig '.Rows.Count
        If .Cells(i, 1).MergeArea.Columns.Count = ncol Then lig = i 'repère les lignes fusionnées
        If lig Then If i > lig + 10 Then Set sup = Union(IIf(sup Is Nothing, .Rows(i), sup), .Rows(i))
                        
                
        
    Next
End With
If Not sup Is Nothing Then sup.Delete xlUp

End Sub
 

Pièces jointes

VB:
Sub SupprimerLignes()
'conserve 10 lignes sous chaque cellule fusionnée
Dim ncol%, i&, lig&, sup As Range
With [Zone] 'nom défini
    ncol = .Columns.Count
    For i = 1 To .Rows.Count
        If .Cells(i, 1).MergeArea.Columns.Count = ncol Then lig = i 'repère les lignes fusionnées
        If lig Then If i > lig + 10 Then Set sup = Union(IIf(sup Is Nothing, .Rows(i), sup), .Rows(i))
    Next
End With
If Not sup Is Nothing Then sup.Delete xlUp
End Sub
Le nom "Zone" est défini au départ par la formule =juin!$A$169:$E$305

PS : pas besoin de End If quand toutes les instructions sont sur une seule ligne, c'est classique.
 

Pièces jointes

- 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
7
Affichages
795
Retour