par , 07/11/2016 à 23h10 (728 Affichages)
Sujet initial : http://www.developpez.net/forums/d16...-aide-d-macro/
Sur Feuil1, les données commencent en ligne 2 car la ligne 1 contient des en-têtes.
La plage A à F est contigüe.
1) on cherche la première ligne dont la cellule de la colonne C commence par "401" dans la valeur de la cellule.
2) de cette ligne là incluse, et pour toutes les lignes du dessous, on supprime chaque ligne où la cellule de la colonne F est différente des valeurs R et F à la fois.
La fonction Find permet de trouver la cellule de (1).
Le filtre automatique placé en colonne F, utilisant les 2 Criterias en association va masquer les lignes contenant R et F (2).
On part de la cellule du premier point, on sélectionne tout ce qui est en dessous et qui est "visible" sur la feuille, pour en supprimer les lignes intégrales (2 Bis).
1 2 3 4 5 6 7 8 9 10 11 12 13
| Sub toto()
Dim Cell As Range
With Feuil1.Cells(1, 1).CurrentRegion
Set Cell = .Columns(3).Find("401*", , , xlPart)
If Not Cell Is Nothing Then
.AutoFilter: .AutoFilter 6, "<>R", xlAnd, "<>F"
If .Offset(1, 0).SpecialCells(xlCellTypeVisible).Rows.Count > 1 Then
.Offset(Cell.Row - 1, 0).Resize(.Rows.Count - Cell.Row + 1, 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End If
.AutoFilter
End If
End With
End Sub |