Resultat code différent selon emplacement d'un breakpoint vba
Fermé
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
-
20 mai 2020 à 18:21
jeremayb - 2 juin 2020 à 10:56
jeremayb - 2 juin 2020 à 10:56
A voir également:
- Resultat code différent selon emplacement d'un breakpoint vba
- Code puk bloqué - Guide
- Le code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
6 réponses
yg_be
Messages postés
23517
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 avril 2025
Ambassadeur
1 576
20 mai 2020 à 19:26
20 mai 2020 à 19:26
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?
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
22 mai 2020 à 10:45
22 mai 2020 à 10:45
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é.
yg_be
Messages postés
23517
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 avril 2025
1 576
22 mai 2020 à 12:44
22 mai 2020 à 12:44
la fonction StartProcessing est-elle utile?
j'essaie de tester, quel est le symptôme quand cela ne marche pas?
j'essaie de tester, quel est le symptôme quand cela ne marche pas?
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
22 mai 2020 à 12:51
22 mai 2020 à 12:51
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.
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
22 mai 2020 à 15:33
22 mai 2020 à 15:33
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
yg_be
Messages postés
23517
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 avril 2025
1 576
22 mai 2020 à 16:18
22 mai 2020 à 16:18
tu ouvres, par VBA, un autre onglet dans IE? peux-tu montrer le code?
J'ai assez bien chipoté, sans trouver de solution, on dirait que la variable IE et ses attributs ne sont pas toujours correctement mis à jour. Ce qui confirme ton observation à propos des breakpoints.
J'ai assez bien chipoté, sans trouver de solution, on dirait que la variable IE et ses attributs ne sont pas toujours correctement mis à jour. Ce qui confirme ton observation à propos des breakpoints.
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
>
yg_be
Messages postés
23517
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 avril 2025
25 mai 2020 à 10:50
25 mai 2020 à 10:50
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
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
>
yg_be
Messages postés
23517
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 avril 2025
25 mai 2020 à 10:51
25 mai 2020 à 10:51
Est ce que tu as une idée d'où ce problème de rafraichissement de variable peut provenir ?
yg_be
Messages postés
23517
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 avril 2025
1 576
>
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
28 mai 2020 à 15:28
28 mai 2020 à 15:28
cela me fait penser à un bug...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
28 mai 2020 à 14:08
28 mai 2020 à 14:08
Si quelqu'un a d'autres suggestions je suis preneur !
yg_be
Messages postés
23517
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 avril 2025
1 576
28 mai 2020 à 15:37
28 mai 2020 à 15:37
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.
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
>
yg_be
Messages postés
23517
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 avril 2025
28 mai 2020 à 15:41
28 mai 2020 à 15:41
Merci beaucoup d'avoir pris de ton temps pour m'aider sur ce problème, je vais continuer a chercher de mon coté.
Malheureusement je n'ai jamais utilisé python, et je me dis que le problème doit provenir du site internet lui même non ? pas forcément du code en lui même
Malheureusement je n'ai jamais utilisé python, et je me dis que le problème doit provenir du site internet lui même non ? pas forcément du code en lui même
yg_be
Messages postés
23517
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 avril 2025
1 576
>
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
28 mai 2020 à 15:46
28 mai 2020 à 15:46
Le comportement du site peut avoir une influence, mais je suis persuadé que le problème est dans le code de Microsoft, dans l'intégration entre IE et VBA.
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
>
yg_be
Messages postés
23517
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
6 avril 2025
28 mai 2020 à 15:51
28 mai 2020 à 15:51
Je vais essayer d'utiliser C++ pour parvenir a mes fins dans ce cas.