Macro Google translate pour traduire un gros fichier

Bonjour,

Voila j'ai souvent de gros fichier excel anglais à traduire en français.

Google translate à désormais une fonction pour importez un document à traduire au format xlsx (très pratique)

https://translate.google.fr/?hl=fr

Mais cela ne fonctionne pas bien avec des gros fichiers de plusieurs de millier de ligne. Il faut donc que je découpe mes fichiers excel en petit fichier pour m'en servir.

Bien sur je suis un gros feignant, et comme je sais qu'ici on aime bien les challenge, je vous sollicite pour m'aider à créer une petite macro.

J'ai donc besoin d'une macro qui utiliserai google translate pour traduire une colonne avec 10 à 100000 milles lignes anglais en français.

J'ai trouvé ce post

mais la macro ne fonctionne plus (je pense que google translate, IE ou meme excel ont changé), pourtant c'est exactement ce que je cherchai.

On peut télécharger la macro ici:

Mais comme vous pourrez le constater, lorsqu'on lance la macro, elle ouvre internet explorer et bloque sur cette ligne Google_Translate_Internet_Explorer_Automation.document.getElementById ("text_form")

Donc est-ce que quelqu’un serait capable de débuger cette macro, ou d'en créer une autre qui y ressemble sur le même principe en utilisant google translate (qui pour moi est le meilleur traducteur à ce jour).

Merci d'avance à tous

Bonjour,

J'ai trouvé sur le net un code pour la traduction de fichiers Word que j'ai adapté à Excel.

En terme de rapidité, il ne faut pas être pressé !

Les textes à traduire se trouvent en colonne A de la feuille nommée "Feuil1" à partir de A1. Fait un test sur quelques cellules pour voir le résultat :

Public Sub Traduction()

    Dim IE As Object
    Dim Plage As Range
    Dim Cel As Range
    Dim I As Long
    Dim Chaine As String

    'ouverture d'Internet Explorer
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True 'le rend visible

    IE.Navigate "http://translate.google.com/#en/fr"  'fr/en<--inverser si traduction Français/Anglais

    'attente du chargement complet
    Do Until IE.ReadyState = 4: DoEvents: Loop

    'défini la plage sur la colonne A de la feuille "Feuil1" à partir de A1, adapter...
    With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With

    'début de la traduction
    For Each Cel In Plage

        I = I + 1
        Chaine = Traduire(Cel.Value & "FinTexte" & I, IE, "FinTexte" & I)

        'résultat en colonne B
        Cel.Offset(, 1).Value = Replace(Chaine, "FinTexte" & I, "")

    Next Cel

    IE.Quit

    Set IE = Nothing

End Sub

Function Traduire(Texte As String, IE As Object, FinTexte As String) As String

    Dim Element As Object
    Dim Chaine As String
    Dim TblResult
    Dim Transl_Text
    Dim TxtResultat As String
    Dim I As Integer
    Dim Fin As Boolean
    Dim Debut As Double

     'Passer le texte dans la zone à traduire
     Set Element = IE.Document.getElementById("source")
     Element.Value = Texte

     'Attente traduction. Sortir de la boucle dès que la balise est trouvée
     Fin = False

     Do While Fin = False

        'effectue une pause de 1/2 seconde, tester sans pause si les textes ne sont pas trop longs !
        Debut = Timer
        Do While Timer < Debut + 0.5: DoEvents: Loop

        Chaine = IE.Document.getElementById("result_box").innerHTML
        If InStr(1, Chaine, FinTexte, 1) > 0 Then Fin = True

     Loop

     TblResult = Split(Chaine, ">")

     For I = 0 To UBound(TblResult)
         If InStr(1, TblResult(I), "</", 1) > 0 Then
             TxtResultat = TxtResultat & " " & Split(TblResult(I), "</")(0)
         End If
     Next I

     Traduire = TxtResultat

    Set TblResult = Nothing

End Function

Salut Theze, merci beaucoup ça à l'air de bien fonctionner, par contre c'est vrai que c'est lent...

Y aurait une autre solution plus rapide? En se servant de l'API de google peut etre ou autre?

Finalement quand je test avec mon fichier ça stop la traduction au bout d'un court moment, entre 100 et 200 lignes max, pas de message d'erreur, juste ça s’arrête !!!

Une idée?

Re,

Je n'ai jamais eu besoin d'utiliser une traduction en VBA donc, il me faudrait creuser et rechercher sur le net !

Je vais regarder ça et te tiendrai au courant !

yptsba a écrit :

Finalement quand je test avec mon fichier ça stop la traduction au bout d'un court moment, entre 100 et 200 lignes max, pas de message d'erreur, juste ça s’arrête !!!

Une idée?

Re,

M'semble qu'il est limité à 5000 caractères non Google Traduction ?

peut être pour cela qu'il stoppe

à méditer

crdlt,

André

Salut,

Je ne pense pas que cela vienne d'une limite google car je traduit juste une série de titre anglais en français, chaque titre est loin d'atteindre les 5000 caractères.

Bonjour à tous

J'ai une petite question concernant cette macro, elle traduit de EN vers FR

J'ai voulu changer le code pour qu'elle fasse l'inverse (FR vers EN) et j"ai modifié la ligne suivante

IE.Navigate "https://translate.google.com/#fr/en/"

Mais cela ne marche pas, la macro ouvre IE mais reste figé sur le premier mot et ne traduits pas les autres

Quand j'arrête le traitement, le debogage bloque sur cette ligne

 Chaine = IE.Document.getElementById("result_box").innerHTML

Savez vous pourquoi cela marche très bien de EN vers FR mais pas l'inverse?

Mille merci pour votre aide

Bon dimanche

Bonjour,

Un peu d'aide ?

Cdlt.

Hello,

Perso je ne connais pas le code vba gérant le html, mais si ça peut vous aidez, pour mon appli de trad, j'ai fait une méthode pour calculer les lots de 5000 caractères à traduire en trad auto.

Moi je le fait en manuel pour de la traduction de qualité, mais ça peut s'étendre pour votre cas pour faire du copier de telle à telle ligne de vos fichiers tests et les exporter dans googletrad pour traduction au fur et à mesure (par contre à une époque en voulant traduire les coms d'un site allemand en masse, j'ai remarqué que google réduisait sa tolérance au fur et à mesure des lots, risque à prendre en compte si vous constatez un échec).

https://www.excel-pratique.com/fr/telechargements/utilitaires/bulleur-excel-no340.php

capture 1

Bonjour,

j'ai remarqué que google réduisait sa tolérance au fur et à mesure des lots

L'API google a en plus une limitation de nombre de caractères par tranches de 100 s.

On peut supposer un mécanisme du même ordre. En faisant des pauses régulières tu t'affranchirais peut-être de ces erreurs.

eric

Rechercher des sujets similaires à "macro google translate traduire gros fichier"