-
Compteur de contenus
1 013 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par sechanbask
-
Excel : fusion de bases de données et/ou mise à jour...
sechanbask a posté un sujet dans Routines VBA
Algorithme: Etape de récupération de données : Dans "Feuil5 déperditions", je fais une recherche dans les intitulés des colonnes (en ligne 1), je reconnais les colonnes qui m'intéressent, je garde en mémoire le numéro des colonnes à savoir A, C,D,E. Puis je lis les colonnes qui m'intéressent de la ligne 2 et je garde en mémoire le contenu des cellules A2,C2,D2,E2. Etape de fusion: Danse "Feuil1 liste radiateur", je fais une recherche dans les intitulés des colonnes (en ligne 1), je reconnais les colonnes qui m'intéressent, je garde en mémoire le numéro des colonnes à savoir A, B, D. Puis je lis la colonne qui m'intéresse (à savoir A) et si je trouve dans cette colonne une valeur de cellule identique à "Feuil5 déperditions-A2" imaginons que la cellule se trouve en ligne 211, je mets la valeur "Feuil5 déperditions-D2" dans B211, et "Feuil5 déperditions-C2" dans D211. et je boucle les 2 tapes jusqu'à ce que j'ai fini la base de données de la feuille "Feuil5 déperditions". /Algorithme Sub récapdep_listing() 'attention cette macro ne fonction que si les données sont en feuil1 (la première créée) et en feuil5 (la 5ième créée). Dim i As Single Dim j As Single Dim Nom_colonne As String Dim Colonne_th As Single Dim Colonne_thi As Single Dim Colonne_deperdition As Single Dim Colonne_nom_piece As Single Dim Colonne_nom_piece_th As Single Dim Colonne_puissance As Single Dim Nom_local_source As String Dim Deperdition_source As String Dim Temperature_source As String Dim Nom_local_destination As String Colonne_th = 0 Colonne_nom_piece_th = 0 Colonne_deperdition = 0 Colonne_thi = 0 Colonne_nom_piece = 0 Colonne_puissance = 0 'repérage dans la Feuil5 déperditions 'parmi les 50 colonnes 'il faudrait mettre un 'excel.screenupdating = false puis = true à la fin pour augmenter la vitesse du code For i = 1 To 50 Nom_colonne = Feuil5.Cells(1, i) 'on recherche la colonne "Nom du local" et on récupère le nom de la colonne en Colonne_nom_piece_th If Nom_colonne = "Nom du local" Then Colonne_nom_piece_th = i End If If Nom_colonne = "Température hiver (°C)" Then Colonne_th = i End If If Nom_colonne = "Déperditions totales (W)" Then Colonne_deperdition = i End If If Colonne_th <> 0 And Colonne_nom_piece_th <> 0 And Colonne_deperdition <> 0 Then Exit For End If Next i 'repérage Feuil1 liste radiateur 'recupère le nom de la colonne où se trouve l'attribut pour le radiateur For j = 1 To 150 Nom_colonne = Feuil1.Cells(1, j) If Nom_colonne = "Ti (°C)" Then Colonne_thi = j End If If Nom_colonne = "repère" Then Colonne_nom_piece = j End If If Nom_colonne = "Déperditions" Then Colonne_puissance = j End If If Colonne_thi <> 0 And Colonne_nom_piece <> 0 And Colonne_puissance <> 0 Then Exit For End If Next j For k = 2 To 1500 Step 1 'récupère les données à la source Nom_local_source = Feuil5.Cells(k, Colonne_nom_piece_th) Deperdition_source = Feuil5.Cells(k, Colonne_deperdition) Temperature_source = Feuil5.Cells(k, Colonne_th) For i = 2 To 1850 Step 1 'cherche le local dans les données de destination Nom_local_destination = Feuil1.Cells(i, Colonne_nom_piece) 'si les locaux portent le même nom... If Nom_local_source = Nom_local_destination Then 'pour le local X mettre dans colonne nom_thi la température correspondant au local Feuil1.Cells(i, Colonne_thi) = Temperature_source 'pour le local X mettre dans colonne nom_thi les déperditions correspondant au local Feuil1.Cells(i, Colonne_puissance) = Deperdition_source Else 'sinon il serait bien de faire resotir de la base de données source les pièces non trouvées dans la base de donnée de destination End If Next i Next k End Sub Je vous donne aussi le fichier pour que vous puissiez vite voir... http://cjoint.com/?jkiXexm4SB Vous pouvez constater que les lignes 30 et 51 ne sont pas effacées lors de la fusion. Lorsque j'ai crée ça, j'ai eu beaucoup de déchets car le nom des différents locaux n'avaient pas toujours de similitudes entre la source et la destination : des pièces avaient été regroupées pour former des pièces thermiques... mais bon j'ai gagné pas mal de temps car le listing était bien plus compliqué avec beaucoup de sous totaux, et de sauts de lignes. En fait, c'était loin de ressembler à une base de données. J'espère que ça pourra servir à quelqu'un.[Edité le 10/9/2007 par sechanbask] [Edité le 11/9/2007 par sechanbask] -
Post ce message dans le forum progarmmation LISP... je pense qu'ils pourront d'aider s'ils ne sont pas tous en vacances... [Edité le 16/8/2007 par sechanbask]
-
le *.cui est apparu sous 2006 donc il faut qu'il cherche .mnu, .mns, .mnc mais comme je n'ai que la 2006 sous la main (moi c'est pas sous le coude :-)) je ne sais pas où c'est ni comment ça marche désolé....
-
Oui, j'ai fait un IUT GTE mais sans aucune option... J'ai galéré pour finir l'iut, le niveau était assez élevé pour moi malgré mon bas S... Il faut dire que la physique est très poussée mais la complexité des mathématiques est juste là pour ceux qui souhaitent poursuivre leurs études et ce n’était pas du tout mon cas. J’aurais souhaité prendre une option informatique mais mon département ne me le permettait pas. J’ai toujours aimé l’informatique mais vu que le secteur était bouché quand j’ai dû choisi mon orientation, j’ai pris GTE. Tu enseignes quoi exactement et où ? Je vais écrire un mail à mes professeurs d’informatique pour leur indiquer les besoins des entreprises. Il serait de bon ton qu’ils utilisent des problèmes concrets pour les exercices d’informatiques. Je suis sûr qu’ils ne savent pas qu’on peut programmer AutoCAD alors que franchement si je n’avais pas fait ça au boulot, je serais encore en train de dimensionner des gaines à la main. P.S. Tu es sûr que tu n’as pas un problème dans tes citations car on voit une balise : « Citation extraite du message original: [c'est pas grand chose : 3 ou 4 boucles avec des testes et des copies de cellules. /quote] » Vérifie que toutes balises "[ quote ]" soient fermées par "[ /quote]" sans les espaces et les guillemets. [Edité le 15/8/2007 par sechanbask]
-
Dans mon métier, on apprends tous les jours et toujours sur le tas...(c'est que disent tous les gens de mon métier). Par contre le VB et VBA, je l'ai appris à l'iut, la formation informatique est un peu trop courte et pas assez axé sur les besoins d'entreprises... Mais il suffit d'adapter... Pour l'augmentation, je vais attendre un peu : je viens d'être augmenté en juin alors que ça ne faisait pas un an que j'avais commencé à travailler. Je n'ai que 23 ans et pas toutes mes dents. Bon feux d'artifice à tous. Ici le temps est maussade, alors ça va pas être terrible. P.S. J'habite poitiers et le temps est souvent pourri ici... P.S. lili2006, je pense que tu n'as pas fermé ta citation dans ta réponse 17 ou alors y'a un gros problème d'affichage.
-
Je possède un base de données n°1 avec X colonnes dont: « Nom de pièce » « Déperditions » « Températures intérieures à respecter » Je possède une autre base de données n°2 avec X colonnes dont: «Nom du local» « Température» « Puissance installée » La base de données n°1 est issue d’un bilan thermique. Elle a été mise à jour car les parois de du bâtiment ont changé. Les utilisateurs ont également changé les températures pour améliorer le confort… Le problème c’est que nous travaillions sur la base de données n°2 pour effectuer des choix de radiateurs (fonction que j’ai d’ailleurs semi-automatisée). Comme je suis fainéant, j’ai créé une macro pour fusionner les 2 bases de données : Je fais une recherche des colonnes qui m’intéressent, puis je sélectionne un nom de pièce dans la bd n°1 ainsi que les « Déperditions » et « Températures intérieures à respecter » correspondant. Puis je boucle dans la bd n°2 et si je trouve un « Nom du local » = « Nom de pièce », je colle les « Déperditions » dans la colonne « Puissance installée » et la « Températures intérieures à respecter » dans la colonne « Température». Et ensuite je change de nom de local. Et cela pour les 1500 pièces de l’hôpital de Rochefort sur mer. Autosatisfaction : J’ai mis 2 heures pour faire le code et j’estime qu’il faudrait 2 jours pour qu’une personne fasse ce que le PC fait pendant que je me prépare un thé menthe épicé… en gros 30 secondes pour faire 500 000 opérations… Je ne vous dis même pas comment mon chef de projet était content hier. P.S. Quand j'arrive à faire ça j'adore me faire mousser alors n'hésiter pas même si ce que j'ai fait ben au final c'est pas grand chose : 3 ou 4 boucles avec des testes et des copies de cellules. [Edité le 15/8/2007 par sechanbask]
-
pour les bugs d'affichage qui sont sur le fichiers que j'ai renvoyé, c'est juste un problème de format de cellule... les formats de cellules ont été forcés sous excel mais pas partout pareil... à mon avis, il faudrait enlevé ce formatage et le créer dans VBA... je vais voir ce que je peux faire car justement j'en ai besoin pour le code de mon boulot. (Mon code permet de déplacer une base de donnée vers une autre s'il y a des correspondances... Je le posterais peut-être quand j'aurai le temps de renseigner le code...) pour les bugs de l'autre, je verrais ce que je peux faire mais le code m'a l'air bien compliqué... mais qui dit compliqué dit riche... bon 15 août.
-
HELP_ajout d\'une constante à la valeur d\'un champ dynamique
sechanbask a répondu à un(e) sujet de filliou dans AutoCAD 2008
je pense que c'est possible mais la constante ne serait-elle pas mieux dans un autre attribut ? car lorsque vous souhaiterez changer de constante ça ne sera pas forcément simple... et je pense que pour chacun de vos dossiers, les altimétries changent non? -
Je dirais même plus pour les biliothèques, ils faut désellectionner la bibliothèque manquante et selectionner "autocad 200x type library" speedy, tu as une version LT?
-
pour l'instant, j'ai beaucoup de boulot alors je vais te dire comment faire pourvoir le code avec le fichier ici: http://cjoint.com/?ilpMbnMk30 Tu ouvres le fichier avec Excel (pour l'instant le code n'est pas tester avec openoffice). puis tu fais "ALT + F11". Ça devrait t'ouvrir VBA. Tu retournes sous Excel et tu clicks sur le bouton qui est sur la feuille excel puis tu suis la procédure... Si tu as un problème, tu clicks sur la fenêtre d'erreur pour la rendre active et du fais CTL+C. puis dans un nouveau mesage de cadXP tu fais CTL+V... normalement ça devrai me donner le type d'erreur etc... tu fais debugger sur le fenêtre d'erreur, et tu copies la ligne qui pose problème et ensuite, tu la colles dans cad XP... ainsi, tu pourras m'aider à developper le projet de speedy
-
HELP_ajout d\'une constante à la valeur d\'un champ dynamique
sechanbask a répondu à un(e) sujet de filliou dans AutoCAD 2008
Sur autocad 2006 : il suffit d'aller dans le format de du champs lors de sa création pour rajouter des préfixe, suffixe... ça me donne en tant que champs: %<\AcObjProp.16.2 Object(%<\_ObjId 1861488960>%,1).Length \f "%ps[,suffix ici]">% J'ai pas autocad 2008 mais je pense que ça doit être possible... j'espère t'avoir aidé -
Le lisp est trop puissant pour certaine action pour disparaitre surtout qu'autodesk a intégré objectDCL à autocad... ça serait pas très malin je trouve de faire un pas en avant puis 2 en arrière. Le python serait bienvenue pour autocad...
-
pourquoi tu n'as pas posté ça dans les routines VBA? par contre le problème c'est que le contenu de ton lien ne durera pas plus de 1 ou 2 mois. Il faudra poste le code directement sur le forum...
-
je ne possède plus le fichiers. Mais je suis en train d'élaborer le protocole d'utilisation...
-
Si tu ne me donne pas le type d'erreur et la ligne je ne saurais pas faire évoluer le code... merci par anticipation. Concernant les liens auxquels tu fais référence, le code doit absolument modifié car l'utilisateur ne peut pas choisir facilement le fichier, en plus, il ne ferme pas autocad à la fin (ni ne demande si l'utilisateur s'il souhaite le fermer) = donc pertes de ressources évidentes car autocad n'est pas une application très légère... [Edité le 12/8/2007 par sechanbask]
-
il faut avoir excel, et aller dans VBA d'Excel pour ajouter la référence autocad 2006 type library, ou l'équivalent de ton autocad...
-
Salut, j'ai fait pas mal de modifications car j'ai pas réussi à comprendre pourquoi ça ne marchait pas, du coup, ça a vraiment changer. J'ai mis la macro dans un module comme ça on peu y accéder depuis d'autres feuilles plus facilement. http://cjoint.com/?ilpMbnMk30 [Edité le 12/8/2007 par sechanbask]
-
j'ai remarqué avec debug.print ii que le nombre de calque était toujours de 0 même s'il y en a plus dans le dessin... J'ai pas trouvé comment faire pour changer ça...
-
Pour que j'essaie de rendre le code portable, il me faudrait le type d'erreur et la ligne sur laquelle ça se produit... bientot P.S. Je suis en train de regarder ton post Accueil du Forum > VBA et VB > Calques
-
J'ai un problème que vous pouvez lire ici : http://www.cadxp.com/sujetXForum-15751.htm merci par anticipation. P.S. Pourquoi personne ne répond, vous ne pouvez pas m'aider ou vous ne comprenez pas la question ?[Edité le 8/8/2007 par sechanbask] Solution : http://www.cadxp.com/sujetXForum-16353.htm [Edité le 6/10/2008 par sechanbask]
-
Bonjour, J'ai un problème que j'ai posté en premier ici : http://www.cadxp.com/sujetXForum-15751.htm [surligneur] Mais il semblerait que le problème viennent en fait du lancement LISP de la macro VBA. En effet, le texte d'information à destination de l'utilisateur se répète: si je lance la commande sans le lisp, j'ai dans la ligne de commande et la ligne dynamique (acad2006) ce que je désire à savoir : "Veuillez entrer la largeur de la réservation :". [/surligneur] Mais si je lance avec le lisp, j'ai dans la ligne de commande : "Veuillez entrer la largeur de la réservation :", et en ligne dynamique j'ai "Veuillez entrer la largeur de la réservation :Veuillez entrer la largeur de la réservation :" . Je vous livre donc le code de lancement LISP en espérant que vous puissiez m'aider: (defun c: DMN() (setvar "cmdecho" 0) (command "-vbarun" "PROJET.DVB!INSAUTO.DMN") (setvar "cmdecho" 1) (princ) ) et le code VBA même si pour certains c'est du charabia (comme l'est le lisp pour moi...) Sub DMN() Dim Largeur As String Largeur = ThisDrawing.Utility.GetString(True, "Veuillez entrer la largeur de la réservation :") Largeur = ThisDrawing.Utility.GetString(True, "(princ)") MsgBox "La largeur de la réservation est de : " & Largeur & " cm." & vbCr End Sub Un certain winfield m'a suggeré ça : [Edité le 9/9/2007 par sechanbask] [Edité le 13/9/2007 par sechanbask]
-
Bonsoir, j'ai crée ça Sub DM() Dim Largeur As String Largeur = ThisDrawing.Utility.GetString(True, "Veuillez entrer la largeur de la réservation :") MsgBox "La largeur de la réservation est de : " & Largeur & " cm." End Sub Que je lance avec : (defun c: RDM() (command "-vbarun" "PROJET.DVB!INSAUTO.DM") (princ) ) ça marche bien mais lorsque je relance la commande, il m'inscris 2 fois le texte pour l'interception de l'utilisateur... Si quelqu'un pouvais me dire comment empêcher ça... [Edité le 6/8/2007 par sechanbask]
-
j'ai explosé tous les blocs de mon Xref et ça marche bien... je vais quand même essayer les voies que vous m'avez indiquées car mon astuce est un peu barbare...
-
Merci d'avoir répondu. Malheureusement, j'ai déjà installé OE ARX Enabler et le SP1 autocad, et la récupération n'a rien changé. Pas d'erreur dans la base de données...
-
pour ma part, je vais à paris en première semaine de septembre... [Edité le 21/7/2007 par sechanbask]
