Conversion Excel Win vers Mac, Aide en vba |
Bienvenue invité ( Connexion | Inscription )
Conversion Excel Win vers Mac, Aide en vba |
16 Jun 2019, 10:02
Message
#1
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 Inscrit : 2 Jun 2006 Membre no 62 332 |
Hello tout le monde,
J'ai trouvé une fonction en vba sur le net qui calcule grâce à Google Maps la distance entre deux villes. Mais, elle requiert Microsoft XML v6.0 qui ne peut pas être installé sur un Mac. Voici la fonction : Code Function G_DISTANCE(Origin As String, Destination As String) As Double ' Requires a reference to Microsoft XML, v6.0 ' Draws on the stackoverflow answer at bit.ly/parseXML Dim myRequest As XMLHTTP60 Dim myDomDoc As DOMDocument60 Dim distanceNode As IXMLDOMNode G_DISTANCE = 0 ' Check and clean inputs On Error GoTo exitRoute Origin = WorksheetFunction.EncodeURL(Origin) Destination = WorksheetFunction.EncodeURL(Destination) ' Read the XML data from the Google Maps API Set myRequest = New XMLHTTP60 myRequest.Open "GET", "http://maps.googleapis.com/maps/api/directions/xml?origin=" _ & Origin & "&destination=" & Destination & "&sensor=false", False myRequest.send ' Make the XML readable usign XPath Set myDomDoc = New DOMDocument60 myDomDoc.LoadXML myRequest.responseText ' Get the distance node value Set distanceNode = myDomDoc.SelectSingleNode("//leg/distance/value") If Not distanceNode Is Nothing Then G_DISTANCE = distanceNode.Text / 1000 exitRoute: ' Tidy up Set distanceNode = Nothing Set myDomDoc = Nothing Set myRequest = Nothing End Function Est-ce que l'un d'entre vous, doué en vba, pourrait convertir cette fonction pour qu'elle tourne sous excel Mac (office 2011 ou 2016) ? Merci d'avance. m00n -------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
16 Jun 2019, 10:46
Message
#2
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 198 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
Vu que la macro fait appel à des fonctions absentes de la version pour Mac (ENCODEURL(), par ex.) et que cela nécessite des appels à des API Google, il y a peu de chances que cette fonction soit adaptable à une version pour Mac. De plus, les requêtes internet, ce n'est certainement pas un point fort des versions pour Mac d'Excel.
Déjà, telle quelle, la fonction ne tourne pas dans Office sous Windows 10, il doit donc manquer pas mal de données pour qu'on puisse envisager de l'utiliser... -------------------- |
|
|
16 Jun 2019, 16:37
Message
#3
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 Inscrit : 2 Jun 2006 Membre no 62 332 |
Ok merci Aliboron.
Si ce n'est pas trop te demander, puisqu'il semble que tu aies windows 10, pourrais-tu tester la fonction ci-dessous, qui normalement fait la même chose que celle de mon premier post. Fonctionne-t-elle ? Est-elle adaptable ? Merci beaucoup. Code Function distancier_google(start, dest)
'creation d'un object xmldoc en memoire Set xmldoc = CreateObject("Microsoft.XMLDOM") xmldoc.Async = "false" 'creation de l'url avec les arguments URL = "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=" & start & "&destinations=" & dest & "&language=fr-FR" xmldoc.Load (URL) 'load de l'url dans le xmldoc 'Debug.Print xmldoc.XML 'examen du fichier en DOM For Each Distances In xmldoc.SelectNodes("/DistanceMatrixResponse") Status = Distances.SelectSingleNode("status").Text If Status = "OK" Then depart = Distances.SelectSingleNode("origin_address").Text Debug.Print depart Arrivee = Distances.SelectSingleNode("destination_address").Text Debug.Print Arrivee For Each Row In xmldoc.SelectNodes("/DistanceMatrixResponse/row/element") Status = Row.SelectSingleNode("status").Text If Status = "OK" Then 'on imbrique 2 boucles "la distance" et le "temps" For Each Distance In xmldoc.SelectNodes("/DistanceMatrixResponse/row/element/distance") En_M = Distance.SelectSingleNode("value").Text Debug.Print En_M & " metres" En_KM = Distance.SelectSingleNode("text").Text Debug.Print En_KM & " kilomètres" For Each Duration In xmldoc.SelectNodes("/DistanceMatrixResponse/row/element/duration") En_SS = Duration.SelectSingleNode("value").Text Debug.Print En_SS; " secondes" En_MM = Duration.SelectSingleNode("text").Text Debug.Print En_MM Next Next Else End If Next Else End If Next Set xmldoc = Nothing End Function -------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
16 Jun 2019, 18:00
Message
#4
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 198 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
puisqu'il semble que tu aies windows 10, Eh oui, grâce à Parallels Desktop, je peux sans souci faire des vérins sous Windows ! pourrais-tu tester la fonction ci-dessous, qui normalement fait la même chose que celle de mon premier post. Je n'arrive pas à la faire fonctionner, déjà pour une raison simple : je n'ai aucune idée de ce qu'il faut mettre comme paramètres départ et arrivée (des coordonnées GPS, des noms de ville,...) Pour ce qui est de l'adapter au Mac, on risque bien de se trouver confrontés aux mêmes soucis que précédemment. Déjà ça commence fort avec un ActiveX (fonctionnalité totalement incompatible sur Mac)... -------------------- |
|
|
16 Jun 2019, 18:37
Message
#5
|
|
Macbidouilleur d'Or ! Groupe : Modérateurs Messages : 19 353 Inscrit : 22 Jul 2004 Lieu : Louvain-la-Neuve (Gaule Gelbique) Membre no 21 291 |
Des vérins ou des vérifs ?…
-------------------- ¶ MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS 12.6 “Monterey” ¶ MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8 ¶ Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C ¶ B-Box 3 + HP LaserJet 4000 N
¶ La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même. … Les corsaires mettent en berne… |
|
|
16 Jun 2019, 18:52
Message
#6
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 198 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
-------------------- |
|
|
16 Jun 2019, 19:25
Message
#7
|
|
Macbidouilleur d'Or ! Groupe : Modérateurs Messages : 19 353 Inscrit : 22 Jul 2004 Lieu : Louvain-la-Neuve (Gaule Gelbique) Membre no 21 291 |
je peux sans souci faire des vérins sous Windows ! Un truc de ce genre-là ? -------------------- ¶ MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS 12.6 “Monterey” ¶ MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8 ¶ Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C ¶ B-Box 3 + HP LaserJet 4000 N
¶ La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même. … Les corsaires mettent en berne… |
|
|
17 Jun 2019, 05:19
Message
#8
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 6 150 Inscrit : 31 Oct 2003 Membre no 11 118 |
C'est pour calculer la distance à vol d'oiseau ou par la route ?
Dans le premier cas pas besoin de google il suffit d'utiliser la formule d'Havershine http://www.ordinateur.cc/Logiciel/Microsof...ess/135119.html -------------------- |
|
|
18 Jun 2019, 09:59
Message
#9
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 Inscrit : 2 Jun 2006 Membre no 62 332 |
hello,
Merci à tous pour vos réponses (sérieuses ou pas ). Dans le cadre de mon travail, je dois comptabiliser mes déplacements journaliers. Pas à la centaine de mètres près quand même. Donc j'aurais voulu faire un tableau dans excel dans lequel je mets ma ville de départ et ma ville d'arrivée et qu'à l'aide d'une fonction, il me calcule le total des km réalisés. L'équation Haversine n'est donc pas utilisable dans mon cas. -------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
Nous sommes le : 25th April 2024 - 00:50 |