Gestion des plages VBA (exclure cellules)

gclere

XLDnaute Nouveau
Bonjour à toutes/tous,

voici mon problème:

je voudrais sélectionner une plage de cellules pour, par exemple, les effacer.
Jusque là, ça va. Le programme ci dessous le fait très bien.

Là où ça se corse, c'est que je voudrais exclure de la sélection "plage" certaines lignes (par exemple les lignes où dans la colonne F; les cellules contiennent des "x").

Quelqu’un aurait-il une idée de comment faire?
Merci

Sub Efface()
Dim fcomm As Worksheet
Dim ligdeb, ligfin As Long
Dim plage As String

Set fcomm = Workbooks("1.xls").Worksheets("1")

ligfin = fcomm.Cells(65536, 1).End(xlUp).Row
ligdeb = 1
plage = "A1:F" & ligfin

'ICI JE VOUDRAIS EXCLURE CERTAINES LIGNES (exemple, dans la colonne "F", les cellules qui contiennent"x")

Sheets("1").Activate
Range(plage).Select
Selection.ClearContents
End Sub
 

Grand Chaman Excel

XLDnaute Impliqué
Re : Gestion des plages VBA (exclure cellules)

Bonjour gclere,

Voici une façon de faire, il y a sûrement d'autres moyen d'arriver au même résultats.
À adapter à ton fichier :

VB:
Sub Efface()
    Dim ws As Worksheet
    Dim ligdeb As Long, ligfin As Long
    Dim plage As String
    Dim i As Integer
    
    Application.ScreenUpdating = False
    
    Set ws = ActiveSheet        'à adapter
    ligfin = ws.Cells(65536, 1).End(xlUp).Row
    ligdeb = 1
    plage = "A1:F" & ligfin
    
    With ws.Range(plage)
        For i = .Rows.Count To ligdeb Step -1
            If .Cells(i, 6) <> "X" Then .Cells(i, 1).EntireRow.Delete
        Next
    End With
    
    Application.ScreenUpdating = True

End Sub

A+
 

TempusFugit

XLDnaute Impliqué
Re : Gestion des plages VBA (exclure cellules)

Bonjour


Une autre méthode utilisant le filtre automatique
Il faudra adapter Range("A1:F15") avec les bonnes cellules.
Code:
Sub Macro1()
Range("A1:F15").AutoFilter Field:=6, Criteria1:="<>X", Operator:=xlAnd
Range("_FilterDatabase").Offset(1, 0).Resize(Range("_FilterDatabase").Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
ActiveSheet.AutoFilterMode = False
End Sub
 

Discussions similaires

Réponses
46
Affichages
830
Réponses
6
Affichages
129

Statistiques des forums

Discussions
312 160
Messages
2 085 839
Membres
103 001
dernier inscrit
vivinator