Comment programmer un calcul de surface ?

Résolu/Fermé
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015 - 11 sept. 2012 à 16:25
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 - 26 sept. 2012 à 15:41
Bonjour à toutes et à tous,

Autant préciser tout de suite que je ne connais pas trop Excel (j'utilise la version 97) et encore moins Open Office] (j'utilise la version 3.3), mais j'ai un problème récurent que je souhaiterai éliminer, alors je lance une bouteille sur le net :-)

Voilà mon soucis :

Je reçois régulièrement des listings de coordonnées au format "nxy.txt" (où n est un numéro de point, x et y ses coordonnées cartésiennes) le tout avec un séparateur "espace".
Mon problème est de calculer la surface de polygones à partir de ces fichiers (en s'appuyant sur une documentation papier précisant la liste des points formants les différents polygones à calculer). Il s'agit en fait d'une vérification de calculs topométriques.

J'ai trouvé une formule permettant de faire le calcul sur un forum :

"c'est facile : soit un polygone de n points (le dernier a les mêmes
coordonnées que le premier, sinon, on ajoute le premier point à la liste)

soit X[1] et Y[1] les coordonnées du premier point et n le nombre de
points (donc X[n] = X[1] et Y[n] = Y[1])

la surface est la valeur absolue (le signe du résultat dépend du sens de
parcours du polygone) de la somme pour i variant de 1 à n de
( X[i+1] - X[i] ) * ( (Y[i] + Y[i+1] - 2*Y[1] ) / 2

Bref, c'est plus long à expliquer qu'à programmer..."


J'ai alors essayé de jouer aux apprentis programmeur sur Excel, et comme l'avais si bien souligné mon interlocuteur, bien plus facile à dire qu'à faire :-(

J'aimerai vous transmettre ma modeste ébauche pour voir s'il serait possible d'améliorer cet essai :-)
Malheureusement, je ne sais pas comment il faut faire :-(

je souhaiterai :

1) Que l'on vérifie que mes calculs sont corrects, le plus souvent tout se passe bien, mais parfois je trouve des résultats bizarres (je suis alors obligé d'utiliser un logiciel de Dessin Assisté par Ordinateur, relier tous ces points dans le bon ordre, puis de demander un calcul de surface. Le résultat confirme souvent mon intuition à savoir que mon fichier excel déconne, du coup je ne suis jamais vraiment sûr de mon coup)

2) Remplir directement le tableau en sélectionnant le fichier ".txt" (et non : l'ouvrir dans excel puis copier et coller les valeurs dans mon tableau). Ce qui au passage résoudrait les problèmes liés à la taille de mon tableau (j'ai prévu 200 lignes pour être tranquille, mais parfois les listings de points sont très long et je dois faire une sélection en amont)

3) Le calcul nécessite de désigner l'ordre d'apparition des points (le parcours du périmètre du polygone). J'ai donc prévu à cet effet une colonne "N° d'Ordre".
Y-a-t'il une possibilité de remplir cette colonne à la souris ? En prévoyant un retour au point précédent en cas d'un clic hasardeux (très ennuyeux de tout recommencer quand on en est au 98ième point ....)

Voilà, par avance merci à tous d'avoir lu ce message, merci à ceux qui pourront m'aider et j'espère à très bientôt ;-)






A voir également:

120 réponses

ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
20 sept. 2012 à 18:54
salut Mytå

Oui, mais ça ne m'arrange pas pour le graphique et le calcul de l'aire
En fait, si on fait les choses dans l'ordre (le mien !!!!) ça tourne mais ...

J'ai bêtement détourné l'erreur (ce qui coutait le moins cher) dans la dernière version, si ça ne suffit pas, je crois qu'il va falloir définir les plages depuis vba plutôt que dans la feuille

merci
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
20 sept. 2012 à 19:40
salut,

