[windev] Code (Text): PROCEDURE MajusculesSurPremièresLettres(PChampDeSaisie est un Champ) // on mémorise l'emplacement initial du curseur (important pour plus tard) sSource est une chaîne ANSI = PChampDeSaisie..Valeur nCurseur est un entier = PChampDeSaisie..Curseur sSeparateur est une chaîne = "" sResultat est une chaîne = "" //nCodeTouche est un entier = _EVE.wParam // on récupère le code de la touche appuyée // on distinguera le cas ou l'on est en train d'insérer du texte en milieu de chaine bInsertion est un booléen = nCurseur < Taille(PChampDeSaisie..Valeur) // on laisse les caractères spéciaux tranquilles //SI nCodeTouche<33 ALORS retour // on laisse tranquille les flèches directionnelles aussi //SI nCodeTouche>= 0x23 _ET_ nCodeTouche <=0x23 ALORS retour // pour chaque mot de notre chaine ... // (ici différents types de séparateurs tolérés) POUR TOUTE CHAÎNE sMot, nPositionSeparateur DE sSource SÉPARÉE PAR [" ","-",";","/",":","_",".","?","!",","] /// on met la première lettre en majuscule, et le reste en minuscule // un faux séparateur ne nous intéresse pas (avant le premier mot) SI nPositionSeparateur <2 ALORS sSeparateur = " " SINON // on récupère le caractère du séparateur (virgule ? espace ? etc ?) sSeparateur = Milieu(sSource,nPositionSeparateur-1,1) FIN sResultat+= sSeparateur + Majuscule(sMot[[1]]) + Minuscule(Milieu(sMot,2)) //sResultat+= " " + Majuscule(sMot[[1]]) + Minuscule(Milieu(sMot,2)) FIN // on réaffecte la chaine au champ PChampDeSaisie = Milieu(sResultat,2) // on retire le premier espace de la boucle // en n'oubliant pas de passer le curseur à la position suivante (telle que mémorisée au début + 1) SI PAS bInsertion ALORS PChampDeSaisie..Curseur = nCurseur+1 SINON // sauf si on est en insertion, ou l'on remet le curseur au même endroit. PChampDeSaisie..Curseur = nCurseur FIN //fin //fin RENVOYER sResultat [/windev] Bonjour j'ai pensé partager avec vous ce tuto