Traduction par macro VBA avec IE translate

Bonjour chers passionnés !!

Je cherche un moyen par macro VBA pour traduire des verbatims rédigés en différentes langues, présents dans un fichier excel. L'idée serait de collecter les cellules à traduire une a une de mettre le texte dans Internet Explorer translate, de récupérer la traduction et de mettre le texte obtenu dans une cellule voisine de la cellule de départ.

J'ai trouvé un vieux post de 2017 (https://forum.excel-pratique.com/viewtopic.php?t=100171) proposant une méthode qui me convient à merveille, mais la macro ne fonctionne pas et s'arrête sur :

'Passer le texte dans la zone à traduire

Set Element = IE.Document.getElementById("source")

Voici le code erreur que j'obtiens en faisant tourner la macro: erreur d'exécution -2147467259 (800004005) La méthode 'document' de l'objet 'IWebBrowser2 a échoué

j'ai débugé une ligne :

'attente du chargement complet

Do Until IE.ReadyState = 4: DoEvents: Loop

Modifié en :

'attente du chargement complet

Do Until IE.ReadyState = Readystate_Complete

DoEvents

Loop

Je vous mes le code complet :

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

Ne connaissant vraiment rien aux liens entre VBA et pages internet, si quelqu'un pouvait m'aider se serait magnifique !

A vous lire très vite et merci d'avance !!

Bonjour,

Une piste, peut-être ?

Cdlt.

Merci Jean Eric pour ton aide, le lien qui est dans le fichier à télécharger est très utile, mais il faudrait que je regarde comment faire malheureusement pour ne pas avoir une langue pré-sélectionnée dans le code. Là c'est pour traduire tous ce qui est en français par défaut en anglais par défaut.

Mon fichier est un fichier évolutif en 8 ou 9 langues différentes (du russes au turc en passant par le portugais l’allemand, l'italien, l’espagnol et autres pays de l'est....) dont les positions ne sont pas connues à l'avance...

A+

Rechercher des sujets similaires à "traduction macro vba translate"