Bonjour
explication de la première avec un correctif logique
'si les espaces sont a prendre en compte
Function NoDoBen(v As String)
Dim x1%, x2%
'x1=la position de depart de la chaine" do"(do avec un espace devant)
x1 = InStr(1, v, " do")
'x2=la position de depart de la chaine"ben "(ben avec un espace après)
x2 = InStr(x1, v, "ben ")
'a supprimer 'If x1 + x2 <> x1 Then NoDoBen = Replace(v, Mid(v, x1, x2 + 4 - x1), " ")
'correctif
If (x1 + x2) <> x1 and x1 < x2 Then NoDoBen = Replace(v, Mid(v, x1, x2 + 4 - x1), " ")
'1° If (x1 + x2) <> x1 and x1 < x2 -->si la position de do +la position de ben <> de la position de do alors on a les deux
'2° and x1 < x2'-->si la position de do est plus petite que la position de ben alors alors c'est dans l'ordre (on évite les ben...do)
'3° Mid(v, x1, x2 + 4 - x1) --> partie de v démarrant à la position de x1et allant jusqu"a la position de x2+les 4 caractères de "ben " moins la position de x1 qui est " do"
4° replace donc cette partie par un espace
End Function