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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 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

Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
15 sept. 2012 à 18:55
Si j'importe un nouveau fichier, la sélection précédente reste active.
pourrait-on supprimer le bouton "effacer" et coupler son action avant la sélection du fichier?

Je ne sais plus comment te remercier, c'est vraiment tu travail d'artiste :-)

Par contre je ne sais pas si tu ma réponse au message précédent (lien 28), car là c'est sûr je ne saurais jamais transposer ça sur mon deuxième projet
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
15 sept. 2012 à 19:00
1. Si j'importe un nouveau fichier, la sélection précédente reste active.
pourrait-on supprimer le bouton "effacer" et coupler son action avant la sélection du fichier?

on n'en est pas là, la première chose à faire est de régler le problème de l'importation
2. donc tu réponds à mon post #36
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
15 sept. 2012 à 19:15
1. désolé, je viens de voir ton post #28, d'où les inconvénients des commentaires !!! on continue uniquement avec répondre
2. pour ce qui est des noms du même type , pas de problème, on affiche comme actuellement les ".txt"
3. la boite de dialogue (OpenDialog) n'est apparemment pas reconnue par excel 97
on va quand même vérifier quelque chose
Quand tu est dans l'éditeur vba
Outils/References est ce que les references suivantes (aux numéros de version près) sont cochées
Visual basic for applications
Microsoft excel 10.0 Object library
OLE automation
Microsoft forms 2.2 object library
microsoft office 10.0 object library

sinon tu essaies de les cocher (si elles y sont)

tu dis
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
15 sept. 2012 à 19:17
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
15 sept. 2012 à 19:21
A ton dernier message je préféres répondre pas une copie d'écran car là je patauge GRAVE

https://www.cjoint.com/?BIptu6HQ8nL
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
15 sept. 2012 à 19:32
Désolé, mais je dois te quitter

@ demain j'espère ;-)
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
15 sept. 2012 à 20:50
1. pour les librairies c'est OK, et du coup pas d'espoir de ce côté là

2. donc la boite de dialogue OpenDialog (avec l'arborescence des dossiers) n'est pas disponible avec excel 97

3. il faudra donc indiquer quelque part le dossier où se trouveront tes fichiers.
Le nom du dossier devra donc figurer quelque part
- soit dans une cellule comme dans l'exemple (solution souple)
- soit en "dur" dans le code (une constante du genre dossier = C:\Donnees) mais il faut intervenir sur le code en cas de changement de dossier (déconseillé)

4. l'erreur de type (post #35) me semble venir du fait que les valeurs importées ne sont (peut être) pas des nombres (dans ton fichier il y a un point au lieu d'une virgule) à moins que tu n'aies changé ça dans tes options
pour vérifier tu fais une bête addition de deux valeurs (colonne B)
tu dis ce qu'il en est

5. Pour les séparateurs espace ou ; ou , ou - il faudra adopter une solution du genre de celle du dossier
une idée ... à moins que tout caractère non numérique soit vu comme un séparateur

Une fois tout ça réglé/précisé, on reviendra sur ta config
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
16 sept. 2012 à 16:27
Salut,

Désolé mais j'ai également un soucis de voiture, donc en ce moment je jongle pas mal sur les forums pour essayer de régler un pb de vitre électrique, bref ....

Pour le 3) ça risque d'être très ennuyeux, mais bon pour autant, la version souple me convient très bien :-)

Pour le 4) le problème vient peut être du "." et non de la "," le soucis est que j'utilise des logiciels de DAO avec des outils développés par la boîte, ces outils ne marchent que si les paramètres régionaux sont réglés sur "séparateur décimal = ." :-(
Donc les fichiers que je reçois, sont par convention avec ce type de séparateur, ainsi je ne suis pas obligé de changer les paramètres à chaque fois que j'utilise l'un ou l'autre des logiciels.

Pour le 5), comme je te le disais dans un précédent post, j'ai à 95% du séparateur "espace", donc inutile de s'ennuyer avec ça (quand j'aurai des séparateurs différents je ferais simplement la modif directement sur le fichier .txt avant l'import)

