Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim col As Variant
With Sheets("Général")
col = Application.Match(Sh.Name & "*", .UsedRange.Rows(3), 0)
If IsError(col) Then Exit Sub
Application.ScreenUpdating = False
.Cells.Copy Sh.[A1] 'copie les cellules
.[A1].Copy Sh.[A1] 'allège la mémoire
End With
ActiveWindow.Zoom = 55 'facultatif,règle le zoom
With Sh.UsedRange
If .Rows.Count < 4 Then Exit Sub 'sécurité
With .Offset(3).Resize(.Rows.Count - 3)
.Columns(col).EntireColumn.Insert 'insère une colonne auxiliaire
.Columns(col) = "=1/(RC[1]=""Oui"")" 'critère
.Columns(col) = .Columns(col).Value 'supprime les formules
.EntireRow.Sort .Columns(col), xlAscending, Header:=xlNo 'tri pour regrouper et accélérer
On Error Resume Next 'si aucune SpecialCell
.Columns(col).SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete 'supprime les valeurs d'erreur
.Columns(col).EntireColumn.Delete 'supprime la colonne auxiliaire
End With
End With
With Sh.UsedRange: End With 'actualise les barres de défilement
End Sub