Option Explicit
Function ProperText$(ByVal x$)
Dim pastoucher, retouche, i&, EspacE$
'array de chaine qui ne doivent pas bouger
pastoucher = Array("ou", "et", "MDF", "HDD", "SSD", "avec", "a", "ai", "au", "du", "de", "en", "F/P", "l'", "d'", "à")
'le même array mais en proper
retouche = Array("Ou", "Et", "Mdf", "Hdd", "Ssd", "Avec", "A", "Ai", "Au", "Du", "De", "En", "F/P", "L'", "D'", "À")
x = Application.Proper(x) 'on met direct tout en proper
For i = 0 To UBound(pastoucher) 'boucle sur l'array pastoucher
If InStr(1, retouche(i), "'") Then EspacE = "" Else EspacE = " " 'on gere l'espace pour bien determiner un mot et non une partie demot
x = Replace(x, EspacE & retouche(i) & EspacE, EspacE & pastoucher(i) & EspacE) 'on remplace ce qui a été modifier qui ne devait pas
x = Replace(x, Chr(10) & retouche(i) & EspacE, Chr(10) & pastoucher(i) & EspacE) 'on gere ici le debut de ligne
Next
ProperText = x
End Function
Sub test()
MsgBox ProperText("jean valjean au ski" & Chr(10) & "à la fou d'alos")
End Sub