piga25
XLDnaute Barbatruc
Bonjour,
J'ai un code qui fonctionne très bien pour calculer des distances entre deux villes, sauf lorsque l'on fait une faute dans le nom ou qu'il existe plusieurs possibilités (dans ce dernier cas, il faut ajouter le nom du département et cela fonctionne bien).
Ce que je souhaiterai avoir, c'est une gestion d'erreur qui me signale qu'il faut corriger et ajouter le nom du département dans la TextBox destination dans mon Userform.
Userform : frmNotedeFrais
TxtBox : txtVilleArrivee
Est-ce dans ce code là qu'il faut intégrer la gestion d'erreur ou ailleurs.
Ou dans celui-ci
Ou alors dans le code de l'userform
code du bouton valider:
J'ai un code qui fonctionne très bien pour calculer des distances entre deux villes, sauf lorsque l'on fait une faute dans le nom ou qu'il existe plusieurs possibilités (dans ce dernier cas, il faut ajouter le nom du département et cela fonctionne bien).
Ce que je souhaiterai avoir, c'est une gestion d'erreur qui me signale qu'il faut corriger et ajouter le nom du département dans la TextBox destination dans mon Userform.
Userform : frmNotedeFrais
TxtBox : txtVilleArrivee
Est-ce dans ce code là qu'il faut intégrer la gestion d'erreur ou ailleurs.
VB:
Sub CalculeDistance()
'Déclaration des variables
Dim URL As String, Txt As String
Dim VilleDepart As String, VilleDestination As String
On Error GoTo monErreur:
'Affectation des variables
VilleDepart = Range("AD4")
VilleDestination = Range("AD5")
'Avec la feuille active
With ActiveSheet
'Construction du lien URL du site Distance2villes.com
URL = DIST & VilleDepart & "&destination=" & VilleDestination
With CreateObject("WINHTTP.WinHTTPRequest.5.1")
.Open "GET", URL, False 'Si HTTP, la propriété de l'Open est GET, envoie la requête sans Body
.Send '
Txt = .responseText
End With
Range("AD6") = Split(Split(Txt, "id=""distanciaRuta"">")(1), "</strong>")(0)
End With
monErreur:
MsgBox "Ajouter le nom du département ex: Ville, département"
Exit Sub
End Sub
Ou dans celui-ci
VB:
Sub OuvreFormulaire()
Dim Reponse As Integer
Reponse = MsgBox("Désirez-vous compléter une nouvelle Note de Frais mensuelle ?", vbYesNo, "SAISIE NOTE DE FRAIS")
If Reponse = vbYes Then
With ActiveSheet
If MsgBox("Etes-vous certain de vouloir supprimer le tableau ?", vbYesNo, "Demande de confirmation") = vbYes Then
Range("C10").ClearContents
.Range("B13:G30").ClearContents
MsgBox "Le contenu du tableau a été effacé !"
End If
'.Range("C10").ClearContents
'.Range("B13:F30").ClearContents
End With
frmNotedeFrais.Show
Else
frmNotedeFrais.Show
'Exit Sub
End If
End Sub
Ou alors dans le code de l'userform
code du bouton valider:
VB:
Private Sub btnValider_Click()
'Appel de la procédure qui calcule la distance entre deux villes
Call CalculeDistance
'On récupère la dernière ligne vide de la Note de Frais
Range("B31").End(xlUp).Offset(1, 0).Select
'On teste que la date a été saisie
If Me.txtDate <> "" Then
ActiveCell = CDate(Me.txtDate) 'Format Date
Else
lblMessage = "Vous n'avez pas saisie la date du trajet"
End If
'On affiche les infos dans la note de frais
ActiveCell.Offset(0, 1) = Me.txtVilleDepart
ActiveCell.Offset(0, 2) = Me.txtVilleArrivee
ActiveCell.Offset(0, 3) = Me.txtClient
ActiveCell.Offset(0, 4) = Range("AD7")
ActiveCell.Offset(0, 5) = Me.TxtPeage
End Sub