Je suis ennuyé, mais si je ne règle pas mon pb de voiture avant demain, je risque d'être ennuyé.... Je te laisse, encore merci pour ton aide . Si j'ai fini, je reviens sur le forum ce soir, sinon à lundi

IMPORTANT : un voisin m'a dit qu'il pouvait se procurer office 2010 (il l'a pris à son boulot et l'a installé chez lui). Il m'a dit qu'il pourrait s'arranger ... :-)
Ma question est simple : est-ce que excel 97 et 2010 peuvent cohabiter sans soucis ? Si NON, Est-ce-que mes fichiers avec macros vont correctement fonctionner sous 2010 ?
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 16/09/2012 à 19:09
j'ai intégré l'importation dans ton modèle

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

je n'ai rien tenté sur le séparateur décimal
tu dis comment ça se passe

excel 97 et 2010 peuvent en principe co-habiter, ils ne sont pas logés dans le même dossier
pour ce qui est de la compatibilité, il ne devrait pas y avoir de problème avec les macros 97 utilisées avec 2010 (c'est, en principe, le contraire qui pose problème)

si ça doit tourner uniquement sur 2010, on pourra revenir à la boite de dialogue pour l'importation, ce qui règlerait le point 3

bonne suite
0
Pastinfleur Messages postés 132 Date d'inscription jeudi 9 février 2012 Statut Membre Dernière intervention 11 mars 2015
17 sept. 2012 à 19:18
Salut,

Bonnes nouvelles, suis passé sous 2010 :-)
Et dire qu'il suffisait de demander ....
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 à 14:33
Salut,

Désolé, je pensais avoir répondu à ton dernier message, mais apparemment j'ai oublier de valider mon post :-(

Quelques problèmes subsistent :

1) le bouton "RAZ" fonctionne, mais il faudrait vider le contenu des cellules "N° Points" dans l'onglet "Saisie"

2) le bouton "Importer" fonctionne parfaitement si au préalable je vide manuellement le contenu des cellules "N° Points" dans l'onglet "Saisie", sinon j'ai une erreur cf ci-dessous :

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

et Excel plante :

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


3) erreurs quand je clic sur le bouton "Actualiser le Graphique"

https://www.cjoint.com/?BItotQRqfpC
https://www.cjoint.com/?BItoujH2CcZ



REM : Si j'ouvre ton fichier dans 2010, tout fonctionne correctement sauf l'Actualisation du graphique .
La macro marche pour des polyèdres "simples" (6 sommets), mais le résultat n'est pas correct pour des polyèdres "complexes" .
Cf exemple ci dessous concernant un polyèdre à 34 sommets

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

Merci pour tout tes efforts

@ bientôt
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 à 14:52
Voici de nouvelles données pour un exemple plus complexe Cf lot K dont le résultat à trouver est 38 746.33 m² (à quelques cm² près dû aux arrondis) :


les données : https://www.cjoint.com/?BItoOADbAuY

les surfaces à vérifier : https://www.cjoint.com/?BItoPqzsqDT

une copie du graphe à obtenir : https://www.cjoint.com/?BItoTLIGqp3

quand je fais les calculs des lots A , B ... ça marche nickel :-)
quand je lance le lot K, le graphe ne s'actualise pas correctement :-(
Cf post précédent

Evidemment, le graphique ne comprend ni les "Noms" des points, ni les coordonnées correctes sur les axes (pour les axes je crois que j'y arriverai tout seul, mais pour les noms des points dans les étiquettes ça me paraît plus hard)

@+
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 19/09/2012 à 17:26
réponse à ton post #49
1. nettoyage de la feuille saisie par RAZ de la feuille Listing
2. actualisation du graphique
des plages de la feuille Calcul ont été nommées !
https://www.cjoint.com/?3Itrz7simJ1

qu'est ce que ça donne?
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 19/09/2012 à 17:29
désolé, une sombre maj dans la feuille Calcul qui avait échappé
ATTENTION le lien a été modifié
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 à 18:40
Salut,

J'ai fais l'essai avec ton nouveau fichier (avec 97), mais j'ai toujours le même problème quand je clic sur "RAZ"

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

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

Si je clic direct sur importer (après avoir correctement renseigné la cellule G3, Excel plante et je vois qu'il y a "FAUX" écrit dans la cellule G5

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

Par contre, ton idée de la possibilité de créer une liste déroulante des dossiers possibles est Top.
En effet, j'ai un dossier dédié dans lequel je mets les dossiers qui me sont transmis, donc ton idée me permettrai de ne pas avoir à saisir manuellement les données relative à l'emplacement des fichiers :-)

Mon arborescence dans D est du style :

dossier : "Documents à Vérifier"
=> dossier "20120918" (date du jour)
=> dossiers de données "CCC DA 1548","CCC DA 26", ...etc.

où CCC est un n° correspondant à la commune (3 chiffres = n° INSEE communal)
DA = partie fixe
1548, 26, ...etc = Numéro du document (change tout le temps)
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 à 18:56
Si j'ouvre "3Itrz7simJ1_calcul_surface_m6.xls" dans 2010,
quand clic sur "Importer" (après avoir renseigné G3 et sélectionné dans la liste G5), l'import se passe correctement, mais il subsiste dans la liste les points du dernier import :-(
quand clic sur "RAZ" j'ai une erreur :

erreur : https://www.cjoint.com/?BIts2xcGevO
code : https://www.cjoint.com/?BIts3aiaULf
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
19 sept. 2012 à 18:58
Q1. c'est bien sur mon fichier calcul_surface_M6.xls que tu testes (post#51 modifié)
Q2. quand tu fais Nouvelle sélection (feuille saisie) est ce que ça fonctionne?
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 à 19:12
Oui, j'ai fait les tests sur calcul_surface_M6.xls

Non, quand je clic sur Nouvelle Sélection, ça ne marche pas :

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

Code :
Public Sub btNouvelle_Click()
' nettoyage colonne k
Sheets(nomFS).Range(tk).ClearContents
' echelles auto pour les axes du graphique
With Sheets(nomFS).ChartObjects(1).Chart.Axes(xlCategory)
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
End With
With Sheets(nomFS).ChartObjects(1).Chart.Axes(xlValue)
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
End With
End Sub
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 à 19:22
Petite question :

J'utilise "FastStone Capture" pour faire des copies d'écran, mais quand je suis sur la fenêtre VBA, parfois (c'est ça qui est bizarre !!!) quand je clic pour faire une capture d'écran, mon fond de plan change : je suis basculé sur la feuille Excel (c''est à cause de ça que je t'ai envoyé dans mon dernier post un copier/coller direct du code), donc impossible de te transmettre une visualisation d'écran .

Tu sais si je dois faire une opération particulière , dans "excel", dans "FastStone Capture"?
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 à 19:51
C'est bon, je crois que j'ai compris, il faut avant d'aller dans VBA cliquer sur une cellule de la feuille, puis réouvrir VBA, d'ou :

https://www.cjoint.com/?BIttYV5jqaY
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 à 19:56
Remarque, quand j'ouvre calcul_surface_M6.xls et que je clic direct sur "Actualiser le Graphique", j'ai également une erreur :

message : https://www.cjoint.com/?BItt30oAqKl
code : https://www.cjoint.com/?BItt4yiBKWw
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 19/09/2012 à 20:55
j'ai du mal à comprendre ce qui se passe

d'abord,
tu enregistres mon fichier sous le nom calcul_surface-M6 quelque part
tu ouvres ce nouveau fichier

1. l'erreur sur .minimumscale = mini
tu fais debogage
tu cliques sur mini (te permet de lire la valeur actuelle de mini)
qu'est ce qu'il dit?
il doit y avoir la valeur de la feuille Calcul (N8)
dans cette feuille,
verifies que les noms
- emini correspond à =Calcul!$N$8
- emaxi correspond à =Calcul!$N$7

2. l'erreur sur .MinimumScaleIsAuto = True
en utilisant l'éditeur de macro, dans la feuille Saisie tu crées une nouvelle macro
et tu mets l'échelle des axes du graphique à auto
tu cliques sur une cellule puis de nouveau tu modifies les échelles du graphique, tu mets n'importe quoi
arreter l'enregistrment
tu regardes si le code est compatible avec le mien

tu dis
0