Option Explicit
Sub Clean()
Dim numcol As Long, p As Range, plage As Range
Sheets("Feuil1").Activate 'on sélectionne la feuille "Temps machine"
' on y recherche la colonne dont la première ligne contient "Code OF"
numcol = Application.IfError(Application.Match("Code OF", Rows(1), 0), 0)
' si la colonne "Code OF" n'est pas trouvée, on quitte la Sub
If numcol = 0 Then MsgBox "Erreur : Pas de colonne 'Code OF'": Exit Sub
' on va remplacer au sein de la colonne numcol, le texte "AD-DEBUT" par la valeur d'erreur #N/A
Columns(numcol).Replace What:="AD-DEBUT", Replacement:="#N/A", LookAt:=xlWhole, MatchCase:=False
' on va remplacer au sein de la colonne numcol, le texte "AD-DEBUT" par la valeur d'erreur #N/A
Columns(numcol).Replace What:="HNONP", Replacement:="#N/A", LookAt:=xlWhole, MatchCase:=False
' on trie les lignes selon la colonne numcol
'Range("a1").CurrentRegion.Sort key1:=Cells(1, numcol), order1:=xlAscending
On Error Resume Next 'si on ne trouve pas la valeur d'erreur dans la colonne numcol,
'SpecialCells retourne une erreur, cette instruction permet de continuer
'l'exécution
'on recherche toute les cellules avec valeur d'erreur dans la colonne numcol
Set p = Columns(numcol).SpecialCells(xlCellTypeConstants, xlErrors)
On Error GoTo 0
' si p n'est pas vide, on supprimme toutes les lignes de p
If Not p Is Nothing Then p.EntireRow.Delete
Set p = Nothing 'important pour la prochaine recherche 'SpecialCells'
Application.ScreenUpdating = False
' on copie les cellules de la fenêtre "Feuil1" ( la fenêtre où se trouve le bouton ? )
Sheets("Feuil1").Cells.Copy Sheets("Temps salariés").Cells ' sur la feuille "Temps salariés"
Sheets("Feuil1").Cells.Copy Sheets("Temps machine").Cells ' sur la feuille "Temps machine"
Sheets("Temps salariés").Select 'on sélectionne la feuille "Temps salariés"
' on y recherche la colonne dont la première ligne contient "Salarié (code)"
numcol = Application.IfError(Application.Match("Salarié (code)", Rows(1), 0), 0)
' si la colonne "Code OF" n'est pas trouvée, on quitte la Sub
If numcol = 0 Then MsgBox "Erreur : Pas de colonne 'Code OF'": Exit Sub
' on va remplacer au sein de la colonne numcol, le texte "MACHINSEUL" par la valeur d'erreur #N/A
Columns(numcol).Replace What:="MACHINSEUL", Replacement:="#N/A", LookAt:=xlWhole, MatchCase:=False
' on trie les lignes selon la colonne numcol
Range("a1").CurrentRegion.Sort key1:=Cells(1, numcol), order1:=xlAscending
On Error Resume Next 'si on ne trouve pas la valeur d'erreur dans la colonne numcol,
'SpecialCells retourne une erreur, cette instruction permet de continuer
'l'exécution
'on recherche toute les cellules avec valeur d'erreur dans la colonne numcol
Set p = Nothing
Set p = Columns(numcol).SpecialCells(xlCellTypeConstants, xlErrors)
On Error GoTo 0
' si p n'est pas vide, on supprime toutes les lignes de p
If Not p Is Nothing Then p.EntireRow.Delete
Rows("1:1").Delete Shift:=xlUp 'On efface la première ligne
Sheets("Temps machine").Activate 'on sélectionne la feuille "Temps machine"
' on y recherche la colonne dont la première ligne contient "Code OF"
numcol = Application.IfError(Application.Match("Salarié (code)", Rows(1), 0), 0)
' si la colonne "Salarié (code)" n'est pas trouvée, on quitte la Sub
If numcol = 0 Then MsgBox "Erreur : Pas de colonne 'Salarié (code)'": Exit Sub
' on va remplacer au sein de la colonne numcol, le texte "AD-DEBUT" par la valeur d'erreur #N/A
Columns(numcol).Replace What:="MACHINSEUL", Replacement:="#N/A", LookAt:=xlWhole, MatchCase:=False
' on trie les lignes selon la colonne numcol
Range("a1").CurrentRegion.Sort key1:=Cells(1, numcol), order1:=xlAscending
On Error Resume Next 'si on ne trouve pas la valeur d'erreur dans la colonne numcol,
'SpecialCells retourne une erreur, cette instruction permet de continuer
'l'exécution
'on recherche toute les cellules avec valeur d'erreur dans la colonne numcol
Set p = Columns(numcol).SpecialCells(xlCellTypeConstants, xlErrors)
On Error GoTo 0
' si p n'est pas vide, on supprimme toutes les lignes de p
If Not p Is Nothing Then p.EntireRow.Delete
Set p = Nothing 'important pour la prochaine recherche 'SpecialCells'
Cells.Replace What:="MACHINSEUL", Replacement:="TCI", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
Rows("1:1").Delete Shift:=xlUp 'On efface la première ligne
Application.ScreenUpdating = True
End Sub