Bonjour la communauté
Je me suis lancé le défi de réaliser un petit programme de création de dictionnaire multilingues pour intégrer dans mes fichiers.
L'objectif sera de créer des interfaces multilinguismes dans EXCEL, WORD, POWERPOINT, et j'en passe.
L'utilisation de la traduction via bing n'étant pas convaincante pour nos collaborateurs.
Du coup, je me tourne vers Reverso que nous trouvons plus adapté.
Je scrap sans souci majeur le site, et peux récupérer la traduction en ayant envoyé un mot ou une phrase à traduire.
Mon problème est que je n'arrive pas à piloter la liste de sélection des langues pour réaliser les recherches en fonction de ma langue d'entrée et de la langue attendue en traduction.
Je suis obligé, à ce jour de le faire manuellement. Ce qui n'est vraiment pas top.
Aussi, le site est Reverso
J'avoue que je suis une tanche en HTML et rencontre bien du mal à comprendre le mode de fonctionnement du site
La liste de sélection de la langue d'entrée est gérée par ce code :
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <select name="ctl00$cC$ucDirections$ddlSrc" id="cC_ucDirections_ddlSrc" style="display: none;"> <option value="1031">Allemand</option> <option value="1033">Anglais</option> <option value="1025">Arabe</option> <option value="1028">Chinois</option> <option selected="selected" value="1034">Espagnol</option> <option value="1036">Français</option> <option value="1037">Hébreu</option> <option value="1040">Italien</option> <option value="1041">Japonais</option> <option value="1043">Néerlandais</option> <option value="1045">Polonais</option> <option value="2070">Portugais</option> <option value="1048">Roumain</option> <option value="1049">Russe</option> <option value="1055">Turc</option> </select><div tabindex="0" class="nice-select"><span class="current">Espagnol</span><ul class="list"><li class="option" data-value="1031">Allemand</li><li class="option" data-value="1033">Anglais</li><li class="option" data-value="1025">Arabe</li><li class="option" data-value="1028">Chinois</li><li class="option selected" data-value="1034">Espagnol</li><li class="option" data-value="1036">Français</li><li class="option" data-value="1037">Hébreu</li><li class="option" data-value="1040">Italien</li><li class="option" data-value="1041">Japonais</li><li class="option" data-value="1043">Néerlandais</li><li class="option" data-value="1045">Polonais</li><li class="option" data-value="2070">Portugais</li><li class="option" data-value="1048">Roumain</li><li class="option" data-value="1049">Russe</li><li class="option" data-value="1055">Turc</li></ul></div>
Si je comprends bien, il y a deux listes à proprement parlé, une en Select/Option et une en Ul/li. là déjà je bug... pourquoi ? (si quelqu'un peut m'expliquer la logique)
Bref, revenons à nos moutons
Sans rentrer de tout mon code, la partie qui nous intéresse (et vous aussi qui me lisent ) est celle-ci :
Ce code a été établi après une analyse des données qui me semble les plus probantes à être modifier pour être prises en compte pour lancer la traduction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 Dim oIE As Object Set oIE = CreateObject("InternetExplorer.Application") Dim oHTML_doc As Object oIE.Visible = True oIE.navigate sURLReverso ' Statusbar let's user know website is loading Application.StatusBar = "www.reverso.net is loading. Please wait..." 'Attente que la page soit actualisée et prête While oIE.Busy Or oIE.READYSTATE <> 4: DoEvents: Wend Set oHTML_doc = oIE.document 'Webpage Loaded Application.StatusBar = "www.reverso.net Loaded" Dim LstHTML_1 As String 'Dim sCurSelect_1 As String Dim LstHTML_2 As String 'Dim sCurSelect_2 As String 'Stocker les innerhtml des listes déroulantes des langues LstHTML_1 = oHTML_doc.getElementsByTagName("ul")(0).innerhtml LstHTML_2 = oHTML_doc.getElementsByTagName("ul")(1).innerhtml 'Supprimer les paramètres : "focus" et "selected" LstHTML_1 = Replace(LstHTML_1, " focus", "") LstHTML_1 = Replace(LstHTML_1, " selected", "") LstHTML_2 = Replace(LstHTML_2, " focus", "") LstHTML_2 = Replace(LstHTML_2, " selected", "") 'Renseigner les paramètres : "focus" et "selected" pour les langues recherchées LstHTML_1 = Left(LstHTML_1, InStr(1, LstHTML_1, sFrom, vbTextCompare) - 15) & " selected focus" & Right(LstHTML_1, Len(LstHTML_1) - (InStr(1, LstHTML_1, sFrom, vbTextCompare) - 15)) LstHTML_2 = Left(LstHTML_2, InStr(1, LstHTML_2, sToLang, vbTextCompare) - 15) & " selected" & Right(LstHTML_2, Len(LstHTML_2) - (InStr(1, LstHTML_2, sToLang, vbTextCompare) - 15)) 'Renvoyer le code HTML oHTML_doc.parentwindow.execscript "javascript:document.getElementsByTagName('ul')[0].innerhtml = '" & LstHTML_1 & "';" oHTML_doc.parentwindow.execscript "javascript:document.getElementsByTagName('ul')[1].innerhtml = '" & LstHTML_2 & "';"
Son objectif est d'intervenir sur les "Selected" et les "focus" devant les éléments recherchés... D'où la fonction REPLACE utilisée à gogo pour modifier les innerHTML.
Mais rien ne se passe, le code HTML de la page ne se modifie pas du tout...
Quelqu'un comprendrait-il mon problème ? Est-ce mon approche qui est mauvaise ? Quelle technique dois-je modifier pour y parvenir ?
Siouuuuuplé !!!!!
Je suis sûr que des cracks du Web pourront m'expliquer la logique d'une page, car franchement après maintes et maintes recherches, je sèche !
Merci beaucoup pour votre attention.
Je reste disponible si vous avez besoin d'éléments complémentaires pour comprendre tout ce beau brodel
Aller, sur ce... au taf
VBAdialement,
GexMan1198S
Partager