19 février 2009

INFOPATH : Premiere lettre en majuscule

Voici un petit tip qui fera du plus bel effet sur vos formulaires Infopath 2003 ou 2007.
Il permet de mettre automatiquement la première lettre d'un texte saisi par l'utilisateur en majuscule et ce sans une ligne de code.
  1. Pour cela, il faut se placer sur la zone de texte, puis clic droit et sélectionner "Propriété de la zone de texte",
  2. Ensuite cliquer sur "Règle" et ajouter une nouvelle règle,
  3. Cliquer sur "Ajouter une action",
  4. Dans la zone "Champ" sélectionner le champ sur lequel vous êtes situé,
  5. Dans la zone "Valeur", entrez la formule suivante: concat(substring(translate(., "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"), 1, 1), substring(., 2, string-length(.) - 1)),
  6. Valider le tout.
Et hop l'affaire est réglée, dès que l'utilisateur aura saisi son texte et que le focus ne sera plus sur le champ, la première lettre de votre champ se transformera en majuscule.

4 commentaires:

  1. Tu peux également mettre tout en majuscule ou en minuscule et en conservant les accents.

    translate(., "abcdefghijklmnopqrstuvwxyzàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ", "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝŸ")

    Ed

    RépondreSupprimer
  2. ne fonctionne pas, erreur de vérification de formule.... dommage cela m'aurait bien servi.

    RépondreSupprimer
  3. Si si la formule fonctionne très bien. Il ne faut pas copier la dernière virgule et il faut surtout cocher la case "Modifier l'expression Xpath"...

    Sinon pour les aficionados, voici une amélioration de la formule (demandée par une utilisatrice) qui met en majuscule uniquement la première lettre et qui met en minuscule toute les autres lettres de la zone de texte:

    "concat(substring(translate(., "abcdefghijklmnopqrstuvwxyzàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ", "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝŸ"), 1, 1), substring(translate(., "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝŸ", "abcdefghijklmnopqrstuvwxyzàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ"), 2, string-length(.) - 1))"

    RépondreSupprimer
  4. La version améliorée fonctionne parfaitement. Merci

    RépondreSupprimer