Sub Test_ERIC57_V3()
Application.ScreenUpdating = False
xErrNorm = 0
xErrVide = 0
xErrSlash = 0
xDerLig = Range("B65000").End(xlUp).Row 'On détermine la dernière ligne de la colonne B
For Each xCell In Range("B2:B" & xDerLig) 'On teste uniquement la colonne B (PRODUIT)
xDecoupe = Split(xCell.Value, "/")
xNombre = UBound(xDecoupe)
Select Case xNombre
Case Is = -1 'Cellule vide
xErrVide = xErrVide + 1
Range("C" & xCell.Row) = "Vide" 'On inscrit en colonne C le type d'erreur rencontrée
Case Is = 0 'Cellule ne contenant pas de /
xErrSlash = xErrSlash + 1
Range("C" & xCell.Row) = "Pas de /" 'On inscrit en colonne C le type d'erreur rencontrée
Case Is = 1 'Cellule avec /
If Len(xDecoupe(1)) = 1 Then
xErrNorm = xErrNorm + 1 'On incrémente le compteur des erreurs
xPremier = Left(xDecoupe(0), Len(xDecoupe(0)) - 1) 'On récupère la première partie
xDernier = Right(xDecoupe(0), 1) & xDecoupe(1) 'On récupère la dernière partie
Range("B" & xCell.Row) = xPremier & "/" & xDernier 'On inscrit dans la colonne désignée le résultat PRODUIT
Range("A" & xCell.Row) = xPremier 'On inscrit dans la colonne désignée le résultat MODELE
Range("C" & xCell.Row) = "Normal" 'On inscrit en colonne C le type d'erreur rencontrée
End If
End Select
Next xCell
xMess = Empty
xMess = xMess & "Traitement terminé : " & xErrNorm + xErrVide + xErrSlash & " erreur(s) trouvée(s) dont :" & Chr(13) & Chr(13)
xMess = xMess & " - " & xErrNorm & " erreur(s) sur traitement normal" & Chr(13) & Chr(13)
xMess = xMess & " - " & xErrVide & " erreur(s) sur cellules vides" & Chr(13) & Chr(13)
xMess = xMess & " - " & xErrSlash & " erreur(s) sur cellules ne contenant pas /" & Chr(13)
MsgBox xMess, vbInformation, "MODELE - PRODUIT"
Application.ScreenUpdating = True
End Sub