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

VBA Discussion :

Pilotage IE via VBA et problème de fermeture d'IE


Sujet :

VBA

  1. #1
    Membre du Club
    Homme Profil pro
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Points : 40
    Points
    40
    Par défaut Pilotage IE via VBA et problème de fermeture d'IE
    Bonjour,

    Grace au tutoriel de Qwazerty j'ai créé une petite macro me permettant de récupérer quelques infos sur une page web : https://www.developpez.net/forums/d1...page-internet/

    Je rencontre un problème de fermeture d'internet explorer via IE.Quit quand IE.Visible = False. J'ai deux à trois processus IE en arrière plan qui perdurent après la fin de la macro, processus que je n'ai pas si IE.Visible = True et que je ferme manuellement la fenêtre.

    Une idée ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Une idée, oui.
    Mais, sans voir ton code, difficile de répondre.

    En aveugle, donc:
    Laisse IE.Visible = True et fais tourner ton code en pas-à-pas.
    Observe l'état de ta variable IE avant le .Quit.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  3. #3
    Membre du Club
    Homme Profil pro
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Points : 40
    Points
    40
    Par défaut
    Donc voici mon code (avant optimisation)
    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
    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
     
    Sub RecupElementTxt()
     
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim HtmlElementStandard As HTMLGenericElement
    Dim URL1 As String
    Dim chaine As String
    Dim ct As String
    Dim text8 As String
     
       'Chargement d'une page Web dont l'adresse est saisie en A1
       URL1 = Cells(1, 1)
       IE.navigate URL1
     
       'Affichage de la fenêtre IE
       IE.Visible = False
     
       'On attend le chargement complet de la page
       WaitIE IE
     
       'On pointe le document
       Set IEDoc = IE.document
     
       'Allons chercher le code de la table 2 qui renferme 10 éléments textes de 6 caractères qui sont à collecter
     
     Set HtmlElementStandard = IEDoc.body.all.TABLE2
        chaine = HtmlElementStandard.all(0).innerHTML
     
       'on boucle
     For iii = 1 To 10
     
         ct = InStr(chaine, " de ") '"de" est le mot (4 caractères avec espaces) qui précède toujours l'élément texte de 6 caractères à collecter
    	If Len(chaine) >= 6 Then
    		If ct > 0 Then
    		chaine = Mid(chaine, (ct + 4)) '' on supprime ce qui précède l'élément texte à collecter
    		text8 = Left(chaine, 6) ' on supprime ce qui suit l'élément à collecter
    		End If
    	End If
     
    	Cells(3 + iii, 2) = text8 ' on place l'élément texte collecté dans la colonne B
    Next
     
     
    'On passe à la page 2
     IEDoc.parentWindow.execScript "PageSearch(" & 1 & ")", "JavaScript"
     WaitIE IE
     
       'On pointe le document
       Set IEDoc = IE.document
     
     Set HtmlElementStandard = IEDoc.body.all.TABLE2
     
      chaine = HtmlElementStandard.all(0).innerHTML
     
     For iii = 1 To 10
    	ct = InStr(chaine, " de ")
     
    	If Len(chaine) >= 6 Then
    		If ct > 0 Then
    		chaine = Mid(chaine, (ct + 4))
    		text8 = Left(chaine, 6)
    		End If
    	End If
     
    	Cells(13 + iii, 2) = text8
    Next
     
    (...)
     
       'On libère les variables
       Set IE = Nothing
       Set IEDoc = Nothing
     
       'On ferme IE
       IE.Quit
     
    End Sub
    J'ai regardé l'état de ma variable IE avant IE.Quit via la fenêtre des variables locales et la variable n'est pas définie

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonsoir,

    Evidemment, si tu détruis l'objet IE, tu ne peux plus lui appliquer aucune action.

    Passe ton IE.Quit au-dessus de Set IE = Nothing.

    Ca devrait mieux se passer.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Membre du Club
    Homme Profil pro
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Points : 40
    Points
    40
    Par défaut
    Merci beaucoup ! quel âne je fais ...

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

Discussions similaires

  1. [XL-2013] Recopie cellules via VBA pose problème.
    Par Novice72 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/01/2017, 10h59
  2. Réponses: 8
    Dernier message: 26/03/2014, 09h52
  3. Problème fermeture excel via vba
    Par dav787 dans le forum Général VBA
    Réponses: 1
    Dernier message: 14/03/2013, 17h17
  4. [VBA-E] Problème fermeture excel
    Par robin des bulles dans le forum Access
    Réponses: 3
    Dernier message: 28/06/2006, 16h14
  5. [VBA-E]Problème de sauvegarde et de fermeture classeur
    Par teaRz dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/05/2006, 10h29

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