Pour Access, ce petit code VBA permet lors d'une saisie de plusieurs prénoms dans un champ (par ex : michel alain robert) de mettre une initiale à chacun des prénoms, soit : Michel Alain Robert dans ce cas. Une nouvelle mise à jour pour les prénoms avec tiret, ça manquait.
Source / Exemple :
Function convertInitMaj(envoi)
'[envoi] représente la variable qui doit être convertie
'[convertInitMaj] est [envoi] qui a été converti
Dim précèdeMaj() As String
TailleDim = 1 'définit le nombre de variables, soit 2 dans ce cas, vu qu'il faut
'une majuscule après un espace et après un tiret
ReDim précèdeMaj(TailleDim)
précèdeMaj(0) = " " 'définit l'espace
précèdeMaj(1) = "-" 'définit le tiret
For compte = 0 To TailleDim
If IsNull(envoi) = False Then
convertInitMaj = UCase(Mid(envoi, 1, 1)) + Right(LCase(envoi), Len(envoi) - 1)
If InStr(envoi, précèdeMaj(compte)) Then
Do
a1 = InStr(Right(envoi, Len(envoi) - a2), précèdeMaj(compte))
tmp = Left(tmp, a2) + UCase(Mid(envoi, a2 + 1, 1)) + Right(envoi, Len(envoi) - a2 - 1)
a2 = a2 + a1
convertInitMaj = tmp
Loop Until a1 = 0
End If
'....................................................................
End If
Next
End Function
Conclusion :
La liste des précèdeMaj() n'est pas exhaustive, on peut tout aussi bien s'imaginer d'une liste de prénoms séparés par des virgules ou des "_" comme le précise akastels. Par contre, je n'ai pas testé avec des retours chariots, n'en ayant pas l'utilité.
PS pour VicoLaChips2, l'utilitaire : "vbProperCase" ne met malheureusement pas de MAJ après les tirets ...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.