Comment traduire un texte dans toutes les langues en utilisant une fonction Excel

Dans ce tutoriel, je vais vous montrer comment mettre en place une petite fonction de traduction des textes multilingue et automatisée.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

1. Présentation

Pour découvrir comment mettre en place notre fonction de traduction automatique en plusieurs langue dans Excel, nous allons partir du tableau suivant :

Excel formation - Excel traduction - 01

Dans celui-ci, nous retrouvons simplement quatre phrases (assez banales je vous l’accorde) en français, et que nous allons souhaiter traduire dans trois langues différentes : l’anglais, l’espagnol et l’italien.

Pour cela, nous allons bien entendu devoir passer par le développement d’une petite macro-commande en VBA qui permettra de récupérer une fonction simplifiée que nous pourrons ensuite utiliser directement depuis une feuille de calcul.

Évidemment, si nous n’avons aucune notion du langage de programmation VBA, vous pouvez quand même suivre ce tutoriel, nous reviendrons en effet dans le détail sur les différents aspects de cette macro-commande.

Mais bien sûr, si vous souhaitez aller plus loin dans la découverte du langage VBA, vous pouvez évidemment consulter la formation disponible sur le blog en cliquant ici.

 

2. La fonction SERVICEWEB()

Avant de commencer le développement de la macro-commande, nous allons tout d’abord découvrir deux fonctions Excel très puissantes, qui vont nous permettre parvenir à nos fins.

La première de ces deux fonctions est SERVICEWEB().

Celle-ci permet de récupérer très simplement des informations depuis un service internet.

Le type d’information récupéré dépendra du service appelé en tant qu’argument, sachant que le cas le plus courant consiste à récupérer le code source d’une page internet à partir de son adresse.

Attention toutefois à trois limitations de la fonction :

  • La fonction SERVICEWEB() n’est disponible sur Excel qu’à partir de la version 2013,
  • La fonction SERVICEWEB() n’est fonctionnelle que sous système Windows (elle est proposée sous MacOs, mais ne fonctionne pas)
  • La fonction SERVICEWEB() ne peut pas retourner une chaîne de plus de 32767 caractères, il s’agit en effet du nombre de caractères maximal pouvant être inséré dans une cellule

Pour récupérer la valeur d’un service web, il suffit de saisir son adresse URL en tant qu’unique argument.

 =SERVICEWEB(url) 

Comme vous pouvez l’imaginer, nous allons utiliser le service de Google pour effectuer cette traduction.

Pour cela, nous allons rendre à l’adresse suivante : https://translate.google.com/m

La dernière partie de l’adresse (« /m ») permet d’accéder directement à la partie mobile du site, ce qui permettra d’obtenir une page plus légèrement et donc plus rapide à charger, et également plus simple à analyser.

Pour commencer, nous allons demander à Google une traduction d’un terme très simple, par exemple « Bonjour » :

Excel formation - Excel traduction - 02

À partir de là, nous allons pouvoir nous intéresser à l’adresse utilisée par Google : « https://translate.google.com/m?sl=fr&tl=en&hl=fr&q=bonjour »

Celle-ci est très simple à analyser et à comprendre, nous y retrouvons en effet trois arguments :

  • La langue d’origine : « sl=fr »,
  • La langue de traduction : « tl=en »
  • Le terme à traduire : « q=bonjour »

Notez que l’argument supplémentaire « hl=fr » correspond à l’interface de la page web, nous pouvons simplement l’ignorer.

À partir de là, nous pouvons simplement imaginer construire notre propre traduction dans la langue de notre choix.

Par exemple, pour traduire le mot « travailler » en espagnol : « https://translate.google.com/m?sl=fr&tl=es&q=travailler »

Excel formation - Excel traduction - 03

 

3. La fonction URLENCODAGE()

Maintenant, si nous essayons de traduire, non plus un simple mot, mais une phrase, nous allons pouvoir constater que l’adresse va automatiquement s’adapter pour que l’adresse reste valide : « https://translate.google.com/m?sl=fr&tl=en&q=il%20fait%20beau »

Les espaces sont ainsi transformés en « %20 ».

