Extraction de coordonnées gps

Bonjour, je vous expose mon problème. J'utilise une application gps qui intègre des fichiers pois (camping, pic-nique etc..) uniquement par pays. Or les fichiers que je possède ont les coordonnées pois de tous les pays européens mélangés.

L'idée était d'extraire les lignes correspondants uniquement aux coordonnées de la France ou encore d'Allemagne ou d'Espagne etc....

ex de fichier txt: (le type de ligne doit être respecté à la lettre.

4.07207| 47.57019| "CC Camping municipal Talcy"
-2.24479| 50.68261| "CC Seven Stars"
-0.26644| 39.25262| "CC Camping les Palmeres"
5.56641| 52.31228| "CC Camping Strand Horst"
5.09715| 51.33719| "CC De Zoete Inval (Reis naar de boer)"
-1.02210| 52.44265| "CC Brook Meadow"

les 2 premières lignes correspondent à un camping français, les 4 suivantes correspondent à des campings à l'étranger.

Sachant que les coordonnées mini et maxi en France sont: en longitude comprise entre -4.78 et 8.15 et en latitude comprise entre 42.34 à 51.07 je me suis dit qu'en intégrant cela dans un tableur Excel cela suffirait à fabriquer un fichier qui permettrait d'extraire uniquement les coordonnées françaises.

Quelqu'un, dans une autre section du forum, m'a donc aidé à fabriquer une série de formules Excel pour y arriver, et ça marche, enfin..... presque.

En effet, je n'avais pas pensé que la France étant un hexagone, je me retrouverais avec des coordonnées dans le sud de l'Angleterre ou de la Belgique ou le nord de l'Espagne ou de l'Italie. Et dans ce cas, le fichier crée est refusé par mon gps.

Cette personne m'a dit que l'on pouvait peut être y arriver avec des logiciels comme QGIS ou un algo python et openstreetmaps, et on m'a donc conseillé de poster sur cette partie de forum consacré à la programmation.

Je ne connais pas du tout ces logiciels et encore moins ce genre de programmation. Auriez vous une solution à m'apporter.

J'espère que je me suis bien fait comprendre.

Merci à vous.

ps: je vous fournis un de mes fichiers txt (pic-nique) qui regroupe toutes les aires de pic-nique européen et dont j'aimerais extraire dans plusieurs fichiers uniquement les lignes française, ou Allemande ou encore Espagnole etc...

Bonjour jld272

Avec OpenStreetMap et une petite fonction, on peut obtenir ce que tu souhaites

Tu ouvres le fichier texte, CTRL+A pour tout sélectionner, dans la cellule A1 du fichier on colle les données

En colonne B et C 2 formules récupère la longitude et latitude

En colonne D, la fonction va chercher si la coordonnée se trouve en France ou non

En revanche, je pense qu'il faudra peut-être mieux passer par une procédure qui récupèrera les coordonnées et inscrira VRAI ou FAUX sur chaque ligne, plutôt que d'appeler la fonction directement de la cellule, car ça risque d'être très long... à voir

A+

Merci de ta réponse, c' est exactement ce que j' ai fait mais je me retrouve avec des lignes qui ne sont pas en France à cause des coordonnées qui se trouvent dans des parties limitrophes. Et encore pire avec des pays comme la Norvège où la forme est très particulière.

Par contre je ne comprend pas que tu parles de openstreepmap? Car le fichier que tu m' as envoyé est réalisé sur Excel. A quel moment utiliser openstreepmaps?

Re,

Oula.... as-tu vu que dans la colonne D, tu as une fonction qui indique si les coordonnées sont en France ou pas

L'information ne peut pas être erronée, puisque la fonction envoie une requêtre sur OpenStreetMap avec un retour du pays

ALT+F11 pour aller dans l'éditeur VBA

A+

Bonjour,

Si j'ai bien compris vous voulez filtrer également les autres pays, pas seulement la France.

Je me suis permis d'éditer l'excellente Macro de JLExcel2fr que je salue, pour répondre à votre demande. J'ai ajouté un bouton pour vous faire le tri automatique.

ATTENTION : vous avez énormément de données. Excel va probablement prendre plusieurs minutes à tout calculer, et votre ordinateur risque de "freeze". C'est normal, ne le fermez pas. Attendez patiemment, je vous ai mis une petite MsgBox à la fin de l'exécution pour vous prévenir que Excel à terminé.

Non testé mais entrez le nom du pays sans accents je pense

A JLExcel2fr merci pour le fichier, mais je n'arrive pas à faire un copier/coller pour continuer le fichier, en tous les cas merci pour le travail.

A saboh12617 le fichier a l'air sympa je viens de le lancer il y a 1/2 heure, il tourne mais on ne peut pas savoir s'il tourne normalement ou si Excel est planté.

Est ce à cause de mon Excel 2007 ou de mon pc qui rame pourtant c'est un I7. A mon avis Excel se plante.

PS: je viens d'essayer avec 2 lignes seulement et il plante "erreur 1004" la méthode Autofilter de la classe range a échoué

6ecran-debug2.pdf (53.38 Ko)
9ecran-debug1.pdf (31.90 Ko)

@jld272

A JLExcel2fr merci pour le fichier, mais je n'arrive pas à faire un copier/coller pour continuer le fichier, en tous les cas merci pour le travail.

Quelle est la difficulté pour ouvrir un fichier texte, faire CTRL+A pour tout électionner, CTRL+C pour tout copier
Aller dans le fichier Excel à l'endroit souhaité et faire CTRL+V

Excel 2007 voilà pourquoi il faut mettre sa version d'Excel dans son profil... c'est simple pourtant

Bonjour à tous !

Excel 2007 voilà pourquoi il faut mettre sa version d'Excel dans son profil... c'est simple pourtant

Cette intervention du demandeur a déjà été sollicitée. ( voir ici ! )

Re,

PS: je viens d'essayer avec 2 lignes seulement et il plante "erreur 1004" la méthode Autofilter de la classe range a échoué

Erreur de ma part, j'ai ecrit le filtre en anglais "TRUE", remplacez

rngIni.Offset(-1, -1).Resize(rngIni.End(xlDown).Row).AutoFilter Field:=4, Criteria1:="TRUE"

par

rngIni.Offset(-1, -1).Resize(rngIni.End(xlDown).Row).AutoFilter Field:=4, Criteria1:="VRAI"

Mais bon cela sert juste à filtrer, si les lignes sont calculées, filtrez sur la colonne VRAI/FAUX sous le nom du pays pour ne prendre que les "VRAI", ie. campings dans le pays sélectionné.
Normalement comme je vous l'ai indiqué le temps d'exécution est maximum quelques minutes (1-2 chez moi), si vous atteignez les heures oui il y a un problème avec la version d'Excel peut etre.
Réessayez avec le code corrigé et dites moi si le problème est résolu.

@saboh12617 oups même après modification du debog cela ne change rien même avec 2 lignes.

@JLExcel2fr ce n'est pas copier coller qui ne fonctionne pas c'est quand j'essaie de continuer après la ligne 36, ça marche si je recopie la formule sur quelques lignes mais si je ne fais sur tous le fichier en même temps Excel se ferme, pas assez de mémoire surement (pourtant 32Go)

Au vu de votre réponse par rapport au fait que Excel se ferme quand vous étirez manuellement, je pense que c'est la raison pourquoi la macro plante également, puisqu'elle fait exactement la meme chose.

J'ai revu le code en le faisant calculer 10 lignes par 10 lignes, dans l'espoir de soulager Excel. Dites-moi si cela fonctionne pour vous. Il y a une petite barre de progression pour se donner une idée du travail en cours.

Voir ci-joint

Je suis désolé mais ça ne fonctionne toujours pas. Je suis désolé de vous faire perdre votre temps.

Quelle version d'Excel avez vous? Je ne pense pas que cela vienne de ma version à moins qu'il ne reconnaisse pas certain paramètre comme "PointInCountry" ou faut il une autorisation spéciale?

9ecran-debug3.pdf (87.38 Ko)

Ah mince non c'est encore moi,

Ouvrez "Module1" dans l'editeur de code et retirez "Private" devant "Private Sub CalcAll"... Je l'ai ajouté après-coup sans retester mais du coup ca bloque.

=> Sub CalcAll

Sans private devrait fonctionner.

oui ca fonctionne il est en train de tourner il en est à 9%, j'ai calculé environ 1mn pour 0,5% donc environ plus de 3h pour ce fichier qui est gros. Espérons qu'il aille jusqu'au bout.

Je reviens vers vous des la fin du processus.

Petite question, une fois le fichier terminé je dois le sauvegarder pour qu'il prenne en compte la dernière modif.

Après il me suffira de copier un fichier txt sur la colonne A et de lancer la procédure c'est bien cela?

Et si je veux changer le nom du pays, quel est l'orthographe à utiliser, y a t il une liste de nom de pays à utiliser?

Le sauvegarder permet de garder les résultats en mémoire oui. Après je pense qu'il sera plus simple de coller vos nouveaux textes dans une copie du fichier initial, car avec le filtre actif vous risquez de sauter des lignes.

Oui la colonne A est celle à modifier

Pour les noms de pays je me suis posé également la question mais je n'ai pas trouvé beaucoup d'infos en ligne, je n'ai jamais utilisé openstreetmap (c'est ce qui permet à la fonction de JExcel2fr de trouver si l'adresse est en France). J'espère que lui pourra vous éclaircir sur ce point. Comme indiqué j'ai simplement créé une boucle qui copie colle sa fonction petit à petit, et j'ai remplacé un champ statique "France" par une lecture de la valeur de la cellule en orange.

Donc à voir avec JExcel2fr. Personnellement je vous recommanderai d'utiliser les noms anglais, sans accents avec 1e lettre en majuscule.

oui c'est bien ce qu'il me semblait. Il en est à 15% et l'écran d'Excel ou se trouve les cases est passé complètement bleu depuis que l'écran de mon pc est passé en veille, surement dû au ressources du pc. Espérons qu'il revienne à la fin.

Il me suffira de faire un tri sur la colonne VRAI ou FAUX et de me créer un fichier txt avec les lignes VRAI. Si ça marche sera vraiment super, et surtout quel temps de gagné.

oui, j'ai regardé un peu en ligne et sur Excel, qu'importe la version, les fonctions VBA ("UDF") sont mono-threaded. En d'autres termes il effectue les calculs un à un au lieu d'en parallèle, d'où le temps énorme pour trouver tous les pays.

Enfin je suis quand meme surpris car pour moi cela mettait seulement quelques minutes (Excel 2016). Peut etre avez vous une faible connexion internet ?

EDIT : je retire ce que j'ai dit sur votre temps de calcul long, je viens de refaire un test sur env. 1000 lignes qui m'a pris 10 min... Donc oui sur un total de 20 000 lignes vous en avez pour quelques heures ^^" désolé. Si à la fin vous avez une erreur Autofilter, faites End. Et réalisez le filtre manuellement. Au moins les valeurs seront déjà calculées.

ATTENTION ENROME BOULETTE ARRETEZ LA MACRO !!

Vos coordonnées latitudes et longitudes sont inversées par rapport à celles de la fonction, vous calculez dans le vide !! Terriblement désolé.

Ci-joint fichier corrigé par rapport à toutes les dernières remarques. Encore pardon vous avez mouliné pour rien.

J'ai testé comme vous pouvez le voir sur 100 exemples et les erreurs sont résolues. A la limite lancez le calcul cette nuit, j'ai calculé comme vous entre 3 et 4h de traitement.

AVANT DE LANCER : Recopiez vos données dans la colonne A, je l'ai racourcie pour les tests divers.

par contre je viens d'essayer le fichier, une fois terminé il n'y a aucune erreur mais il efface toutes les données je n'ai plus rien à l'écran, donc plus moyen de trier.

En fait il efface toutes les lignes de 1 à 100 (nombre de lignes remplies au départ) le tableau démarre à la ligne 100.

Je suis en train d'essayer de comprendre la macro et je m'apercoi qu'elle parle de camping ici:

Sub startCalcUF()
Dim myBar As ProgressBar
Set myBar = New ProgressBar
setUFTitle ("Recherche des campings en " & ActiveSheet.Range("D1").Value & "...")
myBar.Show
End Sub

ce fichier correspond aux aires de pic-niques. Celui du camping était celui sur l'autre post. y a t il une grosse importance si me me sert de ce fichier pour tous mes autres fichiers.txt?

Non désolé pour moi je viens de comprendre, c'est le titre de la barre de progression donc aucune incidence sur le résultat.

Re,

D2sol2, je n'ai pas pris le temps de vous faire une interface correcte.

CI-joint veuillez retrouver le meme fichier avec 2 boutons supplémentaires :

le 2.1 permet de supprimer les résultats déjà calculés, comme son numéro l'indique, à cliquer avant de lancer le long calcul avec le bouton 2.2.

Le 3), à droite, permet de réafficher toutes les cellules masquées par le filtre.

Le fichier contient 15 lignes, je vous laisse prendre en main les 3 boutons (essayez les!) avant de passer au gros calcul après avoir copié toutes vos données en colonne A.

Normal que vous ne compreniez pas trop le code en question, il est en lien avec l'userform (la barre de progression). Le code se trouve dans le sub CalcAll et la fonction IsPointInCountry.

J'espère que cette fois c'est bon :)

Rechercher des sujets similaires à "extraction coordonnees gps"