Traduction automatique de toute une colonne
Bonjour la communauté,
Je souhaite traduire la totalité d'une colonne.
J'arrive via le module de traduction à traduire une cellule à la fois.
Mon but serait de traduire une colonne entière.
La langue d'arrivée et toujours le Français
Je voudrais éviter de passer par un traducteur tiers (hors excel) pour gagner en manipulation.
L'ordinateur est connecté à Internet.
Problématiques :
La langue de départ n'est pas forcément la même à chaque fois.
Le texte à traduire est toujours dans la même colonne mais cette colonne peux varier d'un tableaux à l'autre.
Version excel : 2007
Merci par avance
Pascal
Bonjour Pascal13009,
si ça te convient, de suite le code et le fichier exemple:
Sub GoogTranslate()
Dim IE As Object, Trans As String, snarT As String
Dim I As Long, LastA As Long, checkBack As Boolean
Trans = Range("G1").Value
checkBack = True '<<< traduction inverse True /False
'
snarT = "#" & Mid(Trans, 5, 3) & Mid(Trans, 2, 3)
Set IE = CreateObject("InternetExplorer.Application")
LastA = Cells(Rows.Count, 1).End(xlUp).Row
For I = 1 To LastA
If Cells(I, 1) <> "" Then
With IE
.Visible = True
.Navigate "https://translate.google.fr/" & Trans & Cells(I, 1).Value
Application.Wait (Now + TimeValue("0:00:01"))
Do While .Busy: DoEvents: Loop
Do While .readyState <> 4: DoEvents: Loop
Cells(I, 2).Value = .Document.all("result_box").innertext
If checkBack Then
.Navigate "https://translate.google.fr/" & snarT & Cells(I, 2).Value
Application.Wait (Now + TimeValue("0:00:01"))
Do While .Busy: DoEvents: Loop
Do While .readyState <> 4: DoEvents: Loop
Cells(I, 3).Value = .Document.all("result_box").innertext
End If
End With
End If
Next I
IE.Quit
Set IE = Nothing
End Sub
Bonjour,
Merci pour cela.
Je me permets deux questions :
Cela fonctionne t 'il quelque soit la langue ?
Le texte doit il être dans la colonne A ?
@micalement
Pascal
Bonjour Pascal,
dans le fichier exemple la langue de départ et d'arrivée est indiqué par un code dans la cellule G1 (#en/fr/ = anglais/français). On peut bien sûr changer les langues avec le code de la langue requise (de pour l'allemand - es pour l'espagnol, pt pour le portuguais, etc.).
Au lieu d'entrer les langues dans une cellule du fichier on peut écrire directement dans le code, en modifiant la ligne:
Trans = Range("G1").Value
avec
Trans = "#en/fr/"
Si on ne veut pas de traduction inverse on doit changer dans le code VBA
checkBack = False '<<< traduction inverse True /False
La colonne contenant le texte à traduire, la colonne où écrire la phrase traduite et la colonne avec la traduction inverse sont indiquées dans le code VBA par le numéro progressif (1 = Colonne A, 2 = Colonne B et ainsi de suite). On peut
adapter les trois colonnes en changeant le numéro correspondant dans le ligne suivantes. Si, par exemple, la phrase est dans la colonne E (5ème colonne) il faut remplacer dans le code la valeur 1 avec 5
LastA = Cells(Rows.Count, 1).End(xlUp).Row '1ère colonne avec la phrase originale
If Cells(I, 1) <> "" Then '1ère colonne avec la phrase originale
.Navigate "https://translate.google.fr/" & Trans & Cells(I, 1).Value '1ère colonne avec la phrase originale
Cells(I, 2).Value = .Document.all("result_box").innertext '2ème Colonne avec la phrase traduite
.Navigate "https://translate.google.fr/" & snarT & Cells(I, 2).Value '2ème Colonne avec la phrase traduite
Cells(I, 3).Value = .Document.all("result_box").innertext '3ème Colonne avec la traduction inverse
J'espère que mon explication est suffisamment claire.
Bonjour,
Merci pour ton explication, elle est très claire.
Sais tu si il serait possible d'obtenir le même résultat sur un ordinateur non connecté à Internet et en passant par le système de traduction interne d'Excel ?
Merci
Pascal
Salut Pascal,
Je ne connais pas bien le sujet, tu peux trouver quelques informations à ce lien:
Merci
J'ai tout compris.
J'ai affecté un bouton à cette macro dans la barre de lancement rapide mais j'arrive pas à faire apparaître le texte du nom, je ne peux que choisir une icone....Grrrrrr
Je voulais faire une macro attribuée à l'anglais, une pour l'espagnol ....pour le langues que je rencontre le plus souvent lol