Pour obtenir le même résultat avec Excel, nous allons devoir utiliser une nouvelle fonction : la fonction URLENCODAGE().

Cette fonction connait à peu près les mêmes limites que la fonction SERVICEWEB() : celle-ci fonctionne sur les versions 2013 et suivantes d’Excel et uniquement sous Windows :

L’exemple suivant va ainsi retourner pour valeur « il%20fait%20beau » :

 =URLENCODAGE("il fait beau") 

 

4. Le traitement des données

La dernière opération que nous devons découvrir avant d’attaquer le développement de la macro va consister à explorer les données récupérées pour obtenir la traduction du terme d’origine.

Pour cela nous allons fonctionner par étapes avec le petit tableau suivant :

Excel formation - Excel traduction - 04

En cellule B15, nous saisissons un terme à traduire.

Ensuite, nous allons convertir celui-ci pour pouvoir l’utiliser dans une adresse URL :

 =URLENCODAGE(B15) 

Excel formation - Excel traduction - 05

Puis nous construisons l’adresse complète qui permet d’obtenir la traduction de ce terme, en utilisant la première partie de celle-ci, puis en ajoutant à la fin le résultat de la cellule B16 :

  ="https://translate.google.com/m?sl=fr&tl=en&q="&B16 

Excel formation - Excel traduction - 06

Une fois que l’adresse est correctement formatée, nous pouvons l’utiliser en tant qu’argument de la fonction SERVICEWEB() :

 =SERVICEWEB(B17) 

Excel formation - Excel traduction - 07

Et voilà, nous avons maintenant récupéré le code source de la page, dans lequel se trouve justement la valeur traduite du terme.

Pour le retrouver, nous allons revenir dans la cellule B18, puis appuyer sur la touche [F9] pour visionner la valeur de la cellule.

Tout à la fin, nous retrouvons la traduction de notre terme avec la chaîne suivante : « <div class="result-container">The weather is nice</div> »

Excel formation - Excel traduction - 08

Cette traduction est donc comprise entre les deux balises « <div class="result-container"> » et « </div> ».

Retenez bien ces informations, nous en aurons bientôt besoin !

 

5. Créer la fonction TRADUIRE()

Maintenant que nous en savons assez, nous allons pouvoir construire notre fonction TRADUIRE().

La première chose à faire est alors de lancer l’éditeur de code VBE (pour Visual Basic Editor), qui est l’éditeur de code intégré dans les différentes applications de la suite Office et qui permet de développer des macro-commandes en VBA.

Pour cela, nous appuyons simplement sur les touches [Alt]+[F11] :

Excel formation - Excel traduction - 09

VBE s’ouvre alors et nous allons commencer par créer un nouveau module, c’est-à-dire est une feuille de saisie de code vide dans laquelle nous allons pouvoir saisir nos macros et fonctions.

Pour insérer un nouveau module, nous nous rendons dans le menu Insertion > Module :

Excel formation - Excel traduction - 10

Une fois dans le nouveau module, nous pouvons créer notre fonction en utilisant le mot clé Function, suivi du nom de la fonction :

Excel formation - Excel traduction - 11

Lorsque nous appuyons sur la touche [Entrée], VBE nous insère automatiquement les parenthèses pour y insérer les trois arguments qui vont nous intéresser :

Function TRADUIRE(texte As String,  langueEntree As String, langueSortie As String) As String
 
End Function

Ces arguments sont les suivants :

  • texte : il s’agit du texte que nous souhaitons traduire,
  • langueEntree : il s’agit de la langue d’origine de ce terme,
  • langueSortie : il s’agit de la langue dans laquelle la traduction doit être faite

Et enfin, nous pouvons typer la fonction en tant que String, c’est-à-dire une chaîne de caractères.

Pour commencer, nous allons constituer l’adresse d’accès au service Google :

    Dim url As String
    url =  "https://translate.google.com/m?&sl=" & langueEntree &  "&tl=" & langueSortie & "&q=" & WorksheetFunction.EncodeURL(texte)  (texte)

Pour utiliser la fonction SERVICEWEB() dans VBA, nous allons appeler celle-ci à partir de l’objet principal WorksheetFunction.

