A voir également:
- Resultat code différent selon emplacement d'un breakpoint vba
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
6 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, ce serait plus clair si tu indiquait les numéros de lignes où tu mets les breakpoint.
que veux-tu dire par "voir exemple de breakpoint dans le code"?
que se passe-t'il si tu ajoutes une attente d'une minute dans le code entre les lignes 44 et 48?
je suis étonné que, entre les lignes 44 et 48, tu n'attendes pas que la page soit chargée. est-ce intentionnel?
que veux-tu dire par "voir exemple de breakpoint dans le code"?
que se passe-t'il si tu ajoutes une attente d'une minute dans le code entre les lignes 44 et 48?
je suis étonné que, entre les lignes 44 et 48, tu n'attendes pas que la page soit chargée. est-ce intentionnel?
Bonjour, Merci de ta réponse !
Quand je disais voir exemple dans le code, c'est que je pensais avoir mis en commentaire a la ligne ou je mettais les breakpoint une indication type "ici breakpoint quand ca fonctionne" mais j'ai du oublié désolé !
Je mets le breakpoint pour que mon code se déroule correctement en ligne 44 ou plus haut. Quand je n'en mets pas ou que j'en mets en ligne 48 par exemple, la boucle foreach ne check plus tout les objLien de la page comme elle devrait le faire…
J'ai déjà essayé de mettre un wait, mais ca ne change rien au problème… J'ai également essayé de mettre manuellement dans le code un stop et de le reprendre à la main, ou de mettre un msgbox pour faire office de "breakpoint" dans le code mais aucune de ces options ne fonctionne.
Pour répondre a ta question entre les ligne 44 et 48, dans la fonction button, la fonction loadpage est appelé qui elle sert a attendre que la page soit chargé.
Quand je disais voir exemple dans le code, c'est que je pensais avoir mis en commentaire a la ligne ou je mettais les breakpoint une indication type "ici breakpoint quand ca fonctionne" mais j'ai du oublié désolé !
Je mets le breakpoint pour que mon code se déroule correctement en ligne 44 ou plus haut. Quand je n'en mets pas ou que j'en mets en ligne 48 par exemple, la boucle foreach ne check plus tout les objLien de la page comme elle devrait le faire…
J'ai déjà essayé de mettre un wait, mais ca ne change rien au problème… J'ai également essayé de mettre manuellement dans le code un stop et de le reprendre à la main, ou de mettre un msgbox pour faire office de "breakpoint" dans le code mais aucune de ces options ne fonctionne.
Pour répondre a ta question entre les ligne 44 et 48, dans la fonction button, la fonction loadpage est appelé qui elle sert a attendre que la page soit chargé.
Non aucune importance, j'ai juste oublié de l'enlever my bad
Le symptôme est que la checkbox avec le code U2402010 ne se coche pas, autrement dit le programme ne clique pas sur l'objLien "cocher" juste au dessus.
Le symptôme est que la checkbox avec le code U2402010 ne se coche pas, autrement dit le programme ne clique pas sur l'objLien "cocher" juste au dessus.
Update : Il se trouve que lorsque j'ouvre une deuxième page IE, le problème disparait. J'ai juste à l'ouvrir puis a la fermer juste après et ca contourne le problème… Toujours dans l'incompréhension si quelqu'un a une explication je suis preneur mais du coup problème résolu apparement
Alors ça marchait bien vendredi dernier en ouvrant une deuxième fenêtre IE, mais ce matin ca ne veut plus rien savoir...
Voici mon code :
Voici mon code :
Public IE As InternetExplorer Sub Recupinternet() ' il faut cocher Microsoft HTML Object Library ' et Microsoft Internet Controls dans Outils - R?f?rences Dim Annee_debut As String Dim Annee_fin As String Dim test As String Dim codestation As String codestation = InputBox("Inscrivez le code de la station dont vous voulez visualiser les donn?es.", "Indispensable", "U1084010") 'U1084010 U2402010 If codestation Like "*#######" Then Else: If MsgBox("Erreur: Format du code station incorrect, r?essayez ?", vbYesNo, "Demande de confirmation") = vbYes Then Call Recupinternet Else: End End If End If Set IE = CreateObject("InternetExplorer.Application") 'ouverture Internet Explorer Set IE2 = CreateObject("InternetExplorer.Application") IE.Visible = True IE.navigate "http://www.hydro.eaufrance.fr/selection.php" IE2.Quit Do Until IE.readyState = READYSTATE_COMPLETE DoEvents Loop 'attend la fin du chargement Do While IE.Document.readyState <> "complete" DoEvents Loop 'attend la fin du chargement du document Dim IECtrl As HTMLFormElement Set IECtrl = IE.Document.forms(0).code_station IECtrl.Value = codestation IE.Document.forms(0).cours_d_eau.Value = "" 'Permet de remplir le formulaire de recherche de station IE.Document.forms(0).commune.Value = "" IE.Document.forms(0).departement.Value = "Tous" IE.Document.forms(0).bassin_hydrographique.Value = "Tous" IE.Document.all("station_en_service").Checked = True IE.Document.all("station_hors_service").Checked = True Button ("Nouvelle Recherche") 'Lance la recherche Dim ObjLien As HTMLLinkElement 'S?lectionne la station For Each ObjLien In IE.Document.Links 'pour chaque lien de la page active test = ObjLien.innerText If test = "cocher" Then ObjLien.Click 'clique sur le lien Exit For End If Next Call LoadPage Button ("Visualiser") 'Lance de la visualisation de la station choisie Button ("QJM") 'Affichage des d?bits journaliers If Mid(IE.Document.DocumentElement.innerText, 1, 39) = "HYDRO - erreur Aucune donn?e disponible" Then MsgBox "Il n'y a aucune donn?e disponible sur cette station", vbCritical, "Loghydro" USF_internet.PRG_internet.Visible = False USF_internet.LBL_progress.Visible = False USF_internet.CMD_IE.Visible = False IE.Quit Exit Sub End If end sub Public Function Button(Caption As String) As Boolean ' Clicks the button containing text Caption or returns false if button cannot be found Dim Element As HTMLButtonElement Dim test As String Button = True For Each Element In IE.Document.getElementsByTagName("Input") test = Element.Value If InStr(Element.Value, Caption) > 0 Then Element.Click Call LoadPage Exit Function End If Next Element Button = False End Function Sub LoadPage() ' Pauses execution until the browser window has finished loading Do While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE 'If optActiveX Then ' close any activex popup notifications 'PostMessage FindWindow(?#32770?, ?Microsoft Internet Explorer?), &H10, 0&, 0& 'End If DoEvents Loop End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Si quelqu'un a d'autres suggestions je suis preneur !
après avoir essayé de comprendre et contourner le problème, sans succès, j'ai commencé à regarder comment faire autrement, sans passer via un navigateur.
c'est relativement plus compliqué, parce que, quand on veut envoyer des informations vers le site, au lieu de cliquer sur la page, il faut remplir les informations que le navigateur envoie au site (telle qu'on peut le voir dans la console d'un navigateur tel que chrome).
Je n'ai pas réellement essayé, et je ne peux que supposer que cela ne tomberait pas sur le même problème.
en écrivant, je me dis que cela fonctionnerait sans doute mieux avec python, par exemple.
c'est relativement plus compliqué, parce que, quand on veut envoyer des informations vers le site, au lieu de cliquer sur la page, il faut remplir les informations que le navigateur envoie au site (telle qu'on peut le voir dans la console d'un navigateur tel que chrome).
Je n'ai pas réellement essayé, et je ne peux que supposer que cela ne tomberait pas sur le même problème.
en écrivant, je me dis que cela fonctionnerait sans doute mieux avec python, par exemple.