Modification de script ou de formule de résultat de distance

Bonjour à tous, j’espère que tout se passe pour le mieux de votre côté.

Je rencontre une difficulté et j’ai besoins d’aide.

J’ai intégré un script calculant automatiquement la distance ALLER SIMPLE entre les points renseignés en Cologne C et D. (Ligne 8 en exemple)

Cependant, la distance kilométrique ne sera pas toujours calculée automatiquement dans la gestion de mon fichier : dans ce cas les cellules resteront donc vides et la distance sera renseignée manuellement pour UN ALLER-RETOUR (Ligne 9 en exemple).

Mon objectif qui me pose problème se situe dans la cellule E269. Sa seule fonction est d’additionner l’ensemble des kilomètres parcouru ALLER-RETOUR. Or, le résultat actuel est faussé car il n’a été pris en compte que la distance d’aller en cellule E8 et non le retour (Le résultat attendu devrait donc être de 526 KM dans cet exemple et non 313 KM).

Je suis donc à la recherche d’une âme charitable pour, soit :

  • Solution idéale : Modifier mon script pour calculer une distance en aller-retour (et non en simple aller) ;
  • Me communiquer la formule à intégrer en cellule E269 pour que cette dernière additionne également la distance de retour uniquement lorsque le calcul est généré automatiquement.

Voici le fichier en question : Classeur1.xlsm (35,1 Ko) (Vous constaterez que j’ai surligné en jaune les cases servant d’exemple ainsi que celle contenant la formule posant problème).

Merci infiniment à tous.

Bonsoir,

Réponse bête, multiplies par 2 le calcul issu de la macro.
On ne peut pas tester il manque un fichier
Cordialement.

Bonsoir,

impossible car la distance kilométrique ne sera pas toujours calculée automatiquement dans la gestion de mon fichier et je ne souhaite pas ajouter une Cologne.
Je viens de télécharger le fichier et aucuns souci, le bouton « calcul » fonctionne bien.

Re,

Je voulais dire, dans la macro. Puisque c’est ce calcul qui doit être doublé.
Si j’ai bien compris.

Je viens de télécharger le fichier et aucuns souci, le bouton « calcul » fonctionne bien.

Normal il est issu de ton poste, donc tous les fichiers y sont.
Voila ce que j’obtiens sur mon poste.

Cordialement.

Bonjour et merci de ton retour.

je ne sais pas ce que je dois faire pour te donner l’accès au fichier sans te communiquer la totalité du classeur.

Effectivement la solution idéal est de modifier le script pour doubler la distance.

Voici mon script:
'====================
'Calcul des distances
'www.peachbird.com
'====================
Option Explicit
Public Const DIST = « Distance entre 2 villes »
Sub Distance()
Dim lg As Integer, i As Integer
Dim Url As String, Txt As String, e, temps
With Sheets(« 2020 (RIVIERE Florence) »)
lg = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 8 To lg
If Range(« C » & i).Value <> «  » And Range(« C » & i).Value <> 0 Then
Url = DIST & .Range(« C » & i).Value & « &destination= » & .Range(« D » & i).Value
With CreateObject(« WINHTTP.WinHTTPRequest.5.1 »)
.Open « GET », Url, False
.send
Txt = .responseText
End With
.Range(« E » & i).Value = Split(Split(Txt, « id= »« distanciaRuta »« > »)(1), «  »)(0)
'en nombre
.Range(« E » & i).NumberFormat = « ##,## »
.Range(« E » & i) = Val(Replace(.Range(« E » & i), « , », «  »))
End If
Next i
End With
MsgBox « Le calcul des KMs est terminé ! »
End Sub

Cordialement

Bonjour,

Le plus simple, à mon avis, est de demander à l’auteur de cette macro quelle instruction calcule la distance et multiplier le résultat par deux.

je pense qu’il faut modifier l’une de celle-ci :

.Range(« E » & i).Value = Split(Split(Txt, « id= »« distanciaRuta »">")(1), « »)(0)
.Range(« E » & i).NumberFormat = « ##,## »
.Range(« E » & i) = Val(Replace(.Range(« E » & i), « , », « »))

Sinon, l’ajout d’une colonne cachée qui servira de base à la totalisation. Ou faire appel au pro du VBA qui sont légion sur ce site.

Bonne continuation.
Cordialement.

Re,

Essaies
.Range(« D » & i) = Val(Replace(.Range(« D » & i), « , », « . »)) * 2

Merci @ Garfield pour la mise à dispo de la macro. :wink:

Good !!!

Voici le bon changement de ligne : .Range(« E » & i) = Val(Replace(.Range(« E » & i), « , », « »))*2

Vraiment coll ce script :slight_smile:

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.