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 :

Sélection d'une seconde page HTML [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Chercheur en informatique, qui a pas encore trouvé
    Inscrit en
    Novembre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique, qui a pas encore trouvé

    Informations forums :
    Inscription : Novembre 2017
    Messages : 10
    Par défaut Sélection d'une seconde page HTML
    Bonjour,

    Je pose mon problème, n'ayant pas trouvé de poste, mais bon ne sachant trop l'expliqué, j'ai peut être pas utilisé les bons Keyword.

    J'ai suivi le tutoriel sur l'interaction VBA/HTML. Tutoriel vraiment très bien fait.
    J'arrive cependant à un dilemme :

    Je dois me connecte rà un site, m'identifier, puis naviguer dedans.
    Cependant, lors d'une des phases de naviguation, la page suivante m'ouvrer également un second onglet.
    Je souhaite atteindre ce second onglet pour en faire "mapagehtml", en sachant que je suis sous session authentifié, donc pas possible de faire un IE.naviguate

    J'ai donc eu la bonne idée de faire un "IE.quit", ce qui ferme bien la fenêtre en trop. Cependant j'ignore comment reprendre cette page dans mon code VBA, j'ai pour le moment une erreur d'automotion normale, vu que la page visée au départ est fermée.

    le code :

    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
    Sub RechercheGoogle()
    Dim MaCellule As String
    Dim IE As InternetExplorer
    Dim maPageHtml As HTMLDocument
    Dim Helem As IHTMLElementCollection
    Dim pagesuivante As String
    Dim plageref As Range
    Dim NBL As Long
    Dim maPageHtml2 As HTMLDocument
    Dim InputGoogleBouton As HTMLFormElement
    Dim Tabdate As Range
    Dim valeurrechercher As Variant
    Dim monElement As IHTMLElement
    
    
    Set Tabdate = Worksheets("Prix").Range("A1:AA1")
    Set plageref = Worksheets("Prix").[A1].CurrentRegion
    NBL = plageref.Rows.Count
    
    
    'Call listerFenetres_IE_Ouvertes 'ferme toute les fenetres internet avant la manip.
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.Navigate "" adresse du site, site que je ne peux citer ici pour des raisons pro.
    Do Until IE.readyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    IE.Visible = True
    
    Set maPageHtml = IE.Document
    Set InputGoogleBouton = maPageHtml.all("SubmitCreds")
    InputGoogleBouton.Click
    Do Until IE.readyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    IE.Visible = True
    
    Sleep (10000)
    
    Set maPageHtml = IE.Document
    Set monElement = maPageHtml.Links(32) 
    monElement.Click
    Do Until IE.readyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    IE.Visible = True
    Sleep (10000)
    IE.Quit
    
    'l'erreur arrive ici, puisque j'ai fermer mon interface
    
    pagesuivante = maPageHtml.Links(1)
    
    ....blabla
    Si vous avez une solution pour capturer le nouvel onglet pour que je puisse le mettre sous IE ensuite, je pense que ça fonctionnerais.
    Sinon peut être que je m'y prends à l'envers dans ma conception.

    Cordialement

  2. #2
    Membre averti
    Femme Profil pro
    Chercheur en informatique, qui a pas encore trouvé
    Inscrit en
    Novembre 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique, qui a pas encore trouvé

    Informations forums :
    Inscription : Novembre 2017
    Messages : 10
    Par défaut
    Bon bah je passe en résolu, j'aurais du regarder avec d'autres mots clés.

    Sujet de patricktoulon, un peu difficile à comprendre au début, mais très fonctionnel avec le code en fin de 1ére page (l'url stricte étant différente à chaque clic).
    https://www.developpez.net/forums/d1...rnet-explorer/

    ce qui donne en code
    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
     
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Public Function Getobjects_IE() As Object
        Dim objShell As Object, obj As Object
        Set objShell = CreateObject("shell.application")
        For Each obj In objShell.Windows
            'test de la presence de IE dans les treads
            If TypeName(obj.Document) = "HTMLDocument" Then
                Set Getobjects_IE = obj
            End If
        Next obj
    End Function
     
    Sub listerFenetres_IE_Ouvertes()
    'Necessite d'activer la référence "Microsoft Internet Controls"
    Dim IE1 As InternetExplorer
    Dim winShell As New ShellWindows
    On Error Resume Next
    For Each IE1 In winShell
        IE1.Quit 'option pour les fermer
    Next IE1
    End Sub
     
    Sub RechercheGoogle()
    Dim MaCellule As String
    Dim IE As Object
    Dim maPageHtml As HTMLDocument
    Dim Helem As IHTMLElementCollection
    Dim pagesuivante As IHTMLElement
    Dim plageref As Range
    Dim NBL As Long
    Dim maPageHtml2 As HTMLDocument
    Dim InputATRZoneTexte As HTMLFrameElement
    Dim InputATRBouton As HTMLFormElement
    Dim Tabdate As Range
    Dim valeurrechercher As Variant
    Dim monElement As IHTMLElement
    Dim url As String
    Dim OE As Object
     
     
    Set Tabdate = Worksheets("Prix").Range("A1:AA1")
    Set plageref = Worksheets("Prix").[A1].CurrentRegion
    NBL = plageref.Rows.Count
     
    Call listerFenetres_IE_Ouvertes 'ferme toute les fenetres internet avant la manip.
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.Navigate ""
    Do Until IE.readyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    IE.Visible = True
     
    Set maPageHtml = IE.Document
    Set InputGoogleBouton = maPageHtml.all("SubmitCreds")
    InputGoogleBouton.Click
    Do Until IE.readyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    IE.Visible = True
     
    Sleep (10000)
     
    Set maPageHtml = IE.Document
    Set monElement = maPageHtml.Links(32)
    monElement.Click
    Do Until IE.readyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    IE.Visible = True
    Sleep (10000)
    IE.Quit
    Sleep (10000)
    Set IE = Getobjects_IE()
    Set maPageHtml = IE.Document
    pagesuivante = maPageHtml.Links(19)
    pagesuivante.Click
    MsgBox (blabla)

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    un peu en retard mais je le signale quand meme
    etant donné que ton instance de ie a été propulser par vba reste par vba dans ton instance sans ma petite fonction
    a moins que ta nouvelle page s'ouvre dans une autre fenetre il faut faire commesuit

    j'explique
    tu demare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    url="htpps://....blabla"
    set ie=createobject("internetexplorer.application")
    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
    with ie
    .visible=true
    .navigate url
    do:doevents:loop while .readystae<>4
    loca=.document.locationurl
    'ok ta page 1 est chargée et on memorise la location
    'on clique sur un bouton exemple:
    .document.getelementbyid("monbouton").click
    'ici la page va etre modifier par la fonction appelée par le bouton en l'ocurrence selon ton besoins la locationurl va changer
    'elle va mettre un certains temps avant de changer 
    'et elle va changer  donc !!
    do:doevents:until.locationurl<>loca
    msgbox "ancienne "& loca & vbcrlf & "nouvelle " & .locationurl
     
    set newdocument=.document 
    with newdocument 'blabla
    'reste du code 
     
    end with 
    '.quit 'quiter apres travail sur page 
    end with
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. [debutant] Lire une simple page html
    Par Matof dans le forum JOnAS
    Réponses: 2
    Dernier message: 24/12/2007, 11h17
  2. variable d une page html vers une autre page html
    Par éloi_75 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/09/2007, 16h20
  3. reroutage vers une autre page html
    Par tykool dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/07/2007, 09h52
  4. Réponses: 2
    Dernier message: 04/06/2007, 09h33
  5. Réponses: 7
    Dernier message: 13/12/2005, 16h22

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