Public Function CreateCode(InString) As String
NormString = LCase(ConvertCharInString(InString))
StringLength = Len(NormString)
MaxCodeSize = Worksheets("Data").Cells(1, 2)
' Fonction Excel : =SI(NBCAR(C2)<Data!$B$1;C2;SI(NON(ESTERR(TROUVE(" ";C2)));GAUCHE(C2;Data!$B$1/2) & GAUCHE(STXT(C2;TROUVE(" ";C2)+1;NBCAR(C2)-TROUVE(" ";C2));Data!$B$1/2);STXT(C2;1;Data!$B$1)))
If Len(NormString) <= MaxCodeSize Then ' Si la chaine d'entrée est plus courte que le code désiré, on garde la chaine complète
CreateCode = NormString
Else
HasSpace = InStr(1, NormString, " ") ' La chaine contient-elle un espace ?
If (HasSpace = 0) Then
CreateCode = Left(NormString, MaxCodeSize) ' NON : on tronque juste la chaine d'entrée à la longueur maximale choisie
Else
Dim SubStrings() As String
SubStrings = Split(NormString, " ") ' OUI : on sépare les membres gauche et droite de la chaine
If (UBound(SubStrings) >= 2) Then
SubStrings(2) = SubStrings(2) & SubStrings(3)
End If
CreateCode = Left(SubStrings(1), MaxCodeSize / 2) & Left(SubStrings(2), MaxCodeSize / 2)
End If
End If
CreateCode = LCase(CreateCode)
End Function