Bonjour,
Qu'entendez-vous par "le résultat" ? Le nombre de lignes supprimées est systématiquement inséré en C35 de la Feuil ANALYSE en fin d’exécution.
Ce code devrait plus correspondre à ce besoin :
Sub NET()
Dim LAST_ROW%, NOMBRE%
With Worksheets("Feuil1")
.[G2].Formula = "=SUM(ISNUMBER(SEARCH(""Suppression avec graphicage de l'élément de rang 2/2 de l'étape 149"",$F2)),ISNUMBER(SEARCH(""Suppression avec graphicage de l'élément de rang 2/2 de l'étape 19"",$F2)),COUNTIF(restauration!$G:$G,MID($F2,65,6)))" 'Applique une formule en J2 regroupant l'ensemble des critères
LAST_ROW = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("G2:G" & LAST_ROW).FillDown 'Etend la formule jusqu'à la fin de la plage
.UsedRange.AutoFilter Field:=7, Criteria1:=">0" 'Filtre >0 donc un critère au moins respecté
If .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1 = 0 Then 'Si aucune ligne à supprimer alors msgbox et sort de la macro
MsgBox "Aucun train n'est a supprimer ou en doublon", vbInformation, "Information"
Exit Sub
End If
Worksheets("ANALYSE").[C35].Value = .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count - 1 'Renseigne C35 en comptant nombre de cellule visible dans colonne 1
.Range("A2:A" & LAST_ROW).SpecialCells(xlCellTypeVisible).EntireRow.Delete 'Supprime les lignes affichées
.ShowAllData 'Défiltre
.Range("G2:G" & LAST_ROW).ClearContents 'Efface contenu G:G
MsgBox "Nettoyage terminé, nombre de lignes supprimées disponibles sur la feuille ANALYSE cellule I35", vbInformation, "Confirmation de suppression"
End With
End Sub
Une condition a été ajoutée afin que la macro s'arrête et n'écrase ni les lignes ni les valeurs en cas d'absence de lignes à supprimer. Il devient donc impossible d’exécuter la macro 2 fois d'affilé.
Je vous laisse tester et revenir vers moi.
Cdlt,