Question possibilité dessin au moyen d'userform VBA
Bonjour,
Je suis débutant en VBA. J'aimerais développer un code VBA qui dessine chaque vue en plan d'une maison ou batiment et qui affiche le dessin sur une ou plusieurs feuilles excel.
Je demande pas un code mais je demande s'il est possible de réaliser des dessins formés de lignes uniquement sur une feuille où est présent à la fois le résultat (le dessin) et l'userform dans lequel à chaque étape du dessin on encode l'orientation de la ligne, sa longueur, et le type de ligne (certaines lignes représenteront des murs , d'autres des poutres , etc...). J'aimerais que sur une feuille , j'ai par exemple la forme de la toiture en vue en plan, ensuite sur la feuille suivante , l'étage sous toiture où l'on peut voir en pointillé les traces de la toitures etc....
Pour résumé, est il possible de dessiner étape par étape en voyant le résultats en direct sur la feuille excel au fur et à mesure qu'on encode chaque étape ?
Si je n'ai pas été assez clair veuillez me le faire savoir.
Bonjour,
Serais-tu fou ? Excel n’est pas du tout un logiciel adapté pour ça. Il existe bien d’autres logiciel gratuits ou non, qui te permettront de réaliser ces opérations de façon bien plus facile. Pourquoi veux-tu « t’embêter » à faire ça avec Excel ? Oui, c’est faisable (ton formulaire doit être en mode non modal pour rester affiché pendant que tu vois ce qui se passe dans ta feuille), mais quelle galère pour y arriver !
Bonjour,
Je rejoins l'avis de Valky, d'autant plus que si l'on s'aide des "outils de dessins" intégrés à Excel, on fait bien trop souvent face à des remises à l'échelle automatiques qui ruinent absolument tout dessin complexe.
En revanche, puisqu'il semble que la demande est en lien avec la construction et l'usage de plans, sachez qu'il est possible de coder en VBA pour automatiser AutoCAD. Vous pouvez meme diriger tout cela depuis (ou en parallèle) avec Excel.
Cependant cela va vous demander des bases solides, tant en VBA que sur AutoCAD. Mais c'est possible.
Bonjour à tous,
Un lien au hasard : 18 Logiciels Gratuits Pour Dessiner un Plan de Maison
Bonjour,
Je n'ai peut être pas donné assez d'information.
Je ne compte pas réaliser des plans au moyen d'excel. Je suis ingénieur structure. Les murs par exemples ne seront représenté que par des lignes. Pas besoin de dessiner l'épaisseur des murs ainsi que leurs textures. Il n'y aura donc que des lignes ou alors des formes très simples (flèches, rectangles) et diverses couleurs.
Le but est d'établir un classeur complet calculant mes descentes de charges sur les murs , les poutres, etc... mais pour bien identifier l'emplacement de mes murs et leurs accorder une nomenclature. J'aurais aimé avoir un SCHEMA (je viens de trouver le bon mot)
Je travail dans une entreprise dans la telecom et ils ont réussi à réaliser un dessin de pylone automatique. Dés qu'on appui sur le bouton , le pylone se dessine en reprenant les données présente dans une feuille. Ce pylone n'est représenté que par des lignes parce que c'est uniquement ce qu'on a besoin en tant qu'ingénieur.
Voici un exemple de ce que je veux en image : Les lignes noir, seraient par exemple les murs extérieur (façades) de l'étage concerné. Les lignes vertes l'étage supérieur (encodé dans une autre feuille par exemple). Les rond seraient par exemple des poteaux. Et les traits fin des poutres. Il manque aussi peut être des flèches pour indiquer le sens porteur de mes planché.
Dites moi si malgré ma clarification vous pensez que ça n'est toujours pas possible ? Merci d'avance.
Les logiciels de calcul de structure ne sont pas gratuit c'est pourquoi je voulais en réalisé un moi même pour les études simples.
Le fait de dessiner "en direct" n'est pas une nécessité. Si je peux obtenir le dessin en appuyant sur un bouton après avoir fini d'encoder mes données c'est aussi acceptable pour moi.
Bonjour,
Ingénieur Structure également
C'est "possible" techniquement parlant. Cependant, comme je le mentionnais :
Je suis sur à 90% que ce schéma est tracé à partir d'un graph Excel, sur lequel a été défini, pour chaque ligne, une fonction qui relie les points entre eux.
Cependant cela implique de connaitre l'ensemble des coordonnées des points de chaque angle de votre structure, ce qui peut devenir très fastidieux à entrer ainsi qu'à traiter pour des plans plus complexes.
Il faudra également faire attention aux références globales/locales…
Et je mentionnais les changements d'échelles :
Si vous avez un R+2 de 200*1200, par défaut XL va ajuster les échelles des axes du graph et vous donner l'impression que votre étage est carré alors qu'il ne l'est pas. Bon à la limite c'est juste un schéma mais cela peut créer de la confusion. De plus, si le R+1 fait disons 1200*1200, alors lors du changement d'étage, le graph risque de remettre à l'échelle l'ensemble, et vous déplacer vos lignes pointillées du R+2.
Pour corriger il faudra calculer + imposer des bornes min/max aux axes du graph, en prenant en compte l'ensemble des étages, pour avoir une représentation constante et une descente "visuelle" correcte des murs. Cela en lien avec le premier point car les bornes vont dépendre de votre systeme de coordonnées.
J'ai pour ma part créé, pour m'aider et mettre en pratique ce sujet, une feuille de calcul de changement de coordonnées (rotations du type "X devient Y"), avec un suivi visuel, pour calculer rapidement les composantes de forces suivant différents référentiels. Je n'ai pas utilisé de VBA, ce qui m'a probablement un peu compliqué la tache, mais gérer le graph a vraiment été fastidieux.
Ci-après deux screenshots pour illustrer mon propos. J'ai du gérer les projections 3D ce qui m'a également cassé la tete, mais d'un autre coté je n'avais que 3*2 = 6 axes 6 tracer (+ le cube), là où vous avez un nombre indéterminé de murs.
La question est donc avant tout de bien définir votre projet, notamment sur les entrées utilisateur et le traitement, et de voir si vous pouvez/voulez le réaliser. C'est un projet, je pense, assez lourd.
Pour finir j'évocais AutoCAD car je sais par expérience qu'au moins, sur cet outil, les tracés sont BEAUCOUP plus faciles que sur Excel.
Si vous avez AutoCAD, sachez qu'il est possible de par exemple :
- Vous tracez/récupérer la structure de votre projet sur AutoCAD
- Vous pouvez faire une macro qui vous permet ensuite, en cliquant sur une ligne, d'y affecter une charge
- Ce sera la partie complexe, mais vous pouvez ensuite descendre les charges. Il faudra réfléchir à comment lier vos murs entre les étages, mais à la limite la partie calculatoire peut se faire sur Excel, plutot que full code.
- Vous exportez les résultats sur Excel/CAD.
Cela vous permet d'avoir une interface très "cool", via un plan CAD précis. Personnellement je ferai comme cela, mais encore une fois, c'est beaucoup de travail je pense.
Je vous remercie pour vos réponses.
Je vais me renseigner plus profondément sur les informations dont vous m'avez fourni et je reviendrais vers vous si nécessaire.
Bonne journée
Bonjour à ceux qui suivent encore ce sujet,
Je comprend maintenant que c'est plus facile de combiner autocad avec excel pour réaliser mon projet.
Du coup pouvez vous confirmer s'il vous plait ?
1) J'importe un fichier pdf (ou dwg) je dessine mes traits représentant mes éléments porteurs
2) Je donne une identité à ces murs , poutres, poteaux (au moyen d'une couleur ? epaisseur de ligne ? )
3) Je crée un VBA qui calcul les descentes de charges de la maison dans autocad (?)
4) J'exporte les informations autocad (coordonnées de chaques points permettant de schématiser la maison + les charges) sur excel ?
5) Je crée un VBA qui schématise la maison et chaque éléments porteur. Et je dimensionne ces derniers dans excel.
Est ce que cela est plus faisable que ma première idée ?
Bien à vous
Bonjour,
Il y a plusieurs manières de procéder, mais celle que vous proposez est intéressante oui. D'autant plus si vous ne voulez pas vous lancer dans le "trou sans fond" que sont VBA ou LISP dans AutoCAD. J'imagine donc que vous partiriez sur une solution de ce type AutoCAD To Excel Export Coordinates (youtube.com). Commande _DATAEXTRACTION
2) En suivant ce principe, vous pourrez récupérer diverses infos comme la couleur, le calque, ou aussi l'épaisseur de ligne oui. Personnellement pour l'identification je suivrai un principe du type :
1 Calque / niveau ; 1 couleur / type de mur
Sachez que vous pouvez grouper les calques et/ou les nommer de manière intelligente, si vous voulez faire des sous-groupes.
L'intéret de 1 calque / niveau est que vous pouvez les afficher/masquer et donc garder vos alignements entre les étages.
Après c'est là ou je suis confus, si vous exportez ces données dans Excel, pas besoin de faire la descente de charge en VBA/dans AutoCAD. Autant utiliser le tableur. J'aurai inversé 3 et 4. Pour me retrouver dans Excel avec au final mes coordonnées de murs (deub/fin) et le type. Ensuite il reste à faire les calculs.
Et pour l'étape 5, si vous voulez un rendu visuel, j'aurai tendance à dire de reprendre le plan CAD directement. Et pour le dimensionnement des éléments porteurs, je les aurai identifié (via couleur/calque/épaisseur), et repris l'export précédent pour les dimensionner.
Cette approche, plus orienté Excel vous permet de minimiser le code VBA, et l'étude du VBA AutoCAD.
A l'inverse,
Si j'ai mal interprété, et que vous voulez accéder directement au objets du DWG via AutoCAD, c'est bien sur possible aussi. Simplement il va falloir beaucoup plus de programmation. Bien comprendre les boucles, les array, "l'organisation" des données dans le dessin, la précision des coordonnées des points, etc.
Voici par exemple comment est représenté l'objet ligne de AutoCAD en VBA Line Object (ActiveX) | Autodesk
Cependant cela vous permet de créer une belle interface, dans laquelle vous pouvez cliquer sur un mur/une longrine pour lui définir des propriétés custom (type userform excel), les afficher, et bien entendu, en arrière plan, calculer les charges. Mais bon c'est vraiment long à faire ce genre de choses, à voir si ca en vaut la peine.
Au plaisir de vous aider, bonne journée.
Lorsque vous dites "Mais bon c'est vraiment long à faire ce genre de choses, à voir si ca en vaut la peine." vous parlez de votre deuxième méthode ? (celle nécessitant plus de programmation)
Et puis en terme de temps, quand vous dites que c'est long, auriez vous une estimation ?
Oui je parlais de la 2e méthode. Pour l'estimation du temps cela dépend surtout de qui travaille dessus, et quelles sont ses compétences. Et aussi du résultat attendu.
Personnellement, j'estime que je passerai entre une 50aine et une 100aine d'heures à développer un outil comme ça. En connaissant bien le VBA tant sur Excel que AutoCAD.
Disons 1 grosse semaine sur le gros du projet, et le reste sur l'interface utilisateur.
Après comme je ne suis jamais à 100% sur un projet VBA (en général c'est plutot sur les creux), j'ai probablement tendance à un peu surestimer le temps nécessaire, mais bon en réalité il y a toujours des imprévus qui viennent le ralonger.
L'avantage d'Excel sur ce point c'est qu'on réduit quand meme pas mal la complexité de faire un design qui nous convient.
Avant toute chose, je pense qu'il est important de réfléchir à comment vous vouler calculer. Sachant que grosso-modo vous allez vous retrouver avec des listes de coordonnées [(X1,Y1), (X2,Y2)] d'extrémités de vos murs, couplés avec un type/chargement de mur. La question centrale c'est comment retranscrire cela dans le calcul automatique d'une descente de charge ? Il faudra aussi s'intéresser à la question des différents types de voiles (drapeau, poutre-voile etc)et les reports de charge associé.