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

  • Initiateur de la discussion Initiateur de la discussion franzoose
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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
 
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 !!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour