IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

récupération de données sur site web


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    cosmétique
    Inscrit en
    Décembre 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : cosmétique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 22
    Points : 4
    Points
    4
    Par défaut récupération de données sur site web
    Bonjour à tous,

    Je ne suis même pas sûr de poster dans la bonne catégorie.

    Pour un projet perso, j'ai besoin de récupérer des informations sur certaines sites web et de les mettre au format excel. Le but est de pouvoir faire des recherches depuis certains noms de plantes pour croiser les données. J'ai mis dans cette catégorie parce que je veux à la fin obtenir des fichier excel/csv.

    Je ne suis pas du tout expert en informatique, je suis chimiste (j'ai eu quelques cours de microsoft et de programmation mais vite fait).

    Cela fait 1 semaine que je tente de trouver des solutions de moi-même mais je n'y arrive pas. Je n'y connais pas grand chose en macro, ni en vba. J'ai essayé avec Query ou des logiciels "scraper" de données. Je n'ai pas réussi. Il y a peut-être d'autres solutions.

    J'ai besoin de récupérer les informations suivantes depuis 3 sites :
    - https://olfatheque.com/recherche.php...iere&term=tout
    Depuis cette page, je dois accéder à chaque page de chaque matière première et récupérer : son nom + son nom en latin + chaque élément de sa carte d'identité (son type, son obtention, son origine ...) (sauf que toutes n'ont pas les mêmes informations : ca tourne quand même sur 5 ou 6 informations au total dont certaines ne sont pas affichées. Exemple : abricot et algue) + les noms des zones géographiques (disponibles pour certaines plantes exemple : algue, en cliquant sur les points de la barre rouge à droite). Je n'ai pas besoin du texte de description.

    - https://www.olfastory.com/famille-olfactive/familles
    Sur ce site, j'ai besoin d'aller sur chacune des 7 familles puis de cliquer sur chacune des matières et de récupérer sur cette page : le nom + le nom latin + chaque données de la "carte d'identité" comme précédemment (je n'ai pas besoin du texte de description).

    - http://www.guidesfp.fr/
    2 possibilités : dans le bandeau de gauche, descendre et cliquer sur rechercher sans renseigner d'information. Une liste s'affiche, il faut descendre jusqu'au bout pour tout afficher.
    Le souci c'est que je ne veux pas récupérer les données du tableau, parce qu'elles ne sont pas complètes (ce serait simple).
    J'ai besoin de récupérer toutes les infos qui apparaissent quand on clique sur le nom commercial. Pour chaque ligne.

    J'espère que vous pourrez m'aider car je désespère d'y arriver.
    Je passe beaucoup de temps là dessus sans avancer.

    Merci beaucoup de l'aide que vous pourrez m'apporter .

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    houla, tout ce qui demande n'est pas si facile que ça à faire même pour un expert.
    Citation Envoyé par thomashedord Voir le message
    Je ne suis même pas sûr de poster dans la bonne catégorie.
    Si c'est pour faire avec Excel, c'est la bonne rubrique. Par contre pour réaliser ce que tu veux faire tu pourrais utiliser du python. En VBA et en python on peut utiliser sélénium pour piloter un navigateur comme chrome, firefox, edge chromium et récupérer des données.
    Moi j'ai bien une solution pour la première demande mais cela fait appel à des notions avancées de VBA : module de classe, arraylist.
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Candidat au Club
    Homme Profil pro
    cosmétique
    Inscrit en
    Décembre 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : cosmétique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 22
    Points : 4
    Points
    4
    Par défaut récupération de données sur site web - suite
    Bonjour

    Premièrement, Merci beaucoup d'avoir répondu ! C'est sympa.

    Deuxièmement, je suis partagé entre :
    - ca me rassure de savoir que c'est compliqué et donc c'est pour ca que je n'y arrive pas
    et
    - ca ne me rassure pas, parce que ca veut dire que je ne suis pas rendu pour obtenir ce dont j'ai besoin.

    Je ne sais absolument pas programmer en python. Et même en vba je suis loin d'être calé.

    Donc comment puis-je m'en sortir concrètement ? Il y a des âmes charitables qui pourraient m'aider ?

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    bon voici un point de départ pour faire de l'extraction de données de pages web avec deux solutions :
    Une solution avec selenium qui permet de gérer les pages web statiques et dynamiques
    Une solution avec winHttp + MS Html Object Library pour les pages web statiques
    Apparemment sur le premier site on peut utiliser les deux solutions

    Structure programme extraction Matière


    1 - Récupérations des liens des pages de toutes les matières. Création de tous les objets Matière et écriture des liens dans la propriété Lien des objets Matière.
    2 - Récupérations des infos des matières et écriture de ces infos dans les propriétés des objets Matière.
    3 - Ecriture des propriétés des objets Matière dans la feuille Matière du classeur Excel.

    Pour l'installation de selenium voir ici

    Voici les bibliothèques d'objets qu'il faut utiliser pour les deux solutions :
    Selenium Type Library pour le WebDriver
    mscorlib.dll pour les ArrayList
    Microsoft HTML Object Library pour les objets HTML.
    Microsoft VBScript Regular Expressions 5.5 pour les expressions régulières
    Microsoft WinHTTP Services, version 5.1 pour récupération pages html

    Nom : Excel-Matiere-References.png
Affichages : 1519
Taille : 18,2 Ko


    Il faut créer un module de classe (le renommer Matière dans ses propriétés) qui contient ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Nom As String
    Public NomLatin As String
    Public LeType As String
    Public Obtention As String
    Public Origine As String
    Public PartieUtilisée As String
    Public FamilleFacette As String
    Public NbParfums As String
    Public ZoneGéo As String
    Public Lien As String
    Voici le code de la solution avec selenium :
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    Declare Function GetTickCount Lib "kernel32" () As Long
     
     
    Public Sub RecupInfosSelenium() 'J.P  Décembre 2020
    Dim robot As New WebDriver
    Dim elem, fiche, zone, Map, Titre, Identité As Object
    Dim Page, ListePages As Object
    Dim ReleveLink, ReleveLiensFiches As Object
    Dim Mat As Matière
    Dim arrPages As New ArrayList
    Dim arrFiches As New ArrayList
    Dim lastPage, i As Integer
    Dim laPage As String
    Dim StartTime, StopTime As Long
    Dim reg As New RegExp: reg.Global = True: reg.Pattern = "(\d+)"
    Dim reg1 As New RegExp: reg1.Global = True: reg1.Pattern = "(<SPAN>.*</SPAN>)"
    Dim reg2 As New RegExp: reg2.Global = True: reg2.Pattern = "<[^>]*>"
    Debug.Print "Récupération Infos Matières en utilisant Selenium"
    ' Récupération url de toutes les pages des matières
    StartTime = GetTickCount
    ' robot.AddArgument "--headless"  ' mode invisible
    robot.Timeouts.ImplicitWait = 10000  ' temps max 8 secondes pour les commandes find avant exception
    robot.Start "chrome", "https://olfatheque.com/"
    robot.Get "/recherche.php?d=matiere&term=tout"
    ' recherche des pages
    Set ListePages = robot.FindElementsByXPath("//ul[@class='pagination']/li")
    For Each Page In ListePages
    'Debug.Print Page.Attribute("clck")
    laPage = Page.Attribute("clck")
    Set Matches = reg.Execute(Page.Attribute("clck"))
    lastPage = Matches(0)
    Next Page
    For i = 0 To lastPage
    arrPages.Add "/" + reg.Replace(laPage, i)
    Next
    For Each Page In arrPages
    robot.Get Page
    Set ReleveLiensFiches = robot.FindElementsByXPath("//div[@clck]")
    For Each ReleveLink In ReleveLiensFiches
    Set Mat = New Matière
    'Debug.Print ReleveLink.Attribute("clck") ' on affiche les liens
    Mat.Lien = "/" + ReleveLink.Attribute("clck")
    arrFiches.Add Mat
    Next
    Next Page
    StopTime = GetTickCount
    Debug.Print "temps écoulé recherche de toutes les pages à explorer : " & (StopTime - StartTime) & " ms"
    ' Récupération infos de toutes les pages des matières
    StartTime = GetTickCount
    For Each fiche In arrFiches
    robot.Get fiche.Lien
    Set Titre = robot.FindElementsByXPath("//div[@class='fiche-title']/h1 | //div[@class='fiche-title']/h2")
    For Each elem In Titre
      If elem.tagname = "h1" Then fiche.Nom = elem.Text
      If elem.tagname = "h2" Then fiche.NomLatin = elem.Text
    Next
    Set Identité = robot.FindElementsByXPath("//div[@id='recap']/p")
    For Each elem In Identité
     Select Case Trim(elem.FindElementByTag("span").Text)
        Case "Type"
            fiche.LeType = Mid(elem.Text, InStr(1, elem.Text, Chr(10)) + 1, _
                              Len(elem.Text) - InStr(1, elem.Text, Chr(10)))
        Case "Obtention"
            fiche.Obtention = Mid(elem.Text, InStr(1, elem.Text, Chr(10)) + 1, _
                              Len(elem.Text) - InStr(1, elem.Text, Chr(10)))
        Case "Origine"
            fiche.Origine = Mid(elem.Text, InStr(1, elem.Text, Chr(10)) + 1, _
                              Len(elem.Text) - InStr(1, elem.Text, Chr(10)))
        Case "Partie utilisée"
            fiche.PartieUtilisée = Mid(elem.Text, InStr(1, elem.Text, Chr(10)) + 1, _
                              Len(elem.Text) - InStr(1, elem.Text, Chr(10)))
        Case "Famille / Facette"
            fiche.FamilleFacette = Mid(elem.Text, InStr(1, elem.Text, Chr(10)) + 1, _
                              Len(elem.Text) - InStr(1, elem.Text, Chr(10)))
        Case "Nombre de Parfums"
            fiche.NbParfums = Mid(elem.Text, InStr(1, elem.Text, Chr(10)) + 1, _
                              Len(elem.Text) - InStr(1, elem.Text, Chr(10)))
    End Select
    Next
    Set elem = robot.FindElementByXPath("//a[@href='#map']", timeout:=0, Raise:=False)
    If Not elem Is Nothing Then elem.Click
    robot.Wait (500)
    Set Map = robot.FindElementsByXPath("//ul[@class='map-zone']")
    For Each zone In Map
        fiche.ZoneGéo = zone.Text
    Next
    Next
    StopTime = GetTickCount
    Debug.Print "temps écoulé récupération infos de toutes les pages à explorer : " & (StopTime - StartTime) & " ms"
    ' Remplissage feuille Excel
    StartTime = GetTickCount
    i = 2
    For Each fiche In arrFiches
    Sheets("Matières").Cells(i, 1).Value = fiche.Nom
    Sheets("Matières").Cells(i, 2).Value = fiche.NomLatin
    Sheets("Matières").Cells(i, 3).Value = fiche.LeType
    Sheets("Matières").Cells(i, 4).Value = fiche.Obtention
    Sheets("Matières").Cells(i, 5).Value = fiche.Origine
    Sheets("Matières").Cells(i, 6).Value = fiche.PartieUtilisée
    Sheets("Matières").Cells(i, 7).Value = fiche.FamilleFacette
    Sheets("Matières").Cells(i, 8).Value = fiche.NbParfums
    Sheets("Matières").Cells(i, 9).Value = fiche.ZoneGéo
    Sheets("Matières").Cells(i, 10).Value = fiche.Lien
    i = i + 1
    Next
    StopTime = GetTickCount
    Debug.Print "temps écoulé remplissage feuille excel : " & (StopTime - StartTime) & " ms"
    robot.Wait (5000) ' laisser le téléchargement s'effectué
    robot.Quit  ' fermeture de fenêtre google chrome
    End Sub
    et voici le code de la solution winHTTP + MS HTML Object Library :
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    Sub recupInfosHtml() 'J.P  Décembre 2020
    Dim httpRequest As New WinHttpRequest
    Dim doc As MSHTML.HTMLDocument
    Dim tags, liensFiche As MSHTML.IHTMLElementCollection
    Dim recap, tag, lienFiche As MSHTML.HTMLHtmlElement
    Dim lastPage, i As Integer
    Dim laPage As String
    Dim Mat As Matière
    Dim arrPages As New ArrayList
    Dim arrFiches As New ArrayList
    Dim StartTime, StopTime As Long
    Dim reg As New RegExp: reg.Global = True: reg.Pattern = "(\d+)"
    Dim reg1 As New RegExp: reg1.Global = True: reg1.Pattern = "(<SPAN>.*</SPAN>)"
    Dim reg2 As New RegExp: reg2.Global = True: reg2.Pattern = "<[^>]*>"
    Debug.Print "Récupération Infos Matières en utilisant WinHTTP + MS HTML Object Library"
    ' Récupération url de toutes les pages des matières
    StartTime = GetTickCount
    httpRequest.Option(WinHttpRequestOption_UserAgentString) = "Mozilla/4.0 (compatible;MSIE 7.0; Windows NT 6.0)"
    httpRequest.Open "GET", "https://olfatheque.com//recherche.php?d=matiere&term=tout"
    httpRequest.Send ' fetching webpage
    Set doc = New MSHTML.HTMLDocument
    doc.body.innerHTML = httpRequest.responseText
    Set liensFiche = doc.getElementsByTagName("li")
    For Each lienFiche In liensFiche
    If lienFiche.hasAttribute("clck") Then
         'Debug.Print lienFiche.getAttribute("clck")
         laPage = lienFiche.getAttribute("clck")
         Set Matches = reg.Execute(laPage)
         lastPage = Matches(0)
    End If
    Next
    For i = 0 To lastPage
       httpRequest.Open "GET", "https://olfatheque.com//" + reg.Replace(laPage, i)
       httpRequest.Send ' fetching webpage
       doc.body.innerHTML = httpRequest.responseText
       Set lignes = doc.getElementsByClassName("ligne")
       For Each ligne In lignes
           Set Mat = New Matière
           Mat.Lien = "/" + ligne.getAttribute("clck")
           arrFiches.Add Mat
       Next
    Next
    StopTime = GetTickCount
    Debug.Print "temps écoulé recherche de toutes les pages à explorer : " & (StopTime - StartTime) & " ms"
    ' Récupération infos de toutes les pages des matières
    StartTime = GetTickCount
    For Each fiche In arrFiches
       httpRequest.Open "GET", "https://olfatheque.com" + fiche.Lien
       httpRequest.Send ' fetching webpage
       doc.body.innerHTML = httpRequest.responseText
       If doc.getElementsByTagName("h1").Length > 0 Then
         fiche.Nom = doc.getElementsByTagName("h1")(0).innerText
       End If
       If doc.getElementsByTagName("h2").Length > 0 Then
         fiche.NomLatin = doc.getElementsByTagName("h2")(0).innerText
       End If
       Set recap = doc.getElementById("recap")
       For Each ptag In recap.getElementsByTagName("p")
        Select Case Trim(ptag.getElementsByTagName("span")(0).innerText)
         Case "Type"
            fiche.LeType = reg1.Replace(ptag.innerHTML, "")
         Case "Obtention"
            fiche.Obtention = reg1.Replace(ptag.innerHTML, "")
         Case "Origine"
            fiche.Origine = Trim(reg1.Replace(ptag.innerHTML, ""))
         Case "Partie utilisée"
            fiche.PartieUtilisée = reg1.Replace(ptag.innerHTML, "")
         Case "Famille / Facette"
            fiche.FamilleFacette = reg2.Replace(reg1.Replace(ptag.innerHTML, ""), "")
         Case "Nombre de Parfums"
            fiche.NbParfums = reg2.Replace(reg1.Replace(ptag.innerHTML, ""), "")
        End Select
       Next
       If doc.getElementsByClassName("map-zone").Length > 0 Then
         fiche.ZoneGéo = doc.getElementsByClassName("map-zone")(0).innerText
       End If
    Next
    StopTime = GetTickCount
    Debug.Print "temps écoulé récupération infoz de toutes les pages à explorer : " & (StopTime - StartTime) & " ms"
    ' Remplissage feuille Excel
    StartTime = GetTickCount
    i = 2
    For Each fiche In arrFiches
    Sheets("Matières").Cells(i, 1).Value = fiche.Nom
    Sheets("Matières").Cells(i, 2).Value = fiche.NomLatin
    Sheets("Matières").Cells(i, 3).Value = fiche.LeType
    Sheets("Matières").Cells(i, 4).Value = fiche.Obtention
    Sheets("Matières").Cells(i, 5).Value = fiche.Origine
    Sheets("Matières").Cells(i, 6).Value = fiche.PartieUtilisée
    Sheets("Matières").Cells(i, 7).Value = fiche.FamilleFacette
    Sheets("Matières").Cells(i, 8).Value = fiche.NbParfums
    Sheets("Matières").Cells(i, 9).Value = fiche.ZoneGéo
    Sheets("Matières").Cells(i, 10).Value = fiche.Lien
    i = i + 1
    Next
    StopTime = GetTickCount
    Debug.Print "temps écoulé remplissage feuille excel : " & (StopTime - StartTime) & " ms"
    End Sub
    et voici le résultat :
    Nom : Excel-Feuille-Matiere.png
Affichages : 1506
Taille : 56,5 Ko

    Performance selenium avec chrome :
    Récupération Infos Matières en utilisant Selenium
    temps écoulé recherche de toutes les pages à explorer : 33468 ms
    temps écoulé récupération infos de toutes les pages à explorer : 476797 ms
    temps écoulé remplissage feuille excel : 766 ms
    Performance winHTTP + MS HTML Object Library :
    Récupération Infos Matières en utilisant WinHTTP + MS HTML Object Library
    temps écoulé recherche de toutes les pages à explorer : 2250 ms
    temps écoulé récupération infoz de toutes les pages à explorer : 60547 ms
    temps écoulé remplissage feuille excel : 328 ms
    Il ne faut pas oublier qu'avec selenium le navigateur travaille et doit afficher les pages et exécuter les scripts javascripts ce qui prend du temps.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Candidat au Club
    Homme Profil pro
    cosmétique
    Inscrit en
    Décembre 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : cosmétique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 22
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    merci encore beaucoup pour cette réponse très complète.
    j'ai téléchargé Selenium et fait ce que tu as indiqué.
    J'ai juste un soucis : le message d'erreur suivant s'affiche :

    Nom : selenium.jpg
Affichages : 1485
Taille : 320,7 Ko

    Que dois-je faire ?

  6. #6
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Bonsoir,

    Vous êtes certainement en Office 64bit,
    Essayez peut-être en remplaçant la première ligne de votre code (rouge) par :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #If Win64 Then
       Declare PtrSafe Function GetTickCount Lib "kernel32" () As LongLong
    #Else
       Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long
    #End If
    Bav,
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  7. #7
    Candidat au Club
    Homme Profil pro
    cosmétique
    Inscrit en
    Décembre 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : cosmétique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 22
    Points : 4
    Points
    4
    Par défaut
    Re

    Merci pour la réponse
    Une autre erreur apparait maintenant.

    Nom : Capture d’écran 2020-12-26 101259.jpg
Affichages : 1457
Taille : 326,8 Ko

    J'ai tenté de mettre le module de classe en PublicNoteCreatable dans les propriétés mais ca n'a pas aidé.

    Une solution ?

  8. #8
    Candidat au Club
    Homme Profil pro
    cosmétique
    Inscrit en
    Décembre 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : cosmétique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 22
    Points : 4
    Points
    4
    Par défaut
    La capture d'écran précédente c'était pour Selenium (j'utilise chrome aussi)
    pour info : ca surlignait en bleu la 2ème ligne qui contient "Declare". Je vois qu'à la capture d'écran ce n'était pas surligné.

    mais ca me met aussi une erreur avec winHTTP + MS HTML Object Library :
    Nom : Capture d’écran 2020-12-26 130048.jpg
Affichages : 1476
Taille : 326,0 Ko

    Vous savez pourquoi ?
    Merci

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    est-ce que dans les références de VBE tu vois (comme dans mon message #4) :
    Microsoft WinHTTP Services, version 5.1
    si oui as-tu coché la référence ?
    sinon je ne sais pas si c'est disponible en 64 bits. Mon Office est en 32 bits

    Pour le declare il faut mettre :
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Candidat au Club
    Homme Profil pro
    cosmétique
    Inscrit en
    Décembre 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : cosmétique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 22
    Points : 4
    Points
    4
    Par défaut
    Hey !

    Merci une fois de plus pour la réponse.

    - Pour WIN HTTP :

    Effectivement, j'avais créé un nouveau fichier pour le code VBA de WIN. J'étais parti du principe de base que les "références" que j'avais cochées l'étaient pour tous les nouveaux projets mais non. Donc j'ai bien recoché toutes les cases.

    Ce n'est pas pour autant que ca a fonctionné lol.
    J'ai le droit à 2 types d'erreurs différents en fonction de son humeur :

    Nom : win error.jpg
Affichages : 1447
Taille : 317,4 Ko

    Nom : win error 2.jpg
Affichages : 1437
Taille : 341,1 Ko

    - Pour Selenium

    Fail aussi. J'ai bien rajouté "Private". Mais j'ai une autre erreur...

    Nom : selenium private.jpg
Affichages : 1443
Taille : 352,6 Ko

    Nom : selenium private error.jpg
Affichages : 1431
Taille : 337,9 Ko


    Un peu d'humour : qu'ai-je fais pour mériter cela ?

    Vous avez des solutions ou je suis condamné ?

    Merci vraiment pour votre aide.

  11. #11
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    le souci c'est que tu es en office 64 ! et je ne peux pas t'aider car je ne peux pas tester en office 64 !

    tu peux essayer de transformer les variables qui sont en integer en long et les starttime stoptime en longlong si ton getickcount est en longlong​.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  12. #12
    Candidat au Club
    Homme Profil pro
    cosmétique
    Inscrit en
    Décembre 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : cosmétique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 22
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    On y est presque ! J'ai désinstaller office 64 bits pour installer le 32 bits.
    - Avec Selenium :
    Ca fonctionne jusqu'à Yuzu (le dernier a récupérer) mais après ca met l'erreur suivante (sans passer au fichier excel) :

    Nom : selenium 32.jpg
Affichages : 1435
Taille : 210,5 Ko

    - Avec Win HTTP : ca a tourné 3 min puis ca m'a mis une erreur qui apparait à chaque fois :

    Nom : win32.jpg
Affichages : 1425
Taille : 327,9 Ko

    ou des fois c'est cette erreur :
    Nom : win32 2.jpg
Affichages : 1425
Taille : 174,4 Ko

    Un coup de main ?

  13. #13
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    as-tu une liaison internet fiable ?
    parce que l'erreur 0x80072ee7 c'est :
    Erreurs 0x80200010, 0x80072efe ou 0x80072ee7 – Problème de connectivité pendant le téléchargement

    Moi je n'ai jamais tes erreurs.
    Sinon essaie d'augmenter les timeout :
    1 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    robot.Timeouts.ImplicitWait = 20000
    2 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Not elem Is Nothing Then elem.Click
    robot.Wait (1500)

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  14. #14
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    c'est à quelle valeur de i que cela plante ? faire debug.print i dans la boucle
    peux-tu montrer ton code car tu ne dois avoir exactement le même que moi ( ex: feuille Matières)
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  15. #15
    Candidat au Club
    Homme Profil pro
    cosmétique
    Inscrit en
    Décembre 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : cosmétique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 22
    Points : 4
    Points
    4
    Par défaut
    C'est bon je viens de trouver
    Exactement en même temps que ton idée !
    Je venais de modifier mon message quand j'ai vu le tiens
    Effectivement je n'avais pas nommer la feuille Matières. J'avais laissé Feuille 1.

    Je suis trop content.

    Bien parti sur cette lancée, puis-je abuser de ta gentillesse pour avoir le code pour le deuxième site ?

    Trop sympa en tout cas. Je vais enfin pouvoir avancer sur mon projet.

  16. #16
    Candidat au Club
    Homme Profil pro
    cosmétique
    Inscrit en
    Décembre 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : cosmétique

    Informations forums :
    Inscription : Décembre 2020
    Messages : 22
    Points : 4
    Points
    4
    Par défaut
    @Jurassc pork,

    Je suis désolé de te relancer, est-ce qu'il serait possible d'avoir au moins le 3ème site (le 2ème est utile mais moins essentiel pour moi). Je suis bloqué sur l'avancement de mon projet tant que je n'ai pas réussi à récupérer ces données.

    Si tu en vacances, je te souhaite de belles vacances .

    Merci beaucoup.

Discussions similaires

  1. Importation de données sur site web
    Par milka3004 dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 31/10/2019, 00h30
  2. [XL-2016] Récupération de données sur le web avec cases à cocher et module flash
    Par Hexa82 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 14/02/2016, 22h18
  3. [XL-2010] Récupération de données sur site web avec mot de passe
    Par SkyCorp dans le forum Macros et VBA Excel
    Réponses: 41
    Dernier message: 15/07/2014, 15h10
  4. récupération de donnée sur un site web
    Par Wamdeus dans le forum C#
    Réponses: 1
    Dernier message: 12/05/2010, 11h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo