Une petite fonction qui permet à la volée de saisir un texte dans un champ de saisie et d'en obtenir un formatage direct avec une majuscule sur chaque début de mot, et le reste en minuscule. Exemple : On voit bien ici que même les ponctuations particulières sont gérées (plusieurs séparateurs possibles détectés). Usage dans le code : J'ai taché de rendre le plus simple possible l'appel de la procédure. Il faut donc juste écrire ceci dans le code événementiel "Sur Touche RELACHÉE" d'un champ de saisie : La procédure à insérer dans une collection de procédures globales : ATTENTION : pour les versions plus anciennes de windev, le code doit être légèrement modifié. En effet avant la version 22, on ne pouvait pas transmettre un champ en paramètre d'une procédure. On transmettait donc son nom, sous forme de chaîne, et on récupérait le contrôle ensuite sur ce champ via une indirection de champ dans une variable locale. Il faudra donc changer le début de la fonction, et son appel comme suit : 1) Modifiez ces 2 lignes dans la procédure : 2) Et transmettrez le "nom" du champ, et non pas le champ lui même en paramètre : Le code à copier en brut (Version 22 et supérieures) : Code (Windev): PROCEDURE MajusculesSurPremieresLettres_SurToucheRelachée(sNomchampdesaisie est une chaîne) PChampDeSaisie est un Champ <- {sNomchampdesaisie,indChamp}// 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 < Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(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 <=0x28 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 = Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(sSource,nPositionSeparateur-1,1) FIN sResultat+= sSeparateur + Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(sMot[[1]]) + Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(sMot,2)) //sResultat+= " " + Majuscule(sMot[[1]]) + Minuscule(Milieu(sMot,2)) FIN // on réaffecte la chaine au champ Pchampdesaisie = Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(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 [code] [B]Le code à copier en brut (Version plus anciennes :[/B] [code=windev] PROCEDURE MajusculesSurPremieresLettres_SurToucheRelachée(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 < Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(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 <=0x28 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 = Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(sSource,nPositionSeparateur-1,1) FIN sResultat+= sSeparateur + Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(sMot[[1]]) + Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(sMot,2)) //sResultat+= " " + Majuscule(sMot[[1]]) + Minuscule(Milieu(sMot,2)) FIN // on réaffecte la chaine au champ Pchampdesaisie = Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(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 Source : Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!