Gestion d'abaques

Benjy

XLDnaute Occasionnel
Bonjour à tous !

Je découvre ce forum avec plaisir...

Je travail actuellement dans un bureau d'étude thermique et j'utilise enormément d'abaques afin de déterminer différents coefficients qui me servent au final à calculer les déperditions de batiments par exemple ou encore les besoins en chauffage d'une installation.

Et l'utilisation de ces abaques étant "fastidieuse" je cherche à gagner un temps précieux en gérant cela avec Excel.

Je m'explique :
Je dispose d'un abaque me fournissant une valeur d'un coefficient "K" pour chaque paroi. Ce coefficient dépend des matériaux utilisés.
Dans un premier temps je souhaite faire un menu déroulant avec les différents matériaux et ou il en résulte ce coefficient K pour chaque parois ( Kmur, Ktoiture, Kplancher ) Ce qui me donne au final 3 valeurs.

Dans un deuxieme temps il me faut rentrer le volume de mon installation et le nombre d'étage des locaux. Avec ces informations je détermine la catégorie de l'installation thermique. ( 5 catégories au totales)

Et finalement, et c'est la que sa se complique il me faut un dernier coefficient appelé G. Celui ci est obtenue en fonction de la catégorie et des valeurs des 3 coefficients K.

Et enfin, je calcul mes déperditions avec la formule Deper= GxVolumexdifférence de température.

Je sèche pas mal pour réaliser ce programme, mes connaissances étant très limités. Je vous joins ce que j'ai fait pour le moment mais je n'en suis pas satisfait car ce n'est pas optimisé. J'ai gerer les coefficients K avec des fonction SI,OU c'est fait n'importe comment, même si sa marche...

Et j'ai gerer le coefficient G avec l'autofiltre d'excel.
Bon c'est une solution qui peut être envisagé ! Mais j'ai quelques soucis avec cette méthode, tout d'abord j'aimerais pouvoir utilisé la valeur de G en sortie. Or comme la ligne varie en fonction des critères de recherches comment faire ?
De plus je définie une base de donnée avec le tableau de G et une base de donnée avec le tableau de la température et quand je relance mon fichiers excel les bases de données ne sont pas conservées.. Est-ce normal ??

Merci à tous ceux qui voudront bien m'aider.
Je suis ouvert à toutes suggestion pour modifier le fichier excel. Cette solution est j'imagine loin d'être la mieux adaptée.
 

Pièces jointes

  • programme test.xls
    47 KB · Affichages: 280
  • programme test.xls
    47 KB · Affichages: 292
  • programme test.xls
    47 KB · Affichages: 300

Staple1600

XLDnaute Barbatruc
Re : Gestion d'abaques

Bonsoir

Benjy
Apparemment Benjy, tu n'a pas plongé dans le bonheur comme je t'y invitais
hier à 21h27

Remarques , tu as bien fait car si tu ne disposes pas d'Excel (alors pas de VBA)

et donc pas possible de profiter des ressources dont regorgent le site (ou tu sembles ne pas avoir mis les pieds )
 

Benjy

XLDnaute Occasionnel
Re : Gestion d'abaques

Si si j'ai bien vu le premier lien et j'y est jeté un coup d'oeil. Mais il existe de nombreuses méthodes pour calculer les pertes thermiques et donc les besoins en consommation. Chaque méthode utilise un nombre précis de données qui fait référence à un certain type d'abaque.
Vu le nombre de méthode qui existe et le nombre de données que cela engendre, je préfère rester sur la certification AFAQ du bureau d'étude et utiliser les abaques dont je dispose.
Mais merci quand même pour le lien !

Sinon une solution à mon problème ? Comment mettre à jour le menu déroulant, ou plutôt changer le choix dans ce dernier à partir d'une maccro ?
 

Benjy

XLDnaute Occasionnel
Re : Gestion d'abaques

J'obtiens une erreur à l'exécution :

"Erreur d'execution BASIC
Sous-procédure ou procédure de fonction non définie"

Code:
sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$D$52"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "0"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$D$45"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "StringName"
args5(0).Value = "0"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args5())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$D$44"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "StringName"
args8(0).Value = "0"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args8())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args10(0) as new com.sun.star.beans.PropertyValue
args10(0).Name = "ToPoint"
args10(0).Value = "$D$36"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args10())

rem ----------------------------------------------------------------------
dim args11(0) as new com.sun.star.beans.PropertyValue
args11(0).Name = "StringName"
args11(0).Value = "0"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args11())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args13(0) as new com.sun.star.beans.PropertyValue
args13(0).Name = "ToPoint"
args13(0).Value = "$D$33"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args13())

rem ----------------------------------------------------------------------
dim args14(0) as new com.sun.star.beans.PropertyValue
args14(0).Name = "StringName"
args14(0).Value = "0"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args14())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args16(0) as new com.sun.star.beans.PropertyValue
args16(0).Name = "ToPoint"
args16(0).Value = "$D$28"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args16())

rem ----------------------------------------------------------------------
dim args17(0) as new com.sun.star.beans.PropertyValue
args17(0).Name = "StringName"
args17(0).Value = "0"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args17())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args19(0) as new com.sun.star.beans.PropertyValue
args19(0).Name = "ToPoint"
args19(0).Value = "$B$41"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args19())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dim args21(0) as new com.sun.star.beans.PropertyValue
args21(0).Name = "ToPoint"
args21(0).Value = "$B$36"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args21())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dim args23(0) as new com.sun.star.beans.PropertyValue
args23(0).Name = "ToPoint"
args23(0).Value = "$B$10"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args23())

rem ----------------------------------------------------------------------
dim args24(0) as new com.sun.star.beans.PropertyValue
args24(0).Name = "ToPoint"
args24(0).Value = "$A$4"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args24())

Range("B13").Value = "Votre choix"
Range("B15").Value = "Votre choix"
Range("B14").Value = "Votre choix"
Range("A19").Value = "Votre choix"
Range("B22").Value = "Votre choix"
Range("B23").Value = "Votre choix"
Range("B24").Value = "Votre choix"
Range("B32").Value = "Votre choix"
Range("B35").Value = "Votre choix"
Range("B42").Value = "Votre choix"
Range("B48").Value = "Votre choix"
Range("B51").Value = "Votre choix"

end sub


J'ai utilisé l'enregistreur pour le début d'ou le nombre de lignes important.
L'erreur est due à Open Office ou à une erreur de ma part ?
( a noté que la première partie fonctionne... Elle met 0 certaines cases et efface les données dans 2 autres.)
 

Dugenou

XLDnaute Barbatruc
Re : Gestion d'abaques

Benjy,

Désolé je ne comprends pas un mot du langage utilisé.
Soit tu vas sur un site spécialisé open office, soit tu recommence l'enregistrement mais en copiant une cellule contenant la valeur "votre choix" et en la collant dans toutes les cellules voulues .

Désolé ne pas pouvoir en faire plus
 

Benjy

XLDnaute Occasionnel
Re : Gestion d'abaques

D'accord pas de soucis.
J'ai déjà tester cette méthode de copier/coller. Malheuresement quand il colle, il supprime le menus déroulant contenu dans la case. Ce qui n'est pas le but de l'opération.

Merci quand même. Comme dit ce bouton de mise à zéro c'est du détail pour moi.. Pas un très grand interêt de le réaliser. Mais bon quitte à faire quelque chose autant le faire correctement jusqu'au bout.
 

Benjy

XLDnaute Occasionnel
Re : Gestion d'abaques

Ben j'ai finalement trouvé... J'ai un peu regardé le code de codage est finalement c'est pas très compliqué :

Code:
dim args31(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$B$13"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args32(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "Votre choix"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

Voilà le code pour changer la valeur du menu déroulant.
Par contre me demander pas ou est la logique la dedans... Parce que déclarer 2 arguments différents pour une seule cellule... Ou alors la moitié des lignes ne servent à rien :D.
 

Benjy

XLDnaute Occasionnel
Re : Gestion d'abaques

Décidemment...
Encore un problème... Quand je ferme le logiciel et réouvre mon fichier la maccro n'est plus là. Elle était pourtant enregistré.

J'aimerais pouvoir transmettre mon fichier sur d'autre PC et je n'ai pas envie de retaper la maccro sur chacun d'entre eux.. Comment puis-je faire pour que la maccro soit assigner à ce fichier et surtout qu'elle soit conservé après fermeture du logiciel...

Je l'ai enregistré sur le fichier et non dans les maccros oppen office ou dans " mes maccros " donc je ne vois pas pourquoi elle n'est pas conservée.
 

Dugenou

XLDnaute Barbatruc
Re : Gestion d'abaques

Benjy,

J'ai une autre solution radicale et sans macro à proposer.

Tu déclares le ficher en lecture seule : donc à chaque fois qu'il est ouvert, il faut changer le nom pour enregistrer le résultat (un genre de fichier "modèle" comme dans word)

Ce ne serait pas un pb de sécurité des macros qui ne les ouvrirait pas par hasard ?
 

Benjy

XLDnaute Occasionnel
Re : Gestion d'abaques

Pas bête du tout !
Mais sa obligerais à fermer puis réouvrir le fichier pour faire un nouveau dimmensionnement non ?
Je vais tester cette méthode et voir les points positif et négatif.

Au niveau de la sécurité je ne pense pas car normalement un message apparait pour dire que les macros n'ont pas été ouvert en raison du niveau de sécurité. La elle à purement et simplement disparue...

Même le module est supprimé. Je trouve sa louche quand même. Il faut bien enregistrer la macros DANS le fichier lui même non ?
 

Discussions similaires

Réponses
3
Affichages
230

Statistiques des forums

Discussions
312 497
Messages
2 088 992
Membres
104 000
dernier inscrit
dinelcia