En effet, avec ta modif, ça marche nickel (essaie fait dans 97, car dans 2010 je n'ai pas encore trouvé où sont les noms :-)

Par contre, je ne sais pas comment il faut que je fasse dans mon fichier :-(
Je suis désolé, mais là je suis complètement largué ;-(

Dans le fichier "calcul_surface_m7", j'ai un plagefichiers et un plagek. Je suppose que la modif doit se faire dans le second ????

Si dans plagek je remplace :

=DECALER(Saisie!$A$8;0;0;NB(Saisie!$A$8:$A$207);1)

par

=DECALER(Saisie!$A$8;0;0;NBVAL(Saisie!$A$8:$A$207)+1;1)

j'obtient :

erreur :https://www.cjoint.com/?BIuttKI2AYE
code : https://www.cjoint.com/?BIutqWbolvX

J'ai alors essayé de remplacer par :

=DECALER(Saisie!$A$8;0;0;NB(Saisie!$A$8:$A$207)+1;1)

Mais j'ai toujours le même message :-(

Comme tu as pu le constater, je suis vraiment débutant alors, je fais certainement des grosses conneries :-)

En tout cas, vraiment merci pour ton aide, car je suis sûr que ccm81 va s'inspirer de ta solution pour finaliser le projet.
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
20 sept. 2012 à 19:48
Réponse au post 85.

sous 97 : le clic sur RAZ marche nickel, par contre la liste ne s'incrémente pas correctement, en effet les noms des fichiers apparaissent dans la colonne I au lieu de H comme avant. Du coup, mais fichiers n'apparaissent pas dans le menu déroulant :-(
évidemment idem pour 2010 :-)

Comment je fais pour rectifier le tir ????
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
20 sept. 2012 à 20:00
1. par contre la liste ne s'incrémente pas correctement, en effet les noms des fichiers apparaissent dans la colonne I
zut, j'avais mis des données en colonne D, et j'ai supprimé la colonne au lieu d'en effacer le contenu
remède > tu te places en colonne D puis Insertion/colonne

2. Dans le fichier "calcul_surface_m7", j'ai un plagefichiers et un plagek. Je suppose que la modif doit se faire dans le second

je n'ai pas prévu de modif pour le moment à ce sujet, j'ai bien lu la proposition de Mytå, et j'ai répondu post #87

on fonctionne sur calcul_surface-M8.xls
tu testes et tu dis (n'oublies pas de préciser avec quelle version d'excel)

bonne suite
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
20 sept. 2012 à 20:31
Test avec 97 sur calcul_surface-M8.xls après insertion colonne.

1. Ok c'est fait et sa marche.

Par contre, si je ne fais pas de RAZ avant nouvel import, j'ai à nouveau la superposition. Mais bon c'est pas grave, je peux à chaque nouvel import cliquer sur RAZ, après tout ce bouton est bien là pour ça :-)
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 20/09/2012 à 20:51
1. désolé, comme dit précédemment, tu vas être bon pour modifier un peu de code

----- avant -----

Private Sub btImporter_Click()   
Dim Ftxt As String, ligne As String, chemin As String   
Dim li As Long, co As Long   
Dim t   
' nom fichier source   
Ftxt = Range(celFichier)

-----après-----

Private Sub btImporter_Click()   
Dim Ftxt As String, ligne As String, chemin As String   
Dim li As Long, co As Long   
Dim t   
' nettoyer   
Call btRAZ_Click  
' nom fichier source   
Ftxt = Range(celFichier)   
Range(celFichier) = Ftxt

2. dès que j'ai la version avec tri de la feuille ListingXY je t'envoie
(ça sera pour demain)

bonne suite
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
20 sept. 2012 à 20:52
Test avec 97 sur calcul_surface-M8.xls après insertion colonne.

quand je saisie les données, le graphique se met automatiquement à jour, le bouton Actualiser le graphique semble ne plus servir à rien. De plus quand je clic dessus, ça plante :

erreur : https://www.cjoint.com/?BIuuUiItiXA
code : https://www.cjoint.com/?BIuuUDAUrvT

Par contre les noms de points dans les étiquettes ne sont pas bon

copie écran : https://www.cjoint.com/?BIuuZRCxFYl
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
20 sept. 2012 à 20:59
Réponse au post 92
Test avec 97 sur calcul_surface-M8.xls modifié

CA MARCHE !!!!!!!!!!!!!

C'est TOP.


J'attends la suite avec impatience, à demain .
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
21 sept. 2012 à 08:37
quelques modifs
1. tri du listingXY selon colonne A
2. cumul de la liste des fichiers disponibles (+ bouton RAZ pour la nettoyer)
3. dans la feuille Calcul j'ai imposé 1 en A2 et B2 pour le premier point si A8 est vide pour éviter un graphique sans point après un RAZ (et les problèmes qui en résultent)

https://www.cjoint.com/?3Iviztlcw11

reste à tester tout çà
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
21 sept. 2012 à 10:32
Salut,

Test avec 97 sur calcul_surface-M9.xls

1. Super !

2. Je n'avais pas compris ça. Je pensais que tu allais faire un peu la même chose que pour la recherche des fichiers.

Du style :

en G3 je mets mon dossier "Racine" (création d'une liste des sous-dossiers disponibles)

=> en G5 je sélectionne un "sous-dossier" (création d'une liste des sous-dossiers disponibles)

=> en G8 je sélectionne un "sous-dossier" (création de la liste des fichiers .txt disponible)


=> en G11 je sélectionne le "fichier à traiter"

et "Nettoyer l'arborescence" efface G8, G11 et demande une nouvelle sélection en G5.

Sinon ta solution est sympa, mais je risque vite de me perdre car les fichiers de données d'un même opérateur, ont souvent le même nom (habitude de l'opérateur : "levé.txt", "terrain.txt", "taché.txt", ...etc.). Ainsi avec ta proposition, si j'ai plusieurs fichiers à vérifier d'un même opérateur je risque d'avoir dans la liste plusieurs fois le même nom :-( donc si on ne peut pas réaliser la solution ci-dessus, il vaut mieux "Nettoyer la liste" avant chaque nouvel import.



3. Ok. Le problème persistant est que mon graphique est très petit (à cause d'une "non prise en charge automatique" de l'échelle, je clic sur "Actualiser" et là ça plante :-(

image graphique : https://www.cjoint.com/?BIvkwkEqwsX
erreur : https://www.cjoint.com/?BIvkwGffQWk
code : https://www.cjoint.com/?BIvkxcAEnbo

dans un précédent post tu m'avais fait changer les propriétés des axes. Ces propriétés semblent figées.



RQ : Quand on saisie un n° de point qui n'est pas dans la liste, on botient #NA dans les cellules Est et Nord correspondantes, serait-il possible d'envoyer un message du style "Votre point n° xxxx n'est pas dans le fichier de données toto.txt" ?
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
21 sept. 2012 à 10:40
RQ : j'ai "Actualisé" le graphique manuellement et je ne comprends vraiment pas d'où sortent ces étiquettes

copie écran : https://www.cjoint.com/?BIvkMLf7wOQ

Dans les différentes feuilles il n'y a nulle part des points 552, 553, 554 ...
Donc je suppose qu'il y a quelque part un nettoyage dans le code qui ne se fait pas correctement :-(
Désolé, tu as surement compris ça depuis déjà bien longtemps, mais j'essaie de suivre ... à mon rythme :-)

@ bientôt
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 21/09/2012 à 11:58
1. je ne comprends vraiment pas d'où sortent ces étiquettes
c'est normal, elles ne sont actualisées que par le bouton Actualiser le graphique, on peut éventuellement les vider quand on fait un RAZ
pour ce qui est de les mettre à jour à chaque point posé, j'ai peur que ça pose un problème, mais j'essaierai
2. Quand on saisie un n° de point qui n'est pas dans la liste, on obtient #NA dans les cellules Est et Nord correspondantes, serait-il possible d'envoyer un message du style "Votre point n° xxxx n'est pas dans le fichier de données toto.txt"
le problème peut se régler avec une liste de validation (moyennant une nouvelle plage nommée dans ListingXY
https://www.cjoint.com/?3IvlWp7MaJ6
3. pour ce qui est de l'arborescence des dossiers
je ne pense pas que ce soit jouable, donc on supprime l'option ou tu nettoies au coup par coup
4. le plantage sur les échelles
4.1. a lieu lorsque tu cliques sur nouvelle sélection?
4.2. avec mon fichier et mes données
4.3. après une nouvelle importation,
dans tous les cas, peux tu m'envoyer le fichier excel une fois planté
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
21 sept. 2012 à 12:02
Réponse post #96

3. dans la feuille Calcul j'ai imposé 1 en A2 et B2 pour le premier point si A8 est vide pour éviter un graphique sans point après un RAZ (et les problèmes qui en résultent)

OK, mais du coup je comprends mieux la présence de l'étiquette "552". Je ne sais pas pourquoi c'est ce "N° Point" (552) qui apparaît, mais ça c'est pas grave ;-)
Ce 552 n'est pas anodin, ce "N° Point" est le premier point du calcul du lot K,
ça ressemble au "plus grand" des "premiers" "N° Point" utilisés pour calculer les surfaces.
En effet 552 est le premier "n° point" utilisé dans le calcul du lot K (points 552 à 585) et il est en même temps le plus grand de la liste des premiers "N° Points " utilisé lors des autres calculs (Lot A commence à 500, lot F commence à 534, ...etc)

J'ai fais un test en demandant un nouveau calcul avec un "N° Point" = 1000, mais NON, les étiquettes s'incrémentent toujours à partir de 552.
Là, c'est trop dur pour moi :-(

Serait-il possible de rendre invisible ce point ?
en jouant sur les couleurs,
en lui donnant un "N° Point" vide ou "N° Point"="0"
ou alors en désactivant, dans ce cas précis, l'affichage des étiquettes.

Je sais que tout ça fais partie du côté esthétique et que pour l'instant tu as d'autres chats à fouetter, mais je le note pour pouvoir y penser plus tard.

@ bientôt
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
21 sept. 2012 à 12:18
Complément du post #97 point 2. Test avec 97 sur calcul_surface-M9.xls

Si je mets de nouveaux fichiers dans le dossier, la liste ne s'incrémente pas automatiquement (normal puisque je ne lance pas le code), mais si je relance le code (en "entrant" dans la cellule et en validant), tous les fichiers contenus dans le dossier viennent alors s'ajouter à la liste.
Du coup j'ai 2 fois les mêmes fichiers !
Donc, je crois qu'il vaut mieux, à chaque changement du contenu de la cellule G3, effectuer un "Nettoyer la liste des fichiers" ;-)

En tout cas, CA PRENDS VRAIMENT FORME :-)

@ bientôt
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
21 sept. 2012 à 12:48
Test avec 2010 sur calcul_surface-M9.xls

Ici, c'est un peu différent de la situation du post #96 :

Déjà, le graphique s'actualise au fur et à mesure de la saisie (sauf les étiquettes de données qui conservent les noms du précédent calcul).
Le bouton "Actualiser" fonctionne correctement, le graphe se met à une échelle mieux adaptée et surtout les étiquettes changent, mais il reste un petit problème d'affichage (au niveau de la boucle du calcul de la surface) :

https://www.cjoint.com/?BIvmGCThD68

Quant à :

Ce 552 n'est pas anodin, ce "N° Point" est le premier point du calcul du lot K,
ça ressemble au "plus grand" des "premiers" "N° Point" utilisés pour calculer les surfaces.
En effet 552 est le premier "n° point" utilisé dans le calcul du lot K (points 552 à 585) et il est en même temps le plus grand de la liste des premiers "N° Points " utilisé lors des autres calculs (Lot A commence à 500, lot F commence à 534, ...etc)


J'ai fais un test en demandant un nouveau calcul avec un

"N° Point" = 2000

alors là, après clic "Nouvelle Sélection", le graphique change et met le point 1000 au centre du graphe :

copie écran : https://www.cjoint.com/?BIvmPrlXnbs

Je ne vois pas d'où sort cette étiquette de point ????

Concernant l'import des fichiers, idem que pour 97. Mais je me souviens que tu m'avais dit que pour 2010 il serait possible de lancer une fenêtre "Parcourir" ;-)

@ bientôt
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
21 sept. 2012 à 13:20
Réponse post #99. Test avec 97 sur calcul_surface-M10.xls

Je ne sais pas qu'elle mauvaise manip je fais ?????
Je prends juste ton fichier, je le renomme en enlevant les cochoneries qui se trouvent en en-tête du fichier transmis via "Cjoint.com" et je lance avec 97.
la je vois ton dernier calcul (500 à 505 avec un résultat nickel).
je clic sur "Nouvelle Sélection" et je choisit 534 à 539 (donc j'utilise ton import),
le graphique se met à jour au fur et à mesure de la saisie (évidemment : sauf les étiquettes), je clic sur Actualiser et sa plante :

erreur : https://www.cjoint.com/?BIvnqVqyeGa
code : https://www.cjoint.com/?BIvnrtM3Kfo

Je ne vois pas se que je fais de mal.
J'enregistre et je te renvoie le fichier, mais j(ai peur que tu n'y vois pas grand chose ...

fichier : https://www.cjoint.com/?BIvnrU7Zkir

Par contre, l'idée pour contourner l'erreur de saisie est bonne, mais ça devient vite embêtant de choisir à chaque fois le "n° de point" dans la liste proposée, c'est beaucoup plus rapide de le saisir (surtout si les points se suivent et qu'on utilise l(incrémentation automatique)

@+
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
21 sept. 2012 à 13:41
Désolé, j'avais pas bien compris le contournement . Je retire .... :-)
En fait c'est effectivement beaucoup mieux, merci.
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
Modifié par Pastinfleur le 21/09/2012 à 14:02
serait-il possible de déplacer :

https://www.cjoint.com/?BIvn7HTh1dJ

ici :

https://www.cjoint.com/?BIvoal4Q2Z0

enfin, plus précisément, au dessus du bouton "Nouvelle Sélection" ?
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
21 sept. 2012 à 14:24
1. Je ne vois pas d'où sort cette étiquette de point ????
effectivement, çà m'avait complètement échappé
une version qui fait la MAJ au fur et à mesure des entrées (et qui rend le bouton MAJ obsolète, on va quand même le laisser au cas où)

2.Mais je me souviens que tu m'avais dit que pour 2010 il serait possible de lancer une fenêtre "Parcourir" ;-)
effectivement sous excel >2003, on a un objet OpenDialog qui permet de voir l'arborescence des dossiers et de choisir le fichier parmi la liste (filtrée)
en attendant ....

3. Si je mets de nouveaux fichiers dans le dossier, la liste ne s'incrémente pas automatiquement (normal puisque je ne lance pas le code), mais si je relance le code (en "entrant" dans la cellule et en validant), tous les fichiers contenus dans le dossier viennent alors s'ajouter à la liste.
Du coup j'ai 2 fois les mêmes fichiers !

c'est toi qui voit, quand tu as la liste du bon dossier, tu n'as pas a la mettre à jour
(on laisse comme ça pour le moment ... il n'y a que 3 ou 4 lignes de code à supprimer)

4. tu ne m'a pas envoyé le fichier après plantage sous 97

https://www.cjoint.com/?3Ivooi3ty7N
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
21 sept. 2012 à 14:36
Je t'ai renvoyé le fichier dans le post 99
0