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 avec mot de passe [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut Récupération de données sur site web avec mot de passe
    Bonsoir à tous,

    Je suis encore novice en VBA et je m'en sors difficilement avec tout ce que je lis sur le web. J'espère que vous pourrez m'aider.

    Je souhaite récupérer des données sur une page web accessible par login + mot de passe puis par l'outil de recherche du site.

    Je sais récupérer les infos si je me suis connecté au préalable. Pour cela j'utilise le code suivant :
    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
    Sub Importer()
     
        Sheets.Add
        ActiveSheet.Name = "TMP_IMPORT"
     
        With Sheets("TMP_IMPORT").QueryTables.Add( _
             Connection:="URL;http://www.xxx.com/recherche.php?search=VVH31A3120", _
             Destination:=Sheets("TMP_IMPORT").Range("$A$1"))
            .Name = "recherche.php?search=VVH31A3120_1"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = False
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlEntirePage
            .WebFormatting = xlWebFormattingAll
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
     
        compteur = 0
     
        For ligne = 1 To 1000
     
            If Left(Sheets("TMP_IMPORT").Cells(ligne, 6), 14) = "Valeur estimée" Then
                compteur = compteur + 1
                Sheets("Fours").Cells(compteur, 1) = Sheets("TMP_IMPORT").Cells(ligne + 1, 6)
     
                If compteur = 1 Then Exit For
            End If
     
        Next
     
        Application.DisplayAlerts = False
        Sheets("TMP_IMPORT").Delete
        Application.DisplayAlerts = True
     
    End Sub
    Mais si je veux exécuter la macro sans être connecté au préalable, je dois me connecter via une macro.
    J'ai tenté ceci (j'ai juste caché le login et le mot de passe) :
    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
    Sub ConnexionAMonSite()
    Const READYSTATE_COMPLETE = 4
    Dim IE
    Dim elementHtml As Object
    Set IE = CreateObject("internetExplorer.Application") 'ouvre internet explorer
    IE.Visible = True
    With IE
    .navigate "http://www.xxx.com/" 'va sur la page du site
    Do Until .readyState = READYSTATE_COMPLETE 'on attend jusqu’à ce que la page soit chargée
    DoEvents
    Loop
    End With
    Set elementHtml = IE.document.getElementById("compte") 'on sélectionne une case du formulaire
    elementHtml.Value = "mon login" 'on donne une valeur à cette case
     
    Set elementHtml = IE.document.getElementById("password") 'on sélectionne une case du formulaire
    elementHtml.Value = "mon mot de passe" 'on donne une valeur à cette case
     
    Set ObjectIE = IE.document.getElementById("submit") 'on sélectionne un bouton
    ObjectIE.Click 'on clique sur ce bouton
     
    End Sub
    J'arrive ici sur une erreur d'exécution '13' Incompatibilité de type
    Quel est le problème et comment le corriger ?

    Merci d'avance pour votre aide

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    Bonjour ou bonne nuit comme tu veux

    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
    ub ConnexionAMonSite()
    Const READYSTATE_COMPLETE = 4
    Dim IE as object
    Dim elementHtml
    Set IE = CreateObject("internetExplorer.Application") 'ouvre internet explorer
    IE.Visible = True
    With IE
    .navigate "http://www.gpdis.com/" 'va sur la page du site
    Do Until .readyState = READYSTATE_COMPLETE 'on attend jusqu’à ce que la page soit chargée
    DoEvents
    Loop
    End With
    Set elementHtml = IE.document.getElementById("compte") 'on sélectionne une case du formulaire
    elementHtml.Value = "truc" 'on donne une valeur à cette case
     
    Set elementHtml = IE.document.getElementById("password") 'on sélectionne une case du formulaire
    elementHtml.Value = "machin" 'on donne une valeur à cette case
     
    'le bouton pour valider n'a pas de Id mais une classe
    et getelementby....... recherche tout les element en fonction de l'argument (id,classname,tagname)donc il faut bien verifier si tu en a pas plusieur au quelcas il faut le preciser avec l'argument suplementaireapres son ici en l'occurence on veut le   er  sce sera donc (0)
    '**********************************************************
    'soit comme ceci 
    Set ObjectIE = IE.document.getElementsbyclassname("btn btn-darkblue mt10")(0) 'on sélectionne un bouton
    ObjectIE.Click 'on clique sur ce bouton
     End Sub
    soit comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set ObjectIE = IE.document.getElementsbyclassname("btn btn-darkblue mt10") 'on sélectionne un bouton
    ObjectIE(0).Click 'on clique sur ce bouton
    regarde l'arboresence du code sur la capture d'ecran
    bonne fin de nuit
    Images attachées Images attachées  
    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

  3. #3
    Invité
    Invité(e)
    Par défaut Bonjour,
    pour ce qui me concerne, je n'utilise pas d'objet vb quand il s'agit de renseigner des valeurs dans une page web, mais j'injecte du JAVASCRIPT dans la page IE.
    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
    Sub ConnexionAMonSite()
     On Error Resume Next
     'Déclaration des variables
    Dim IE As Object ' InternetExplorer
    'CHARGEMENT GENERAL
    Set IE = CreateObject("InternetExplorer.application")
       'Chargement d'une page Web
       IE.Visible = True
    IE.navigate "http://www.gpdis.com/"
    WaitIE IE
     IE.Document.parentWindow.execScript "javascript:document.leform.compte.value='Login';"
    IE.Document.parentWindow.execScript "javascript:document.leform.TxtPasse.value='TxtPasse';"
    IE.Document.parentWindow.execScript "javascript:document.leform.submit();"
    End Sub
     
    'Procèdure placée dans un module standard pour vérifier le chargement total de la page.
    Sub WaitIE(IE)
       'On boucle tant que la page n'est p'AS totalement chargée
       Do Until IE.readyState = 4
          DoEvents
       Loop
    End Sub

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour durupt

    pas mal mais c'est pas toujours possible tu te doute bien pourquoi

    a quoi sert le en haut de sub ,ne serait ce pas pour cette même raison
    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

  5. #5
    Invité
    Invité(e)
    Par défaut
    bonjour Patrick ça vient d'une source de qq1 du forum même pb que j'ai adapté pour le gérer en javascript j'ai pas fait gaff

    en ce qui concerne l'infaisabilité dans certain cas tu as raison mais de toute façon tout passe par l'analyse de la source de la page déjà pour identifier le nom des objets <Form name=><input type name>
    Dernière modification par AlainTech ; 24/07/2014 à 21h05. Motif: Suppression de la citation inutile

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour,

    j'aime aussi l'idée d'injecter du Java script …

    Sinon de manière classique, en analysant la source, les trois zones étant du même groupe,
    tout en se passant d'inutiles variables objets, pour le bouton sans ID, il suffit d'indiquer son index :

    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
    Sub Demo()
        With CreateObject("InternetExplorer.Application")
            .Visible = True
            .Navigate "http://www.gpdis.com"
            Do Until .readyState = 4 And .busy = False:  DoEvents:  Loop
     
            With .document
                With .getElementsByTagName("input")
                      .Item("compte").Value = "login"
                    .Item("password").Value = "mot de passe"
                    .Item(3).Click
                End With
     
                Do: Loop Until .readyState = "complete"
    ' suite du traitement
            End With
     
            .Quit
        End With
        End
    End Sub

    _______________ _____________________________________ _____________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    salue marc

    même pas MAL

    je suis en train de travailler avec tes abeilles et je prend des raccourcis tu va m'en vouloir
    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

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Patrick, point visé tu n'étais !

    Aucun souci pour Let it Bee mais il y a bien un seul fichier .vbs créé, lire ma réponse dans le post concerné …

    Je n'ai pas répondu hier soir - heure tardive - car je voulais amener le demandeur à réfléchir
    du pourquoi du comment etc … bref en visualisant l'élément dans le code de la page
    car je ne pense pas qu'apporter directement une solution toute faite soit formateur …

    En tout cas cette discussion pourra servir de référence pour d'autres !


    __________________________________________________________________________________________
    Définition Sudoku : qui a le nord en face …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Merci à tous pour votre aide

    Je vais lire vos codes avec beaucoup d'attention.
    C'est vrai que je n'avais pas pensé au javascript. Je ne suis pas un expert, mais il me semble qu'accepter du javascript dans des formulaires représente une faille de sécurité.
    Bon, après, c'est de la responsabilité du site d'empêcher cela ou non.

    A moi de travailler à présent

  10. #10
    Invité
    Invité(e)
    Par défaut
    sur le principe tu as raison mais le javascript est la seule façon de valide le contenu d'un formulaire coté client et les créateur de page web ne veulent pas ce priver de cette possibilité car ça représente un gain de temps par rapport à un traitement coté serveur puis ré-afficher la page pour délivrer le message d'erreur!
    Dernière modification par AlainTech ; 24/07/2014 à 21h07. Motif: Suppression de la citation inutile

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Premier test, avec la solution de Marc-L : ça marche parfaitement !
    Et le code est allégé. Merci beaucoup Marc-L

    En tout cas, je comprends bien d'où vient l'erreur. Merci à toi aussi patricktoulon

    L'ouverture de la page reste assez longue je trouve, mais le plus important est que ça fonctionne.

    Au tour de javascript. Je vais tenter, mais vu le peu de javascript que j'ai programmé dans ma vie, je ne promets rien.
    Allez, je tente

  12. #12
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Classiquement, l'erreur 13 correspond aux serviettes mélangées aux torchons :
    le type d'une variable ne correspond pas à la donnée …

    Mais dans le cas d'une variable objet liée à IE comme ta ligne n°19, l'objet appelé n'existe pas !
    Comme pourtant déjà expliqué, ta ligne appelle l'ID d'un objet qui n'en a pas ‼ D'où l'erreur …

    Comme quoi donner une solution toute faite n'est vraiment pas formateur !


    __________________________________________________________________________________________
    Cravate : accessoire servant à indiquer la direction du cerveau de l'homme.
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Je pensais bien à ça justement, mais impossible de trouver simplement sur VBA le bon code pour remplacer getElementById.
    Je trouve l'aide de VBA assez difficile à utiliser. Dès que je clique sur Répertorier les propriétés/méthodes, Info paramètres, et toutes les autres menus accessibles par clic droit, je n'ai le droit qu'à un bip de l'ordinateur. Et l'explorateur d'objet n'aboutit à pas grand chose. Difficile de s'y retrouver dans tout ça.

    Pour la solution javascript, elle fonctionne sans problème. Je vais partir sur cette solution.

    Reste plus qu'à exécuter mes 2 scripts ensemble pour récupérer les données.
    A tout de suite

  14. #14
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Marc-L, à quoi sert la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do: Loop Until .readyState = "complete"
    que tu as mis à la fin de ton code ?

    Sinon, j'ai tenté de fusionner ce code avec le premier code que j'ai mis sur mon premier post, pour récupérer les infos.
    Ca donnerai ça :
    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
    Sub ConnexionImport() ' connexion par la méthode javascript
     
    CONNEXION
        With CreateObject("internetExplorer.Application") 'ouverture d'internet explorer
            .Visible = True
            .navigate "http://www.xxx.com/" ' va sur la page du site
     
            Do Until .readyState = 4 And .busy = False
                DoEvents
            Loop ' on attend que la page soit totalement chargée
     
            .Document.parentWindow.execScript "javascript:document.leform.compte.value='login';"
            .Document.parentWindow.execScript "javascript:document.leform.TxtPasse.value='mot de passe';"
            .Document.parentWindow.execScript "javascript:document.leform.submit();"
     
            Do Until .readyState = 4 And .busy = False
                DoEvents
            Loop ' on attend que la page soit totalement chargée
     
            Sheets.Add
            ActiveSheet.Name = "TMP_IMPORT"
     
            With Sheets("TMP_IMPORT").QueryTables.Add( _
              Connection:="URL;http://www.xxx.com/recherche.php?search=VVH31A3120", _
              Destination:=Sheets("TMP_IMPORT").Range("$A$1"))
                .Name = "recherche.php?search=VVH31A3120_1"
                .FieldNames = True
                .RowNumbers = False
                .FillAdjacentFormulas = False
                .PreserveFormatting = False
                .RefreshOnFileOpen = False
                .BackgroundQuery = True
                .RefreshStyle = xlInsertDeleteCells
                .SavePassword = False
                .SaveData = True
                .AdjustColumnWidth = True
                .RefreshPeriod = 0
                .WebSelectionType = xlEntirePage
                .WebFormatting = xlWebFormattingAll
                .WebPreFormattedTextToColumns = True
                .WebConsecutiveDelimitersAsOne = True
                .WebSingleBlockTextImport = False
                .WebDisableDateRecognition = False
                .WebDisableRedirections = False
                .Refresh BackgroundQuery:=False
            End With
     
            compteur = 0
     
            For ligne = 1 To 1000
     
                If Left(Sheets("TMP_IMPORT").Cells(ligne, 6), 14) = "Valeur estimée" Then
                    compteur = compteur + 1
                    Sheets("Fours").Cells(compteur, 1) = Sheets("TMP_IMPORT").Cells(ligne + 1, 6)
     
                    If compteur = 1 Then Exit For
                End If
     
            Next
     
    '       Application.DisplayAlerts = False
    '       Sheets("TMP_IMPORT").Delete
    '       Application.DisplayAlerts = True
     
    '        .Quit 'fermeture d'internet explorer
     
        End With
     
    End Sub
    Le problème est que VBA n'attend pas la fin de ma 2ème boucle, qui est sensée attendre que la connexion se termine avant de lancer la requête de recherche (l'url http://www.xxx.com/recherche.php?search=VVH31A3120).
    Et donc l'export des informations se fait sur la page d'accueil et non sur la page cherchée.

    Quelle erreur ai-je commise ?

  15. #15
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    L'aide n'est pas dans le VBA car ces instructions n'en sont pas !
    Des fonctions Internet donc aide sur MSDN ou encore dans les excellents tutoriels de ce forum …

    La ligne sert à attendre la fin du chargement de la nouvelle page.

    Quant à ton erreur, le VBA ne se trompant jamais, quelle est la logique la ligne n°56 à part justement de sortir de la boucle ?!
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  16. #16
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Citation Envoyé par Marc-L Voir le message


    L'aide n'est pas dans le VBA car ces instructions n'en sont pas !
    Des fonctions Internet donc aide sur MSDN ou encore dans les excellents tutoriels de ce forum …
    OK, je comprends mieux maintenant. Je le saurai pour la prochaine fois.

    Citation Envoyé par Marc-L Voir le message

    La ligne sert à attendre la fin du chargement de la nouvelle page.
    C'est bien ce que j'avais compris, mais je ne comprends pas trop son utilité dans ton code. N'est-elle pas redondante avec le précédent readyState ?

    Citation Envoyé par Marc-L Voir le message

    Quant à ton erreur, le VBA ne se trompant jamais, quelle est la logique la ligne n°56 à part justement de sortir de la boucle ?!
    Sur cette ligne, je sors de ma boucle For, qui consiste à analyser et récupérer les infos qui ont été écrites sur ma page TMP_IMPORT avec le 2ème WITH.
    Hors les infos récupérées proviennent en fait de la page d'accueil et non pas de la page recherchée comme souhaitée.

  17. #17
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Citation Envoyé par SkyCorp Voir le message
    N'est-elle pas redondante avec le précédent readyState ?
    Ben non vu la nouvelle page entre …

    Pour récupérer une table, voir par exemple dans cette discussion


    __________________________________________________________________________________________
    Titeuf : ce qui sort de la TitePoule …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  18. #18
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Bonjour, Marc
    SkyCorp a de l'avenir en programmation.
    Mettre la ligne gênante dans une Sub indépendante.
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  19. #19
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Récupérer les informations n'est pas le problème puisque j'y arrivais avant la fusion de mes 2 codes.
    Le problème est que les infos récupérées ne proviennent pas de la dernière page, une fois la recherche effectuée, mais de la page précédente.

    Pour être plus précis, je commence sur une première page : http://www.xxx.com/index.php
    Je me connecte, puis je tombe sur la page http://www.xxx.com/accueil.php
    Je lance ensuite la recherche, par exemple http://www.xxx.com/recherche.php?search=VVH31A3120
    Et là je récupère toutes les infos de la page.

    Si j'utilise ma toute première macro, que l'on voit sur mon premier post, je pars de la page http://www.xxx.com/accueil.php et la macro me récupère bien les infos souhaitées.

    Par contre si je démarre de la page de connexion, donc sans m'être connecté au préalable, j'arrive bien à la page suivante, mais ce sont les infos de cette page qui sont récupérées et non pas la page cherchée.

    Je vais essayer NVCfrm

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    RE
    je veux pas paraitre insistant mais
    essayez les 2 façon (IE/JAVASCRIPT) en cas d'erreur sur chargement ou indisponibilité avec java ca n'est pas révélée j'ai fait le test 10 fois avec donnée bidon

    et a chaque fois java ne fait rien
    ca veux bien dire que quelque chose ne se fait pas
    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.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [AC-2003] Base de données sur le Web avec MySQL et Access ?
    Par gwenagan dans le forum Access
    Réponses: 3
    Dernier message: 17/04/2015, 07h49
  2. Réponses: 1
    Dernier message: 15/11/2011, 10h03
  3. [XL-2003] importer données du web avec mot de passe
    Par kokoVBA dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/10/2009, 18h26
  4. protection d'une page web avec mot de passe
    Par chimene dans le forum ASP.NET
    Réponses: 3
    Dernier message: 09/11/2008, 13h48

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