Initiale en majuscule pour plusieurs noms inscrits a la suite, egalement prenoms avec tiret

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 083 fois - Téléchargée 38 fois

Contenu du snippet

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 ...

A voir également

Ajouter un commentaire

Commentaires

akastels
Messages postés
5
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2003

Voici le code que j'emploie depuis longtemps (je dis ça au cas où...):
Function PremMaj()
Dim SD As Variant, mc As Control, I As Integer
Dim mf As Form
Set mf = Screen.ActiveForm
mf.HelpContextId = 1
Set mc = Screen.ActiveControl
mc = UCase(Left(Trim(mc), 1)) & Mid(Trim(mc), 2)
For I = 1 To Len(mc) - 1
SD = Mid(mc, I, 1)
If SD "-" Or SD "_" Or SD = " " Or Asc(SD) = 13 Or Asc(SD) = 10 Then
mc = Left(mc, I) & UCase(Mid(mc, I + 1, 1)) & Mid(mc, I + 2)
Else
mc = Left(mc, I) & LCase(Mid(mc, I + 1))
End If
Next I
mc = Trim(mc)
End Function

Celui-ci a l'avantage de mettre la majuscule au 2ème prénom si celui-ci est composé, puis après un retour chariot, à la ligne, ou séparé par "_".
cs_mariochk
Messages postés
11
Date d'inscription
vendredi 1 février 2002
Statut
Membre
Dernière intervention
7 octobre 2004

Autant pour moi, je l'ai pourtant cherchée cette commande, mais depuis l'aide ACCESS avec des mots clés (INITIALE, MAJUSCULE, etc ) NADA ! MERCI A TOI ça me réconcilie avec VB car je trouvais un peu débile de devoir créer à la main une commande qui aurait dû être inclue ...
VicoLaChips2
Messages postés
439
Date d'inscription
dimanche 20 janvier 2002
Statut
Membre
Dernière intervention
2 février 2010
1
Autrement il y a une fonction incluse à vba :
dim result as string
result = strConv(MaChaineDeCaractere,vbProperCase)
@+
KaViDee
Messages postés
262
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
1 février 2019

Mes 12 Fonctions super utiles, c'est un vieux truc tout pourri que j'avais fais il y longtemps et qd je venais tout juste de découvrir ces fonctions.
Et l'algo qui permet de mettre tous les mots en majuscule je viens de le trouver aujourd'hui.
Salut grand Dieu...
cs_mariochk
Messages postés
11
Date d'inscription
vendredi 1 février 2002
Statut
Membre
Dernière intervention
7 octobre 2004

EN +, TES 12 SUPER FONCTIONS SUPER UTILES NE SONT PAS FICHUES DE METTRE L'INITIALE EN MAJUSCULE A CHAQUE NOM INSERES SUR UNE LIGNE BEURK ! ENCORE UNE PREUVE QUE JE T'AI PAS COPIE ET J'AI BIEN FAIT, SINON JE DEVRAIS ENCORE ME CREUSER POUR TROUVER LA SOLUCE ! Salut petit dieu
Afficher les 10 commentaires

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.