Je vérifie si l'utilisateur est bien connecté à Internet en créant une requête Web.
S'il ne l'est pas; il y a le message d'erreur: "Impossible.......... Serveur ou Proxy introuvable" ... (Normal!)
Ma recherche est de me passer de ce message d'Excel,
ou de simuler un clic de souris sur son bouton "OK" pour le faire disparaître automatiquement.
Si indispensable: De le faire sur le bouton "VERIFICATION" de l'USF.
(Le mieux serait d'avoir directement la bonne Caption dans le Label1, et de provoquer un évènement)
J'ai fouillé longtemps du coté de " Application.SendKeys("ENTER") et c. mais échec total!!!
Re : Automatiser un clic sur "OK" d'un message d'erreur ou sur un Bouton d'USF
Salut Yann, le forum,
voici une autre piste de solution. Pourquoi ne pas vérifier avant de faire la requête si l'utilisateur possède un accès à Internet ?
Voici une solution :
Tu n'as qu'à lancer la macro "IsConnection". Tu pourrais également remplacer la ligne avec le msgbox
J'avais trouvé ce code il y a quelques temps sur le net. Je ne trouve plus l'auteur mais néanmoins, une petite pensée pour lui !
Option Explicit
Private Const NETWORK_ALIVE_LAN = &H1 'net card connection
Private Const NETWORK_ALIVE_WAN = &H2 'RAS connection
Private Const NETWORK_ALIVE_AOL = &H4 'AOL
Private Declare Function IsNetworkAlive Lib "Sensapi" _
(lpdwFlags As Long) As Long
Private Function IsNetConnectionAlive() As Boolean
Dim lngAlive As Long
IsNetConnectionAlive = IsNetworkAlive(lngAlive) = 1
End Function
Private Function IsNetConnectionLAN() As Boolean
Dim lngLAN As Long
If IsNetworkAlive(lngLAN) = 1 Then
IsNetConnectionLAN = lngLAN = NETWORK_ALIVE_LAN
End If
End Function
Private Function IsNetConnectionRAS() As Boolean
Dim lngRAS As Long
If IsNetworkAlive(lngRAS) = 1 Then
IsNetConnectionRAS = lngRAS = NETWORK_ALIVE_WAN
End If
End Function
Private Function IsNetConnectionAOL() As Boolean
Dim lngAOL As Long
If IsNetworkAlive(tmp) = 1 Then
IsNetConnectionAOL = lngAOL = NETWORK_ALIVE_AOL
End If
End Function
Private Function GetNetConnectionType() As String
Dim lngAlive As Long
If IsNetworkAlive(lngAlive) = 1 Then
Select Case lngAlive
Case NETWORK_ALIVE_LAN:
GetNetConnectionType = _
"Oui"
Case NETWORK_ALIVE_WAN:
GetNetConnectionType = _
"Oui"
Case NETWORK_ALIVE_AOL:
GetNetConnectionType = _
"Oui"
Case Else:
End Select
Else
GetNetConnectionType = _
"Non"
End If
End Function
Sub IsConnection()
Dim Internet As String
Internet = GetNetConnectionType
If Internet = "Non" Then
MsgBox "Pas d'internet Yann", vbOKOnly, "Pas de connection Internet" 'Tu n'auras qu'à remplacer cette ligne de colde
End If
End Sub
Re : Automatiser un clic sur "OK" d'un message d'erreur ou sur un Bouton d'USF
Bonjour Etienne,
Merci beaucoup pour avoir regardé et pris la peine de me répondre.
La vérification de la connexion par le biais que tu proposes; je l'ai déjà utilisée.
Voir, ci-dessous, le Classeur que j'avais joint dans le fil dont je fais référence.
Cela fonctionne bien chez moi; mais pas en réseau dans une certaine entreprise.
Il est vrai que mon code est résumé à un seul cas, et que j'ai évidemment une réponse erronée!
Je m'applique donc à me cantonner au résultat final, puisque de toute évidence;
si la connexion n'est pas effective ma page ne se remplira pas...
Il reste seulement à le constater. Ce pourquoi je regarde ce qu'il y a en ligne 2.
J'ai pensé plus simple de procéder ainsi puisque l'on a plus rien à fiche du mode d'accès.
Dans mon appli, un bouton du genre "Envoyer par Mail", "Préciser un lieu" ou autres deviendraient alors actifs ou inactifs,
suite au résultat du test avec "maps.google"
Au final, je cherche à éviter deux clics inutiles, ainsi que j'ai tenté de l'expliquer.
(Je dois reconnaître que j'ai du mal à bien le faire)
En tous les cas, c'est bien sympa de ta part... Merci encore.
Re : Automatiser un clic sur "OK" d'un message d'erreur ou sur un Bouton d'USF
Salut Yann, le forum,
dans ce cas, pourquoi ne pas simplement instaurer une gestion d'erreur ? Par exemple :
VB:
Option Explicit
Sub RECHERCHE_MAP()
Dim Depart, Arrivee
Depart = "56690 NOSTANG": Arrivee = "56000 VANNES"
Worksheets("Feuil1").Activate
'================================= ETABLISSEMENT D'UNE REQUETE SUR LE WEB =======================
With ActiveSheet.QueryTables.Add(Connection:="URL;http://maps.google.fr/maps?f=d&saddr=" _
& Depart & "&daddr=" & Arrivee, DESTINATION:=ActiveSheet.Range("A1"))
.Name = "itinéraire"
.BackgroundQuery = False
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
On Error GoTo Erreur_Connection
.Refresh BackgroundQuery:=False
End With
On Error Goto 0
Exit Sub
Erreur_Connection:
'L'action si on n'a pas de connection Internet ??
On Error Goto 0
End Sub
Re : Automatiser un clic sur "OK" d'un message d'erreur ou sur un Bouton d'USF
Salut Yann,
voici donc un nouvel essai. J'aurais aimé entendre que la simple gestion d'erreur aurait pu faire le travail mais bon
Il faut que tu actives la référence "Microsoft XML, v6.0
VB:
Option Explicit
Function Verifier_Connexion() As Integer
Dim x As ServerXMLHTTP
Dim strT As String
'************************************************************************************************************
'Tu dois activer la référence Miscrosoft XML, v6.0
'************************************************************************************************************
On Error Resume Next
Verifier_Connexion = False
Set x = New ServerXMLHTTP
x.Open "GET", "http://www.google.com"
x.setRequestHeader "Accept", "application/xml"
x.setRequestHeader "Content-Type", "application/xml"
x.Send strT
'Ici, en fonction de l'erreur, on va pouvoir déterminer s'il y a connexion ou pas.
If Err = 0 Then
Verifier_Connexion = True
Else
MsgBox "Pas de connexion Yann", vbOKOnly, "Erreur de connexion"
End If
On Error GoTo 0
End Function
Sub test()
Verifier_Connexion
End Sub
2ème piste, peut être en modifiant comme suit, mais pas sûr du tout :
Code:
Sub REQUETE()
Dim qt As QueryTable
Worksheets("RECUP").Activate
Set qt = ActiveSheet.QueryTables.Add(Connection:="URL;http://google.fr", Destination:=ActiveSheet.Range("A1"))
With qt
.Name = "www.google.fr"
.BackgroundQuery = False
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.Refresh BackgroundQuery:=True
Do
DoEvents
Loop While qt.Refreshing = True
End With
UserForm1.CommandButton1.Visible = False
UserForm1.CommandButton2.Visible = True
End Sub
pas d'autre idée... mais il y avait un post relativement récent qui a fait couler beaucoup d'encre à ce sujet... peut être cette question y est traitée... A voir...
bonne soirée à toi et bon courage pour la suite....
@+
Re : Automatiser un clic sur "OK" d'un message d'erreur ou sur un Bouton d'USF
Bonsoir à vous deux, et à ceux qui passeront par ici,
pas d'autre idée... mais il y avait un post relativement récent qui a fait couler beaucoup d'encre à ce sujet... peut être cette question y est traitée... A voir...
Pierrot; dommage que tu n'aies pas gardé en mémoire ce Fil dont tu parles.
En tous les cas je suis bien heureux de te savoir là.
Étienne; bravo pour ta patience, et je suis conscient du temps que tu as investi.
C'est bigrement dans le bon esprit de XLD,
Pierrot; le
Code:
Do
DoEvents
Loop While qt.Refreshing = True
Me plait bien, et me laisse entendre une solution à ce que je recherchais,
car toujours, pour l'instant mes "Pompages" de la Feuille étaient trop prématurés.
Etienne; je n'aime pas trop venir ajouter des Références,
car elles sont souvent l'objet de soucis suivant la config de l'utilisateur.
Cependant, si cette option s'avère incontournable, je l'utiliserai.
Je vais continuer mes tests, heureux d'avoir deux super mecs sympas à mes cotés.
De plus, dans vos réponses, il y a un parfum de modestie qui n'a d'égal que votre talent.
Grand Merci à vous, j'y retourne et vous tiens au courant.
Je reviens de temps en temps sur cette appli, et il en découle de mes dernières questions.
Quant à la précision d'une adresse; c'est résolu et fonctionne bien.
Si quelqu'un est intéressé par l'évolution de ma bidouille, je suis disposé à partager.
Re : Automatiser un clic sur "OK" d'un message d'erreur ou sur un Bouton d'USF
Bonjour à tous
Pas tout suvi, mais si j'avais ce problème, je testerai ainsi (j'ai pris exemple sur le premier fichier).
Code:
Sub REQUETE()
On Error GoTo suite
Worksheets("RECUP").Activate
With ActiveSheet.QueryTables.Add(Connection:="URL;http://google .fr", Destination:=ActiveSheet.Range("A1"))
.Name = "[URL="http://www.google.fr"]www.google.fr[/URL]"
.BackgroundQuery = False
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.Refresh BackgroundQuery:=True
Application.Wait Now + TimeValue("0:00:3")
End With
UserForm1.CommandButton1.Visible = False
UserForm1.CommandButton2.Visible = True
suite:
MsgBox ("problème de connexion ou de mauvaise définition de l'URL")
UserForm1.Hide
UserForm1.Show
End Sub
Re : Automatiser un clic sur "OK" d'un message d'erreur ou sur un Bouton d'USF
Bonsoir Etienne, Pierrot, Michel , et à ceux qui passeront par ici,
J'ai passé un temps inavouable à tester tous les codes... En vain.
Chez moi ils ne fonctionnent pas!
Je suis donc revenu sur la proposition d'Etienne, et dans ma config., cela fonctionne bien.
Etant particulièrement friand de simplicité, je suis bien heureux de n'avoir plus à me farcir
le message d'erreur automatique: "Impossible.......... Serveur ou Proxy introuvable", et de
pouvoir gérer facilement les évènements souhaités par suite d'échec ou non.
Je vais donc transmettre pour tests dans l'entreprise où l'appli initiale à planté après
modification du réseau.
S'l y a souci, je déposerai un nouveau Post pour info, et seulement pour cela.
Grand Merci à vous tous, avec une p'tite touche de plus pour Etienne (Of course!)
Outre la satisfaction d'avoir avancé, j'ai eu le plaisir de vous croiser.