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 :

Automatiser IE - Erreur 70 [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut Automatiser IE - Erreur 70
    Bonjour à tous,

    Je veux récupérer deux données qui se trouvent sur un site (le Type d'entité et la Forme légale d'une entreprise).

    Le but est de faire une boucle sur plusieurs numéro. Je prends un exemple de numéro : 400186069.

    Les valeurs cherchées sont : Personne morale + "Société anonyme Depuis le 24 janvier 1951"

    Voici le code utilisé :

    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
    111
    112
    Option Explicit
     
    Sub RechercheVBAExcel()
        'Déclaration des variables
        Dim IE As New InternetExplorer
        Dim IEDoc As HTMLDocument
        Dim InputGoogleZoneTexte As HTMLInputElement
        Dim InputGoogleBouton As HTMLInputElement
     
        Dim HtmlElementStandard As HTMLGenericElement
        Dim LeTexteExtrait As String
        Dim EntiteExtrait
        Dim FormLegExtrait
        Dim elem As Integer
        Dim RetVal As Long
        Dim Ligne As Long
        Dim EntiteOK As String
        Dim FormLegOK As String
     
        'Chargement d'une page Web Google
        IE.Navigate "https://kbopub.economie.fgov.be/kbopub/zoeknummerform.html?lang=fr"
     
        'Affichage de la fenêtre IE
        IE.Visible = True
     
        'On attend le chargement complet de la page
        WaitIE IE
     
        'On pointe le membre Document
        Set IEDoc = IE.document
     
        'On pointe notre Zone de texte
        Set InputGoogleZoneTexte = IEDoc.all("nummer")
     
        'On définit le texte que l'on souhaite placer à l'intérieur
        InputGoogleZoneTexte.Value = ActiveCell.Value
     
     
     
     
        'On pointe notre bouton
        Set InputGoogleBouton = IEDoc.all("actionLu")
     
        'On simule un clic
        InputGoogleBouton.Click
     
        'On attend la fin de la recherche
        WaitIE IE
     
        '***********
        'Allons chercher ce texte dans notre Item46
        Set HtmlElementStandard = IEDoc.body.all(115)
     
     
        'On attend la fin de la recherche
        WaitIE IE
     
     
     
        EntiteOK = "NOK"
        FormLegOK = "NOK"
        For elem = 0 To IEDoc.body.all.Length - 1
     
            'Récupération du type d'entité
            If IEDoc.body.all(elem).className = "QL" And IEDoc.body.all(elem).innerText = "Type d'entité: " Then
                EntiteExtrait = IEDoc.body.all(elem + 1).innerText
                'MsgBox EntiteExtrait
                EntiteOK = "OK"
            End If
     
            'Récupération de la forme légale
            If IEDoc.body.all(elem).className = "RL" And IEDoc.body.all(elem).innerText = "Forme légale: " Then
                FormLegExtrait = IEDoc.body.all(elem + 1).innerText
                'MsgBox FormLegExtrait
                FormLegOK = "OK"
            End If
            If EntiteOK = "OK" And FormLegOK = "OK" Then GoTo RechercheComplete
        Next elem
     
     
    RechercheComplete:
     
     
        'On le place dans notre variable prévue à cet effet
        ' LeTexteExtrait = HtmlElementStandard.innerText
     
        'On affiche le texte
        'MsgBox LeTexteExtrait, Title:="Le texte extrait de la page"
        '**********
     
     
        'PLacement des données
        Ligne = ActiveCell.Row
        Range("X" & Ligne).Value = EntiteExtrait
        Range("Y" & Ligne).Value = FormLegExtrait
     
        'On attend la fin de la recherche
        WaitIE IE
     
        'Suppreesion des instances IE
        RetVal = Shell("Taskkill /im iexplore.exe /f", 0)
     
        'On libère les variables
        Set IE = Nothing
        Set IEDoc = Nothing
    End Sub
    Sub WaitIE(IE As InternetExplorer)
        'On boucle tant que la page n'est pas totalement chargée
        Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
    End Sub


    Hier, quand j'étais sur mon lieu de travail, tout fonctionnait parfaitement. Aujourd'hui (chez moi en Wifi) - c'est la seule chose qui a changé - Je pense? -, j'ai une erreur :

    Erreur d'exécution '70' :
    Permission refusée

    sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For elem = 0 To IEDoc.body.all.Length - 1
    Avez-vous une idée pour résoudre ce truc de p.... ? Si je fais Débogage et F5, la macro se relance sans soucis.

    NB : en pas à pas, pas de soucis.

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 198
    Par défaut
    Hello,
    tu peux regarder ici voir si ce n'est pas le même problème.
    Une solution proposée : mettre deux tests pour l'attente du chargement de la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Craziest workaround ever due to bugged IE Eventhandling
    Do While IE.ReadyState = 4: DoEvents: Loop 
    Do Until IE.ReadyState = 4: DoEvents: Loop
    Ami calmant, J.P

  3. #3
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Yep, jurassic pork. C'est une bonne idée.
    J'ai donc mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do: DoEvents: Loop Until IEDoc.readyState = "complete"
    Et cela fonctionne à merveille.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 06/03/2015, 15h55
  2. [WD-2010] Automatisation formule + Messages erreur
    Par fmailys dans le forum VBA Word
    Réponses: 1
    Dernier message: 15/05/2013, 09h51
  3. Réponses: 0
    Dernier message: 18/12/2012, 11h22
  4. Résolution de l'erreur 429 lors de l'automatisation des applications Office
    Par CristofMartins dans le forum Microsoft Office
    Réponses: 0
    Dernier message: 26/10/2012, 08h48
  5. Automatisation avec sqlcmd sans code erreur
    Par areivilo dans le forum Administration
    Réponses: 6
    Dernier message: 17/02/2009, 20h43

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