Selection de plages de lignes discontinues pour suppression

jmast

XLDnaute Nouveau
Bonjour,

J'ai besoin de votre aide. Je bloque sur un truc assez basique (je pense).

Je souhaiterais sélectionner une plage de lignes discontinues pour ensuite les supprimer toutes en même temps.
ex : Range(8:8,9:9,10:10,15:15,16:16...).

Je n'arrive pas à concaténer les lignes dans le range avec ma macro; résultat, j'ai toujours des lignes vides.

Code macro:
Code:
Sub test_supprimer_ligne()

For i = 3 To 26
    If Cells(i, 2) = "" Then
        Range(i & ":" & i).Select
        Selection.Delete Shift:=xlUp
    End If
Next i

End Sub

Comment dois-je faire pour avoir le résultat suivant :
Range(8:8,9:9,10:10,15:15,16:16...)

Merci d'avance.
 

Pièces jointes

  • test.xlsm
    16.6 KB · Affichages: 69
  • test.xlsm
    16.6 KB · Affichages: 77
  • test.xlsm
    16.6 KB · Affichages: 74

Pierrot93

XLDnaute Barbatruc
Re : Selection de plages de lignes discontinues pour suppression

Bonjour,

petite question idiote, pourquoi ne pas les supprimer une à une, et ce commencant par la fin et remontant pour ne pas rater 2 cellules consécutives répondant au test :
Code:
For i = 26 To 3 Step -1

bon après midi
@+
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Selection de plages de lignes discontinues pour suppression

Bonjour le fil, bonjour le forum,

J'aurais fait comme Pierrot le préconise mais voici une proposition qui fait ce que tu demandes :
Code:
Sub test_supprimer_ligne()
Dim li As Range 'déclare la variable li (LIgnes à effacer)
 
For i = 3 To 26
    If Cells(i, 2) = "" Then
        If li Is Nothing Then 'si la plage li est vide
            Set li = Rows(i) 'li devient la ligne de i
        Else 'sinon
            Set li = Application.Union(li, Rows(i)) 'li devient l'union de li et de la ligne i
        End If 'fin de la condition
    End If
Next i
li.Delete
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Selection de plages de lignes discontinues pour suppression

Re, bonsoir Robert:)

Aarf, j'avais préparé ceci, bon je donne quand même...
Code:
Option Explicit
Sub test()
Dim i As Long, x As Range
For i = Range("B65536").End(xlUp).Row To 1 Step -1
    If Cells(i, 2) = "" Then If x Is Nothing Then Set x = Cells(i, 2) _
        Else Set x = Union(x, Cells(i, 2))
Next i
'pour supprimer les cellules
x.Delete xlUp
'pour supprimer les lignes
x.EntireRow.Delete xlUp
End Sub

bonne soirée
@+
 

Discussions similaires

Réponses
12
Affichages
267

Statistiques des forums

Discussions
312 756
Messages
2 091 729
Membres
105 058
dernier inscrit
axcelle