Traduction de texte d'après mots piochés dans un glossaire
Bonjour à tous !
Je bloque sur une partie de mon code et j'ai besoin d'une solution.
But de la macro :
Dans un onglet liste, remplacer les mots de chaque cellule de la colonne B par leur équivalents pris dans un glossaire (feuille glossaire)
Ecrire la chaine de caractères "traduite" dans la colonne voisine
boucler sur les 6 langues du glossaire
compter et écrire le nombre de mots non traduits
mettre en rouge les mots non traduits dans la chaine traduite
Subtilités à considérer :
1/ les expressions contenant un espace comme "matière principale" doivent être considérées comme un seul mot. Du coup vous verrez que dans mon code je crée une colonne temporaire C où dans ces expressions spécifiquement je remplace l'espace par un tiret. "matière principale" devient "matière-principale"
Au passage je modifie le glossaire pour que "matière-principale" ait une traduction sans tiret (ex. Main material)
2/ les données chiffrées ne sont pas à traduite (ex 50%) et ne doivent pas incrémenter le compteur des mots non traduits
3/ si les textes à traduire contiennent des saut de ligne (chr(10)) il faut les conserver. Dans ma colonne temporaire je remplace chr(10) par " saut-de-ligne " que je ne traduit pas et remplace par un saut de ligne pour la mise en forme finale
4/ les signes de ponctuation qui terminent un mot doivent-être ignorés et conservés dans la version finale. exemple "Matière, " fera chercher le mot "matière" dans le glossaire et sera traduit par "material, "
Mon code reste à cleaner et à améliorer car constitué de bouts de macros que j'ai faites. Ne critiquez donc pas cette partie.
LA OU JE BLOQUE :
c'est l'écriture avec le format texte rouge sur les colonnes finales D à I (6 langues). La mise en forme ne se fait que sur ma colonne temporaire C. j'ai l'impression que la couleur de texte saute quant j'effectue la concaténation des mots traduits / non traduits : cell.Offset(0, j).Value = Replace(Join(mots, " "), " saut-de-ligne ", chr(10))
En PJ mon fichier test
Merci pour vos lumières !
NB : une autre méthode plus simple consisterait à faire traduire chaque cellule dans un traducteur en ligne (microsoft translate je crois). Mais ça demande un compte avec une carte bleue enregistrée... ce que je ne souhaite pas.