Autres Distance entre deux villes

golgue

XLDnaute Nouveau
Bonjour,
comment calculer une distance en C7 avec la ville de départ en B9 et la ville s'arrivée en C8 ?
Je suis complètement nul en macro.

Merci les amis
 

James007

XLDnaute Barbatruc
Bonjour,

As-tu regardé sur la droite de cette même page ....?

10 discussions similaires ... qui devraient t'être utiles ...;)
 

golgue

XLDnaute Nouveau
Bonjour,

As-tu regardé sur la droite de cette même page ....?

10 discussions similaires ... qui devraient t'être utiles ...;)
Bonjour,
oui j'ai lu plusieurs messages, j'ai telecharger des fichiers, alors certain marche, mais je n'arrive pas a les copier et les modifier dans mon classeur.
 

ShuarS

XLDnaute Junior
Supporter XLD
J'ai juste récupéré le code d'un autre fichier disponible sur le forum.
VB:
Option Explicit

' ***********************************************************************
' *****                                                             *****
' *****        CODE PierreP56 : http://tatiak.canalblog.com/        *****
' *****                                                             *****
' ***********************************************************************


Public Const DIST = "http://www.distance2villes.com/recherche?source="


Sub Distance()
Dim lg As Integer, i As Integer
Dim Url As String, Txt As String

    With Sheets("Feuil1")
        lg = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To lg
            Url = DIST & .Range("A" & i).Value & "&destination=" & .Range("B" & i).Value
            With CreateObject("WINHTTP.WinHTTPRequest.5.1")
                .Open "GET", Url, False
                .send
                Txt = .responseText
            End With
            .Range("C" & i).Value = Split(Split(Txt, "id=""distanciaRuta"">")(1), "</strong>")(0)
        Next i
    End With
End Sub
Malheureusement je n'arrive pas à modifier ce code pour effectuer le calcul sur les deux lignes.
Mais je suis certain que bcp de personne ici pourront le faire :)

Shu
 

tatiak

XLDnaute Barbatruc
Bonjour à tous,

Si j'ai bien compris le point de départ est toujours en B9 et les points d'arrivée en ligne 8 de C8 à AV8. Dans ce cas, il suffit d'indiquer ces références dans le code et de boucler de C8 à AV8 avec un p'tit contrôle si la case "destination" n'est pas vide, ça donne :
VB:
Option Explicit

' ***********************************************************************
' *****                                                             *****
' *****        CODE PierreP56 : http://tatiak.canalblog.com/        *****
' *****                                                             *****
' ***********************************************************************


Public Const DIST = "http://www.distance2villes.com/recherche?source="


Sub Distance()
Dim lg As Integer, i As Integer
Dim Url As String, Txt As String

    With Sheets("Feuil1")
        For i = 3 To 48 ' C8 à AV8
            If Not .Cells(8, i).Value = "" Then
                Url = DIST & .Range("B9").Value & "&destination=" & .Cells(8, i).Value
                With CreateObject("WINHTTP.WinHTTPRequest.5.1")
                    .Open "GET", Url, False
                    .send
                    Txt = .responseText
                End With
                .Cells(9, i).Value = Split(Split(Txt, "id=""distanciaRuta"">")(1), "</strong>")(0)
            End If
        Next i
    End With
End Sub
nb : ShuarS a de bonnes sources! ;)
Pierre
 

golgue

XLDnaute Nouveau
Bonjour à tous,

Si j'ai bien compris le point de départ est toujours en B9 et les points d'arrivée en ligne 8 de C8 à AV8. Dans ce cas, il suffit d'indiquer ces références dans le code et de boucler de C8 à AV8 avec un p'tit contrôle si la case "destination" n'est pas vide, ça donne :
VB:
Option Explicit

' ***********************************************************************
' *****                                                             *****
' *****        CODE PierreP56 : http://tatiak.canalblog.com/        *****
' *****                                                             *****
' ***********************************************************************


Public Const DIST = "http://www.distance2villes.com/recherche?source="


Sub Distance()
Dim lg As Integer, i As Integer
Dim Url As String, Txt As String

    With Sheets("Feuil1")
        For i = 3 To 48 ' C8 à AV8
            If Not .Cells(8, i).Value = "" Then
                Url = DIST & .Range("B9").Value & "&destination=" & .Cells(8, i).Value
                With CreateObject("WINHTTP.WinHTTPRequest.5.1")
                    .Open "GET", Url, False
                    .send
                    Txt = .responseText
                End With
                .Cells(9, i).Value = Split(Split(Txt, "id=""distanciaRuta"">")(1), "</strong>")(0)
            End If
        Next i
    End With
End Sub
nb : ShuarS a de bonnes sources! ;)
Pierre
Bonjour,
c'est pas tout a fait ca:
B7 toujours point de depart
les points d'arriver en ligne 6 de C6 a AW6
et le kilometrage en ligne 5 de C5 a AW5

Petit rappel je suis nul en macro, VBA, ...

merci de me dire aussi comment je l’intègre.

Merci beaucoup
 

tatiak

XLDnaute Barbatruc
Ok, pas de soucis.

Si B7 est le point de départ => indiquer "B7" : DIST & .Range("B7").Value
Les arrivées en ligne 6 => indiquer 6 : "&destination=" & .Cells(6, i).Value
Et mettre les réponses en ligne 5 => indiquer 5 : .Cells(5, i).Value = Split...
Sinon pour la boucle : For i = 3 To 48 ' C à AV
si on veut aller jusqu'à AW, ce sera : For i = 3 To 49 ' C à AW
49 étant le n° de la colonne AW

VB:
If Not .Cells(8, i).Value = "" Then
    Url = DIST & .Range("B7").Value & "&destination=" & .Cells(6, i).Value
    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", Url, False
        .send
        Txt = .responseText
    End With
    .Cells(5, i).Value = Split(Split(Txt, "id=""distanciaRuta"">")(1), "</strong>")(0)
End If
Pierre
 

golgue

XLDnaute Nouveau
Ok, pas de soucis.

Si B7 est le point de départ => indiquer "B7" : DIST & .Range("B7").Value
Les arrivées en ligne 6 => indiquer 6 : "&destination=" & .Cells(6, i).Value
Et mettre les réponses en ligne 5 => indiquer 5 : .Cells(5, i).Value = Split...
Sinon pour la boucle : For i = 3 To 48 ' C à AV
si on veut aller jusqu'à AW, ce sera : For i = 3 To 49 ' C à AW
49 étant le n° de la colonne AW

VB:
If Not .Cells(8, i).Value = "" Then
    Url = DIST & .Range("B7").Value & "&destination=" & .Cells(6, i).Value
    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", Url, False
        .send
        Txt = .responseText
    End With
    .Cells(5, i).Value = Split(Split(Txt, "id=""distanciaRuta"">")(1), "</strong>")(0)
End If
Pierre
Super merci, tu est efficace,
Peut tu juste me dire comment je le mets sur ma feuille , est il possible de mettre un bouton pour lancer le calcul ?
Merci
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas