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 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 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

Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
19 sept. 2012 à 21:16
1. Il dit : mini=-1 qui est bien la valeur de la cellule N8 de la feuille calcul
Par contre, je ne trouve pas "emini" et "emaxi", je dois chercher où ?


De plus, je viens de voir que je peux supprimer "le module 2" : je fais comment ? J'ai essayé clic droit sur "module 2" dans l'arborescence, mais je n'ai pas l'option "supprimer".

2. me paraît difficile à faire mais je me lance
0
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
20 sept. 2012 à 09:46
1. avec MON fichier (et mes valeurs) il doit dire mini = 0 (valeur dans N8)
2. "normalement" un clic-droit sur Module 2 doit te permettre de le supprimer (sors du mode exécution si tu es sur une erreur - Exécution-Réinitialiser)
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
19 sept. 2012 à 21:31
2. Désolé mais je ne comprends pas, je ne peut pas clic sur les deux axes à la fois, quand je clic sur l'axe X, il m'ouvre la fenêtre :

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

il semble me donner les valeurs mini et maxi des axes, mais je ne sais pas quoi faire.

Je fais la chose suivante : Je vais changer le mini et le maxi, cliquer sur une cellule, puis rechanger le mini et le maxi, puis je fais une copie du code ?
0
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
20 sept. 2012 à 09:31
ici ça semble OK
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
19 sept. 2012 à 21:34
0
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
20 sept. 2012 à 09:37
1. je t'ai demandé d'enregistrer ton fichier sous le nom calcul_surface-M6 (cjoint lui a ajouté devant sa référence d'où le nom barbare)

2. tu ne peux pas traiter les deux axes en même temps, c'est normal

3. pour affecter une valeur aux échelle ça semble OK

4. pour mettre l'échelle auto tu coche les cases devant les mini et maxi (histoire de vérifier que le code .MinimumScaleIsAuto = True est correct)
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 19/09/2012 à 21:56
1. J'ai recherché "emini" avec l'outil "edition => recherche" et je ne l'ai trouvé qu'une seule fois :

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

idem pour emaxi.

Donc je crois que je n'ai pas compris ton message :
"dans cette feuille,
verifies que les noms
- emini correspond à =Calcul!$N$8
- emaxi correspond à =Calcul!$N$7 "

C'est quoi "les noms" ?

Désolé mais je suis vraiment nul :-(
0
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
20 sept. 2012 à 09:47
1. ici, quand ça plante, et que tu clic sur mini, il dit bien 0?
2.excel 97 - Insertion/nom/definir ou ruban-Gestionnaire de noms excel 2010 te permet de voir les plages/cellules nommées
il doit y en avoir quelques unes
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 à 14:27
1. Oui, maintenant j'ai bien mini=0
2. Merci pour l'info, les valeurs sont correctes

- emini correspond à =Calcul!$N$8
- emaxi correspond à =Calcul!$N$7 "
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
19 sept. 2012 à 22:04
Désolé de t'embêter encore, mais on peut supprimer ça ?

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

et si oui, peux-tu me dire comment on fait :-)
0
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
Modifié par ccm81 le 20/09/2012 à 09:52
oui - voir plus haut)

RQ. j'ai répondu à chacun de tes messages en "commentaire"

j'ai rajouté les références des feuilles dans chaque instruction, je ne pense pas que ça va faire grand chose, mais ....
https://www.cjoint.com/?3IujZqiS1Cl
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 à 16:00
Salut,

je vais essayer de t'expliquer étape par étape ce qui se passe, ainsi tu pourras me dire ce qu'il faut que je vérifie. Je t'avoue que je suis largué depuis bien longtemps et à part de repartir sur un déroulé propre, je n'arriverai jamais à rattraper le train :-)

J'y vais :

1. J'ai renommé ton fichier "calcul_surface_m7"

2. A l'ouverture, je suis sur l'onglet "Listing NXY".
Je vois qu'un calcul est en cours (confirmé par une visualisation de l'onglet "Saisie", dans lequel je vois que le calcul précédent semble s'être parfaitement déroulé). Je clic donc direct sur "RAZ" pour nettoyer les données dans "Saisie", le graphe et les données importées précédemment dans l'onglet "Listing NXY", et là :
erreur : https://www.cjoint.com/?BIupDwrROCW
code : https://www.cjoint.com/?BIupD1h36ib

3. Je réinitialise et je retourne sur l'onglet "Saisie", je vois que l'onglet contient toujours les valeurs d'un précédent calcul (peut-être faudrait-il nettoyer l'onglet "Saisie" à la fermeture du fichier "calcul_surface_m7" ?)

4. Je clic sur "Nouvelle Sélection" et là :
erreur : https://www.cjoint.com/?BIupIVcPLie
code : https://www.cjoint.com/?BIupJorMabi

5. Je réinitialise et retourne sur l'onglet "Saisie", je vois alors que des données de l'onglet ont été nettoyées grâce à 4, par contre il semble que le graphique ne le soit pas :
image graphique : https://www.cjoint.com/?BIupL56y96a

6. Je vais dans l'onglet "Listing NXY" et je renseigne G3, la liste : "Liste des fichiers disponibles dans" se met correctement à jour.

7. Je fais un choix en G5 (liste fonctionne nickel) et je clic sur "Importer". L'import se passe très bien, mais si je sélectionne un nouveau fichier et que je relance l'import, je vois que le nouvel import se fait par dessus le premier (sans nettoyage préalable) je me retrouve donc avec la situation suivante :
image : https://www.cjoint.com/?BIupRJ7Ed6M
qui selon moi est un facteur de risque d'erreur.

