Donnez vie à vos documents numériques !
 

Transformer des minuscules accentuées en majuscules sans accent

abracadabraPDF Forums PDF – Général Transformer des minuscules accentuées en majuscules sans accent

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46136
    Bafouille
    Membre

    Bonjour,
    je travaille sur un formulaire où j’utilise javascript avec la fonction :  /* script de touches perso */
    event.change = event.change.toUpperCase();

    Le souci est que si les personnes écrivent en minuscule avec des accents et bien l’accent reste sur la majuscule.
    je n’ai pas trouvé de solution sur le forum.
    D’avance merci.

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Auteur
    Réponses
  • #66193
    Merlin
    Maître des clés

    Bonjour et bienvenue.

    Ce n’est pas possible, tout simplement parce-que ça ne se fait pas, c’est contraire aux règles du français.
    En effet, contrairement à d’autres langues dans lesquelles ils ne sont que toniques, en français les accents ont pleine valeur orthographique et sémantique. Ce qui rend leur présence nécessaire, que l’on écrive en minuscules ou en capitales.

    Je t’invite à lire cet article explicatif, qui répond également à cette question cruciale : quelle est la différence entre les capitales et les majuscules ?
    ==> https://www.abracadabrapdf.net/?p=870

    CapAccent.jpg

    #66194
    Bafouille
    Membre

    c’est bien embêtant. je connais les règles mais dans mon taff j’ai besoin de faire une extraction de ce formulaire pour l’exporter vers un autre logiciel  qui ne supporte ni accent, ni ponctuation ni caractères spéciaux. Je suis donc obligée quand les gens ont saisi des données avec accents de les modifier avant de faire mon extraction.    :oh:    Il existe pourtant des formules où l’on dit de transformer un à en A, c’est vraiment pas possible dans mon cas ?  snif
    je suis donc obligée de rester avec mon : event.change = event.change.toUpperCase();  Pourquoi tant de haine ? 

    #66195
    Merlin
    Maître des clés

    Par “pas possible” je veux dire que ce n’est pas prévu d’origine, mais on peut le faire quand même.  :geek:
    JavaScript supporte les requêtes GREP qui permettent (entre autres) de rechercher toutes les formes d’une lettre via un seul métacaractère, et de la remplacer par ce qu’on veut.

    Par exemple e est le métacaractère* qui recherche toutes les formes du e : e, é, è, ê, ë, etc.
    Dans ton cas il suffit donc de rechercher e et de le remplacer par e
    Et ainsi de suite pour les autres voyelles.

    Ça te parle ?

    Et comme un bonheur ne vient jamais seul, le GREP n’est pas forcément sensible à la casse. On peut donc l’utiliser avant ou après la conversion en capitales.

    * En vrai celui-là c’est un “posix”, mais je préfère faire simple ;-)

    #66196
    Bafouille
    Membre

    :extra:  hourra !  En revanche je n’y connais rien à la programmation. je me débrouille à chaque fois avec tout ce que je trouve sur les forums.
    Est-ce qu’il y aurait moyen d’avoir au moins le début et ensuite je me dépatouille. Faut-il enlever mon script de mise ne majuscule du coup ?
    car si je fais une recherche genre e et que je remplace par E faut  juste du coup que je fasse ma recherche sur toutes les lettres ? Désolée mais je suis vraiment pas douée dans ce domaine. En tout cas, merci de m’avoir déjà rassurée en me disant que c’était, finalement, possible.  :soleil:

    #66197
    Merlin
    Maître des clés

    L’autre approche serait d’interdire la saisie des caractères indésirables en la limitant aux seuls caractères ASCII, mais c’est beaucoup moins user-friendly.

    #66198
    Bafouille
    Membre

    Alors, je ne veux rien changer pour les utilisateurs. Sinon ça va râler.  :Smiley08:
    tant pis si le script est un peu long je vais prendre le temps de le réaliser par contre il me faudrait au moins le début si possible car là,  je ne sais pas du tout ce que je dois faire.

    #66199
    Merlin
    Maître des clés

    Bon, je me suis aperçu que JavaScript ne supporte pas tous les métacaractères posix, alors du coup il faut lister tous les caractères qu’on veut éliminer.  :Smiley07:

    Place ce script en Script de validation dans les champs concernés :

    Code:
    var outputStr1 = event.value.replace(/[à|â|ä]/g,”a”);
    var outputStr2 = outputStr1.replace(/[é|è|ê|ë]/g,”e”);
    var outputStr3 = outputStr2.replace(/[ï|î]/g,”i”);
    var outputStr4 = outputStr3.replace(/[ö|ô]/g,”o”);
    var outputStr5 = outputStr4.replace(/[ù|û|ü]/g,”u”);
    var outputStr6 = outputStr5.replace(/ÿ/g,”y”);
    var outputStr7 = outputStr6.replace(/œ/g,”oe”);
    var outputStr8 = outputStr7.replace(/æ/g,”ae”);
    var outputStr9 = outputStr8.replace(/ç/g,”c”);
    event.value = outputStr9.toUpperCase();

    La mécanique est simple, c’est facile à adapter.
    J’ai aussi pensé aux ç, aux æ et aux œ !

    À tester avec cette phrase : Dès Noël où un zéphyr haï me vêt de glaçons würmiens je dîne d’exquis rôtis de bœuf au kir à l’aÿ d’âge mûr & cætera !
    Exemple ci-joint.
    :Smiley15:

    #66200
    bebarth
    Maître des clés

    bonjour,
    J’avais écris un script pour écrire des adresses mail (sans la mise en majuscule), mais avec des “if”, et en script de touches personnalisé voici ce que donne l’adaptation :

    Code:
    if (event.change==”à” || event.change==”â” || event.change==”ä”) event.change=”a”;
    if (event.change==”é” || event.change==”è” || event.change==”ê” || event.change==”ë”) event.change=”e”;
    if (event.change==”ï” || event.change==”î”) event.change=”i”;
    if (event.change==”ö” || event.change==”ô”) event.change=”o”;
    if (event.change==”ù” || event.change==”û” || event.change==”ü”) event.change=”u”;
    if (event.change==”ÿ”) event.change=”y”;
    if (event.change==”œ”) event.change=”oe”;
    if (event.change==”æ”) event.change=”ae”;
    if (event.change==”ç”) event.change=”c”;
    event.change=event.change.toUpperCase();

    J’ai aussi pensé aux ç, aux æ et aux œ !

    …moi je n’y avais pas pensé !!!
    @+
    :bonjour:

    #66201
    Merlin
    Maître des clés

    Ton script fonctionne pendant la saisie (script de touches perso*) en remplaçant les caractères indésirables à la volée.
    Celui-ci intervient après la saisie (script de validation* ou de format*) ou l’importation d’une chaine de caractères en remplaçant tout d’un coup.
    Ce n’est pas le même usage.
    :Smiley03:

    * Voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/

    #66202
    bebarth
    Maître des clés

    J’ai bien compris, mais mon adaptation était pour répondre à la première demande qui était un script de touches personnalisé !

    je travaille sur un formulaire où j’utilise javascript avec la fonction :  /* script de touches perso */
    event.change = event.change.toUpperCase();

    Mon script original était dans un générateur de cartes de visite et reprenait les champs Prénom et Nom pour former l’adresse prenom.nom@societe.com, et le tout en minuscule…
    @+
    :bonjour:

    #66203
    Bafouille
    Membre

    Trop génial Merlin. Merci beaucoup. je viens de le tester et ça fonctionne à merveille.  Mille merci.  :bravo:  :bravo:

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Vous devez être connecté pour répondre à ce sujet.