Timer "Délai de connexion dépassé" VBA

franzoose

XLDnaute Nouveau
Bonjour à tous !

En fouillant dans les topics existants, j'ai trouvé une excellente macro qui permet de calculer la distance en km entre deux villes via Google maps.

La macro fonctionne à merveille, jusqu'ici, tout va bien.

Seulement voilà, j'utilise la macro pour traiter une dizaine, une vingtaine voir une trentaine de ligne de donnée.
Le problème est que, parfois, ma connexion internet est de très mauvaise qualité, si bien que le programme tourne, tourne dans le vide sans donner de réponse.
J'aimerai ajouter un Timer qui, une fois la tentative de connexion lancée, laisse 5 secondes pour effectuer la requête Google Maps. Si le délai est dépassé, la macro inscrirait "Pb connexion" au lieu de la distance entre les 2 villes.

Code:
Public Sub calcul_duree_trajet()

Dim feuil_donnees_brutes As Excel.Worksheet
Dim feuil_google As Excel.Worksheet
Set feuil_donnees_brutes = Sheets("Données_Brutes")
Set feuil_google = Sheets("Feuil2")

Derniere_ligne = feuil_profil.Cells.Find(what:="*", SearchDirection:=xlPrevious).Row

For i = 10 To Derniere_ligne
      Depart = feuil_donnees_brutes.Cells(i, 22)
      Arrivee = feuil_donnees_brutes.Cells(i, 21)
      If Not IsEmpty(Arrivee) Then
            With feuil_google.QueryTables.Add(Connection:="URL;http://maps.google.fr/maps?f=d&saddr=" & Depart & "&daddr=" & Arrivee, Destination:=feuil_google.Range("A1"))
                   .Name = "itinéraire"
                   .BackgroundQuery = True
                   .WebSelectionType = xlEntirePage
                   .WebFormatting = xlWebFormattingNone
                   .Refresh BackgroundQuery:=False
            End With
            Set Result = feuil_google.Cells.Find("Itinéraires possibles")
            If Result Is Nothing Then
                   feuil_donnees_brutes.Cells(i, 10) = "Chantier introuvable"
            Else
                   duree_un_trajet = Result.Offset(1, 0)
                   feuil_donnees_brutes.Cells(ligne_projet, 24) = duree_un_trajet
            End If
      End If
Next i
End Sub

Merci beaucoup pour votre aide :)
 
Dernière édition:

Nairolf

XLDnaute Accro
Re : Timer "Délai de connexion dépassé" VBA

Essaye une boucle sur un timer:
Code:
PauseTime = 5    ' Définit la durée en seconde.
Start = Timer    ' Définit l'heure de début.
Do While Timer < Start + PauseTime
        ' Insère ton code
Loop
 

franzoose

XLDnaute Nouveau
Re : Timer "Délai de connexion dépassé" VBA

Bonjour Nairolf !

Et merci beaucoup, ton code marche impec :))

J'ai rajouté un petit ligne de code qui permet de sortir de la boucle Do Loop si la réponse arrive avant 5 secondes.
Si la connexion est réussie avant 5 secondes et que le résultat est affecté à la variable, je rajoute :

Code:
Start = Start - PauseTime

De cette manière, pas besoin d'attendre 5 secondes pour obtenir le résultat si la connexion est réussie...
Si une bonne âme pouvait me confirmer que je ne fais une bêtise...

Et merci encore !!
 

Discussions similaires

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg