1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| Function DelGroupChars(MyTxt)
Dim T, U, V, Deb2
Dim StrOutput, GrpChar
StrOutput = MyTxt ' si aucun changement de MyTxt, DelGroupChars sera égal
For T = 1 To Len(StrOutput) - 1
V = CInt(Len(StrOutput) / 2) ' au plus, la suite de caractère ne pourra être que la moitié de la phrase
For U = 2 To V ' u=2 car un groupe de caractères à un minimum de 2 caractères
GrpChar = Mid(StrOutput, T, U) 'on augmente le taille du groupe de caractères à rechercher, à chaque tour de boucle
Deb2 = InStr(T + U - 1, StrOutput, GrpChar, vbBinaryCompare)
If Deb2 = T + U Then ' si un même groupe de caractères suit immédiatement
If T = 1 Then ' si T est le début de la phrase
StrOutput = Right(StrOutput, Len(StrOutput) - U) ' supprime au début de la phrase le groupe de caractères identique
T = T - 1 ' pour ré-sélectionné le groupe de caractères depuis le début de la phrase
Else
' on récupéré la partie gauche de la phrase avant la répétition du groupe de caractères trouvé
' auquel on ajoute la partie droite de la phrase sans la répétition du groupe de caractères trouvé
' quand le 3ém paramétré de la fonction Replace est <> 1, replace renvoie la partie droite
' de la phrase en commençant à la valeur du 3ém paramètre
StrOutput = Left(StrOutput, Deb2 - 1) & Replace(StrOutput, GrpChar, "", Deb2, 1, vbBinaryCompare)
T = T - 1
End If
Exit For
End If
Next
Next
DelGroupChars = StrOutput
End Function |
Partager