Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/10/2011, 10h13   #1
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Par défaut Valider une popup de confirmation page html

Je souhaite savoir comment valider une fenetre popup de validation qui s'ouvre suite à une macro qui clic sur un bouton dans une page html?
Le code se bloque aprés le click et attend que je valide le "ok" de la popup avant de reprendre l'execution du code!!

Merci pous vos réponses.
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 10h37   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonjour
Peut être avec un Sans garantie
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/10/2011, 10h53   #3
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Par défaut Valider une popup de confirmation page html

Merci, mais dans ce cas il ne prend pas la commande sendkey ...
C'est un peu comme si ru as un msgbox "bonjour". Tant que tu ne cliques pas sur "ok" le code est en pause.

Code :
1
2
3
4
sub test
msgbox"essai"
sendkey "[~]"
end sub
Donc mon probleme est est le même mais sur une fenetre IE de confirmation
"ok" ou "annuler" ==> le code reste donc bloqué.
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 11h55   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Essaies donc d'introduire cette routine utilisant les API (exemple non testé faute d'avoir le lien du site et le code utilisé)
Code :
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
Option Explicit
'---------------------------------------------------------
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEX Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Public Declare Function Putfocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long
 
Public Const BT_CLICK = &HF5
 
Sub CliquePopUp(ByVal TitrePopup As String)
Dim hwnd_PopUp As Long, hwnd_Ok As Long
Dim k As Integer
 
Do
    hwnd_PopUp = FindWindow(vbNullString, TitrePopup)      'ici
    k = k + 1
Loop While hwnd_PopUp = 0 And k <= 10000
'----------------------------------------------------------------
If hwnd_PopUp <> 0 Then
    hwnd_Ok = FindWindowEX(hwnd_PopUp, 0&, "Button", "&OK")    'ou simplement "OK" (caption du bouton)
    Putfocus hwnd_Ok
    SendMessage hwnd_Ok, BT_CLICK, 0&, 0&
End If
End Sub
 
'Pour tester (adapte la caption de ton popup)
Sub test()
CliquePopUp "Le titre de ton popup"
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/10/2011, 12h43   #5
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
oui cela serait bien d'avoir le site ... et de savoir comment tu ouvre ta première page internet ( code ?)
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 13h46   #6
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Mon projet est sur un site intranet de mon boulot, mais je viens de trouver un exemple equivalent mais accessible pour un test:
http://www.ca-anjou-maine.fr/
ensuite tu vas dans "acceder à mes comptes" (bouton orange en haut)
et tu tombes sur la page pour rentrer ses infos perso.

Ne rentres rien dans les cases et tu valide avec "Confirmer" et donc tu as la popup qui s'ouvre!!

voici mon code:

Code :
1
2
3
4
5
6
7
Set ElementCol = appIE.Document.getElementsByTagName("INPUT")
 
For Each btnInput In ElementCol
If btnInput.Value = "Confirmer" Then
btnInput.Click' ouveture de la popup Exit For
End If
Next btnInput
le code ce bloque à cet endroit et donc même avec une action sendkey, je n'arrive pas à valider le "OK" de la popup!!

D'avance merci pour tes recherches!
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 10h52   #7
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Je suis toujours bloqué au même endroits!! Et donc voici un code qui montre parfaitement mon problème:

La popup s'ouvre et le code reste en cours d'execution. moi je souhaite poursuivre en validant par vba celle-ci. J'accepte toute les réponses!!

Pour qu'il fonctionne il faut être connecté au forum!!

Code :
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
Sub Deconnexion()
 
Dim appIE As Object
Dim sURL As String
Dim Element As Object
Dim btnInput As Object
Dim ElementCol As Object
Dim link As Object
 
Application.ScreenUpdating = False
 
Set appIE = CreateObject("InternetExplorer.Application")
 
sURL = "http://www.developpez.net/forums/search.php?searchid=7509374"
 
With appIE
    .Navigate sURL
    .Visible = True
End With
 
            Do While appIE.Busy: DoEvents: Loop
            Do While appIE.ReadyState <> 4: DoEvents: Loop
 
Set ElementCol = appIE.Document.getElementsByTagName("a")
appIE.Visible = True
 
Application.wait Now + TimeValue("00:00:04") 'ligne poue l'essai!!
 
For Each link In ElementCol
    If link.innerHTML = "Déconnexion" Then
    link.Click      'Application.SendKeys ("~")
        Exit For
    End If
Next link
 
            Do While appIE.Busy: DoEvents: Loop
            Do While appIE.ReadyState <> 4: DoEvents: Loop
 
Application.ScreenUpdating = True
 
End Sub
Sinon il y a t il un moyende stopper la macro apres la commande:

lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 13h03   #8
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonjour
je vois maintenant, j'avais un problème similaire (avec un bouton de validation sur un site) que je n'avais pas pu résoudre (ci-joint discussion)
A l'apparition du popup, tout reste bloqué même le code vba.
Mais j'avais trouvé un bricolage qui marchait (sans garantie à 100%) mais j'avoue que ce n'est pas cartésien et je n'ai pas poussé la recherche jusqu'à la limite.
La manipulation est de donner le focus au bouton de validation et d'envoyer 2 fois la touche Entrée au lieu du clique sur le bouton (J'avais dans la popup le bouton OK par défaut)
Code :
sendkeys "{ENTER}{ENTER}"
Pour mon cas:
Si le popup apparait, on avait un Enter sur le bouton de validation et le 2ème sur le OK du popup
Si le poup n'apparait pas, on avait un Enter sur le bouton de validation et le 2ème dans le vide
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/10/2011, 13h24   #9
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Par défaut re

Merci pour cette réponse, mais dans mon cas le bricolage va être difficile à mettre en place car il faut que je place le curseur de la souris sur le bon bouton et lancer la procédure sendkey. Je vais faire un essai quand même.

Sinon l'évenement qui se produit entraîne l'execution du code (1mn30) avant le message "....une action ole en cours". Il y a-t-il une façon de connaitre le ce type d'évenement afin de faire fabriquer une erreur?

Code :
on error ole goto suite:
afin d'empêcher se verrouillage ?
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 13h01   #10
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Par défaut popup

J'ai mis en place la méthode sendkey mais effectivement c'est un peu barbare
et ne garantie pas le 100% dans une boucle.

Code :
1
2
3
4
5
6
7
8
9
10
11
    Set ElementCol = navigateur.Document.getElementsByTagName("a")
    navigateur.Visible = True
    For Each link In ElementCol
    If link.innerHTML = "Valider" Then
    link.Focus: SendKeys "{ENTER}{ENTER}"
    SendKeys "{NUMLOCK}", True' remet la touche numlock du clavier active 
    Do While navigateur.Busy
    loop
    Exit For
    End If
    Next link
Si il y a d'autres solutions qui garantissent une méthode plus fiable??

Je prends toutes les solutions.....
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2011, 12h46   #11
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Par défaut re

Il me semble qu'apres plusieurs essais sur quelques boucles sa fonctionne mais
si je passe en mode industriel c'est un plantage total...
La gestion du temps et du click simulé deviens trés difficile...

lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h12.


 
 
 
 
Partenaires

Hébergement Web