8. Si je vais dans l'onglet "Saisie" et que je saisie manuellement un calcul, le résultat et correct (mais que se passerait-il si, à cause de 7, s'il y avait plusieurs fois le même "Nom" de points ?). Par contre le graphique est faux et l'échelle n'est pas adaptée.

9. Je clic sur "Actualiser le Graphique" et là :
erreur : https://www.cjoint.com/?BIupWfCIAhs
code : https://www.cjoint.com/?BIupWBV1a7Z

Voilà, j'espères que ça t'éclaire un peu mieux. Peut être qu'il sera plus facile pour moi de comprendre tes besoins en s'appuyant sur ce déroulé.


RQ : Ton idée de création d'une liste déroulante des dossiers "possibles" + une liste "cumulative" des fichiers contenus dans ces dossiers est super :-)


@ bientôt.
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 à 16:00
Désolé,

J'ai oublié de te dire que j'ai répondu au post 64.

@+
0
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
20 sept. 2012 à 16:10
question bête tout ça avec excel 97?
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 à 16:14
Oui :-)
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 à 16:19
Dans 2010, tout fonctionne nickel, sauf le point 7.
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 20/09/2012 à 16:34
Par contre,

Je me rends compte d'un truc : Ne faut-il pas trier "Listing NXY" par rapport à la colonne A (rapport aux fonctions "rechercheV" de l'onglet "Saisie" colonne "Est" et "Nord") ?

Les listings de points ne sont pas toujours (et même rarement) triés.

@+
0
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
Modifié par ccm81 le 20/09/2012 à 16:44
1. Dans 2010, tout fonctionne nickel
et c'est maintenant que tu me le dis?

2. sauf le point 7
mais c'est normal, il fallait faire un RAZ avant.
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


3. je te prépare un bout de code à vérifier sous excel97
0
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
20 sept. 2012 à 16:45
à tester sous excel 97
https://www.cjoint.com/?3IuqTcWnHjc

tu dis
0
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
20 sept. 2012 à 17:17
Je me rends compte d'un truc : Ne faut-il pas trier "Listing NXY" par rapport à la colonne A (rapport aux fonctions "rechercheV" de l'onglet "Saisie" colonne "Est" et "Nord") ?

dans la mesure où le 4° argument de recherchev est 0 (FAUX), que j'ai rajouté à tes formules, la 1° colonne n'a pas besoin d'être triée, mais si à l'usage, c'est plus commode pour toi, on peu faire ça au moment de l'importation
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 à 17:54
Réponse post 78 = Oups !!! et je sais pas pourquoi ????

Dans 2010, si je fais 2., 6. et 7. (donc je fais d'abords "RAZ") ça plante :

erreur : https://www.cjoint.com/?BIurOI00DLT
code: https://www.cjoint.com/?BIurO0l4zSf

Par contre, si je fais direct 6. et 7. (donc pas de "RAZ") ça marche pour le premier fichier importé. Si je choisit un nouveau fichier, ça plante : même erreur que ci-dessus.


RQ : J'ai fais la modif du post 78

Je suis assez surpris car je n'ai plus la superposition que j'avais il y a une heure, pourtant je n'ai rien changé de spécial non ??? C'est fou je fais exactement la même chose que tout à l'heure et je n'ai pas la même chose ????? J'ai pas inventé le post 76 !!!! Pourtant, je n'arrive pas à reproduire ce phénomème :-(
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 à 17:57
réponse au post 80.

Puisque tu me le propose si gentiment ;-) en effet je préfères que les données soit triées dès l'import. Mais ce n'est pas une priorité :-)
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 à 18:06
Réponse post 79. ... Bizarre

Je clic sur effacer A1:A20, ça marche nickel, je clic plusieurs fois dessus à la suite, tout beigne.

Par contre, quand je clic plusieurs fois sur effacer D1:D20
la première fois ça marche
la deuxième fois ça plante

erreur : https://www.cjoint.com/?BIusfg5nKfO
code : https://www.cjoint.com/?BIusfNIsxpi
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 à 18:08
RQ : j'ai fais le test "clearcontents" dans 2010 et j'ai la même chose
0
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 429
20 sept. 2012 à 18:44
1. Par contre, quand je clic plusieurs fois sur effacer D1:D20
la première fois ça marche
la deuxième fois ça plante

normal que ça plante à partir de la 2° fois, la plage étant définie de façon dynamique (voir les noms) pose un problème quand elle est vide
ce n'est pas une bonne nouvelle, c'était juste pour tester la méthode ClearContents avec excel 97. Elle marche bien dans tous les cas

2. et comme ça, qu'est ce que ça donne (sous 2010? sous 97?)
https://www.cjoint.com/?3IusRBACAxK
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 950
Modifié par Mytå le 20/09/2012 à 18:49
Salut le forum

Dans Noms Définis remplacer Plage avec
=DECALER(Feuil1!$D$1;0;0;NBVAL(Feuil1!$D:$D)+1;1)
Cela évite que Plage soit égale à#REF qui cause l'erreur.

Mytå

Quelle prétention de prétendre que l'informatique est récente
Adam et Eve avaient déjà un Apple ! [MsProject 2003(FR), Excel 2003-2007(FR)]
0