Évidemment, nous devons utiliser le terme anglais de la fonction WorksheetFunction.EncodeURL().

Ensuite, nous allons nous assurer qu’il n’y a aucune majuscule dans cette adresse, qui entrainerait un résultat erroné, pour cela nous utilisons la fonction VBA LCase() :

    url = LCase(url)

Pour l’étape suivante, nous allons stocker le code source de la page dans une variable que nous appelons « html » :

    Dim html As String
    html = WorksheetFunction.WebService(url) 

Le plus « dur » est fait !

Maintenant, il ne va plus rester qu’à réduire la chaîne au seul terme traduit, et pour cela nous allons pouvoir utiliser les balises que nous avons identifiées un peu plus tôt.

Tout d’abord, nous stockons la balise d’ouverture dans une variable :

    Dim baliseDebut As String
    baliseDebut = "<div  class=""result-container"">"

Attention de bien doubler les guillemets à l’intérieur de la chaîne de caractères.

Ensuite, nous allons rechercher la position de cette balise dans la chaîne html en utilisant la fonction InStr() :

    Dim positionDebut As Integer
    positionDebut = InStr(html, baliseDebut)

Puis la position de la balise de fin, en utilisant encore une fois la fonction InStr(), mais utilisant le premier paramètre optionnel qui permet de définir la position à partir de laquelle la recherche doit commencer :

    Dim positionFin As Integer
    positionFin = InStr(positionDebut, html, "</div>") 

Pour finir, nous pouvons récupérer la chaîne située entre les deux bornes que nous venons de déterminer, en utilisant la fonction Mid() :

    texte = Mid(html, positionDebut, positionFin  - positionDebut)

Il ne reste plus qu’à exclure la balise de début de cette chaîne, et à retourner le résultat obtenu à la fonction TRADUIRE() :

    TRADUIRE = replace(texte, baliseDebut,  "")

Et voilà, il ne reste plus qu’à utiliser la fonction TRADUIRE() directement depuis la feuille de calcul, en l’appelant comme nous le ferions pour n’importe quelle autre fonction Excel

=TRADUIRE($A9;$A$8;B$8)

Excel formation - Excel traduction - 12

Voici la fonction personnalisée complète : 

Function TRADUIRE(texte As String, origine As String, destination As String)

    Dim URL As String
    URL = "https://translate.google.com/m?sl=" & origine & "&tl=" & destination & " &q=" & WorksheetFunction.EncodeURL(texte)
    URL = LCase(URL)
    URL = Replace(URL, "zh-tw", "zh-TW")
    
    Dim HTML As String
    HTML = WorksheetFunction.WebService(URL)
    
    Dim baliseDebut As String
    baliseDebut = "<div class=""result-container"">"
    
    Dim positionDepart As Integer
    positionDepart = InStr(HTML, baliseDebut)
    
    Dim positionFin As Integer
    positionFin = InStr(positionDepart, HTML, "</div>")
    
    texte = Mid(HTML, positionDepart, positionFin - positionDepart)
    texte = Replace(texte, baliseDebut, "")
    
    texte = Replace(texte, "&#39;", "'")
    
    TRADUIRE = texte
    
End Function

 

 

 



Articles qui pourraient vous intéresser

Comment écrire un nombre en toutes lettres avec une fonction Excel ?
Comment compter le nombre de mots contenus dans une cellule Excel ?
Comment comparer automatiquement deux feuilles de calcul sur Excel – On développe une mini-application ensemble
56 astuces pour grands débutants sur Excel !
Comment lancer les dés sur Excel ?
Comment créer une frise chronologique à partir d’un graphique Excel ?
Suivre les matchs de l’Euro 2020 sur Excel, le fichier !
Comment mélanger une liste de manière aléatoire sur Excel ?
Comment obtenir des informations sur l’utilisateur du fichier Excel avec la fonction INFORMATIONS() ?
Faut-il utiliser les macro-commandes VBA sur Excel ?
Comment exporter une feuille dans un classeur (ouvert ou fermé) sur Excel ?
Sortez du lot : comment créer un CV moderne et impactant avec Excel

Contact - Plan du site - À propos - Contact

© Excel-Formation 2018 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.