Function PREMLETTRE(S$, Optional casse As VbStrConv) As String
Dim mc As Object, m As Object
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "\b\w"
If .test(S) = True Then
Set mc = .Execute(S)
For Each m In mc
PREMLETTRE = StrConv(PREMLETTRE & m, casse) & "."
Next m
End If
PREMLETTRE = Left(PREMLETTRE, Len(PREMLETTRE) - 1)
End With
End Function
=SI(A1="";"";GAUCHE(A1;NBCAR(A1)-1))
➯ "élève"Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
Application.EnableEvents = False
Target = Left(Target.Value, Len(Target.Value) - 1)
Application.EnableEvents = True
End If
End Sub
@Etoto, on ne sait pas ce que tu veux faire précisément.Effectivement je coirs que c'est plus simple d'utiliser une DROITE ou GAUCHE avec un SI aussi. J'y avais pas pensé merci.
ExactementOk, cette fonction de @Staple1600 est subtile avec l'utilisation d'un script pour les expressions régulières.
Tu veux des '.' comme séparateur des lettres sauf la dernière donc.
Function PREMLETTRE(S$, Optional casse As VbStrConv) As String
Dim mc As Object, m As Object
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "\b\w"
If .test(S) = True Then
Set mc = .Execute(S)
For Each m In mc
PREMLETTRE = StrConv(PREMLETTRE & m, casse) & "."
Next m
End If
PREMLETTRE = Left(PREMLETTRE, Len(PREMLETTRE) - 1)
End With
End Function
'---------------------------------------
'Fonction qui rend l'acronyme d'un texte
'---------------------------------------
Function Acronyme(Cellule As Range) As String
Dim C As String, S As String
Dim i As Integer
Dim Bool As Boolean
S = CStr(Cellule.Value)
For i = 1 To Len(S)
C = Mid(S, i, 1)
'Ce test identifie toutes les lettres, accentuées ou pas !
If StrComp(Ucase(C), LCase(C), 0) <> 0 Then
If Not Bool Then Acronyme = Acronyme & Ucase(C) & "."
Bool = True
Else
Bool = False
End If
Next i
End Function