Aller au contenu

SF.Designer

Membres
  • Compteur de contenus

    103
  • Inscription

  • Dernière visite

  • Jours gagnés

    1

SF.Designer a gagné pour la dernière fois le 21 septembre 2022

SF.Designer a eu le contenu le plus aimé !

À propos de SF.Designer

  • Date de naissance 05/08/1981

Profile Information

  • Gender
    Not Telling

Visiteurs récents du profil

3 452 visualisations du profil

SF.Designer's Achievements

Apprentice

Apprentice (3/14)

  • Dedicated Rare
  • Conversation Starter Rare
  • Reacting Well Rare
  • First Post Rare
  • Collaborator Rare

Recent Badges

4

Réputation sur la communauté

  1. Petite solution en fin de fonction : ; Fermer Fenetre Texte (defun CloseWindowText () (textscr) ; Basculer sur fenêtre de texte (vlax-invoke-method (vlax-get-or-create-object "WScript.Shell") "SendKeys" "%{F4}")) ; Fermer fenêtre de texte
  2. Salut, en un peu plus simple 😉 (defun load-lsp () (foreach file (vl-directory-files "C:/.../" "*.lsp" 1) (load file (strcat file " did not load")) )) (load-lsp)
  3. Merci Didier Finalement en testant une autre solution, j'ai trouvé mon graal hehe '*** Comptage des occurrences des valeurs uniques dans la colonne D Dim lastRow, i, cellValue Dim uniqueDict lastRow = objSheet.Cells(objSheet.Rows.Count, "D").End(-4162).Row ' -4162 = xlUp Set uniqueDict = CreateObject("Scripting.Dictionary") ' Parcourir la colonne D et compter les occurrences For i = 2 To lastRow cellValue = objSheet.Cells(i, 4).Value ' Colonne D est la 4ème colonne If Not uniqueDict.Exists(cellValue) Then uniqueDict.Add cellValue, 1 Else uniqueDict(cellValue) = uniqueDict(cellValue) + 1 End If Next ' Écriture des résultats dans les colonnes F et G Dim outputColumn outputColumn = 6 ' Débuter à la colonne F (6ème colonne) For Each dictKey In uniqueDict.Keys ' Écrire la valeur unique en ligne 1 objSheet.Cells(1, outputColumn).Value = dictKey ' Écrire le nombre d'occurrences en ligne 2 objSheet.Cells(2, outputColumn).Value = uniqueDict(dictKey) ' Ajouter une bordure autour des cellules contenant les valeurs With objSheet.Cells(1, outputColumn).Borders .LineStyle = xlContinuous .Weight = xlMedium End With With objSheet.Cells(1, outputColumn).Font .Bold = True .Name = "Verdana" .Size = 11 End With ' Ajouter une bordure fine autour des cellules contenant les résultats With objSheet.Cells(2, outputColumn).Borders .LineStyle = xlContinuous .Weight = xlThin End With With objSheet.Cells(2, outputColumn).Font .Name = "Verdana" .Size = 10 End With outputColumn = outputColumn + 1 ' Passer à la colonne suivante Next
  4. Pour le moment le script fait : - Copie des fichiers DAT dans le dossier de destination - Modification des DAT en excel, avec traitement "Trier, bordure etc..." - Réunir les fichiers en un seul Excel. Maintenant j'aimerais comptabiliser les éléments commun de la colonne D et inscrire automatique le résultat comme suis : En F2 le code 102 (cellule D2), en F3 le nombre d'occurrence de 102 trouvé. En G2 le code suivant le 102 dans le tableau, ici 210, en G3 le nombre d'occurrence de 210 trouvé. En H2 le code suivant..... H3 son nombre Se traitement se fait avant de réunir toutes les feuilles dans un classeur commun
  5. Bonjour, Non en fait c'est un VBS externe, une fois lancer je dois sélectionner un dossier avec fichier source DAT, puis un dossier de destination et ca mouline !
  6. Bonjour a tous, Pour info, c'est la première fois que je met le nez dans vbs/vba, soyez indulgent mais critique. Bon je n'arrive pas a mettre la dernière touche sur un script vbs, après moulte recherche et surtout après avoir testé plein de solutions différentes. Nous avons des fichiers créés par le Progiciel qui viens sur Autocad, qui sont des fichier .DAT, sous cette forme : J'arrive a les transformer en Excel, a les mettre en forme, trier, puis a les réunir. J'aimerais, avant de les réunir, procédé a une boucle qui me comptabilise les élément aillant le même code. J'arrive pour le moment a détecter la valeur et le nombre de la première occurrence, sélectionner la cellule suivante puis détecter son nombre. Je n'arrive pas a mettre en place une boucle sur la deuxième détection, afin que cela passe a la case suivante et ainsi de suite jusqu'à une cellule vide. Le bout de code qui me pose problème : '*** Comptage ' Nombre de cellules valeur D2, premiére occurence objCellsCodeStart = objSheet.range("D2").Value objSheet.range("F2") = objCellsCodeStart objCellsCodeStartCompteur = .WorksheetFunction.CountIf(.Range("D:D"), objCellsCodeStart) objSheet.range("F3") = objCellsCodeStartCompteur '*** boucle a faire avec cette partie de code objCellsCodeLoop = objSheet.range("D2").Offset(objSheet.range("F3").Value, 0) 'Ligne suivant la premiére occurence trouvé objSheet.range("F2").Offset(0, 1) = objCellsCodeLoop objCellsCodeLoopCompteur = .WorksheetFunction.CountIf(.Range("D:D"), objCellsCodeLoop) objSheet.range("G3") = objCellsCodeLoopCompteur '*** boucle a faire avec cette partie de code Le but étant d'inscrire : - F2 la première occurrence, F3 son nombre - G2 la deuxième occurrence, G3 son nombre - H2 ..., H3 ... - Etc........ La boucle doit s'arrêter quand il tombe sur la première cellule vide a la fin de la colonne D. Je vous joins aussi le script entier et 2 fichier DAT pour test. ExtractDAT.vbs CH1_A.dat CH2_A.dat CH3_A0.dat
  7. Si tu as beaucoup de routine a charger, tu peux mettre dans ton fichier de chargement (.mnl), (defun load-lsp () (foreach file (vl-directory-files "C:/XXX" "*.lsp" 1) (load file (strcat file " did not load")) )) (load-lsp) Ca te chargera toute les routines de ton dossier.
  8. Bon voici le version pour le moment "définitive"... Print.dclPrint.lsp Je suis ouvert a toutes critiques qui me permettrai de fluidifier, voir accelerer ce code !
  9. Bonjour Luna, (petite excuse, déplacement pro et j'ai zappé mon DD de dév) Alors voila le lisp et dcl (je sais que j'ai pas mal de taf de concaténation etc, et de mise en forme du dcl) Merkiiii PrintV2.lsp PrintV2.dcl
  10. J'en profite aussi pour vous demander comment ce fait il que sur cette fenêtre, Si je sélectionne NOIR, TEINTAGE et que je me rend compte qu'il ne me faut pas le NOIR, je le désélectionne. Le toggle NOIR me renvoi quand même la valeur 1 et non pas 0.
  11. Bonjour a tous, Petite demande afin de savoir si on peut écrire cela d'une autre façon (plus propre). La validation du OK de ma fenêtre de sélection (defun InitAllPrintOK () (cond((= PlotNB 1)(setq Plotstyle "NB")(PRT))) (cond((= PlotNBB 1)(setq Plotstyle "NBB")(PRT))) (cond((= PlotNBV 1)(setq Plotstyle "NBV")(PRT))) (cond((= PlotNBBV 1)(setq Plotstyle "NBBV")(PRT))) ; --- (cond((= PlotTT 1)(setq Plotstyle "TT")(PRT))) (cond((= PlotTTB 1)(setq Plotstyle "TTB")(PRT))) (cond((= PlotTTV 1)(setq Plotstyle "TTV")(PRT))) (cond((= PlotTTBV 1)(setq Plotstyle "TTBV")(PRT))) ; --- (cond((= PlotTTPRI 1)(setq Plotstyle "TTPRI")(PRT))) (cond((= PlotTTBPRI 1)(setq Plotstyle "TTBPRI")(PRT))) (cond((= PlotTTVPRI 1)(setq Plotstyle "TTVPRI")(PRT))) (cond((= PlotTTBVPRI 1)(setq Plotstyle "TTBVPRI")(PRT))) ; --- (cond((= PlotCO 1)(setq Plotstyle "CO")(PRT))) ) ; --------------------- (defun InitAllPrintCancel () (if (= userclick nil)(princ "\n--- Impression annulée ---\n")) (defun PRT () (vl-cmdf "._-PLOT" "_YES" "MODEL" PlotType PlotLimit "_MILLIMETERS" PlotOrientation "_NO" "_EXTENTS" Plotscale "_CENTER" "_YES" PlotStyle "_YES" "_WIREFRAME" "_NO" "_NO" "_YES")) ) Merci d'avance.
  12. Bonjour, Pour ouvrir : (defun OpenWindowText () (textpage) ; Ouvrir fenêtre de texte ) Pour fermer : (defun CloseWindowText () (textscr) ; Basculer sur fenêtre de texte (vlax-invoke-method (vlax-get-or-create-object "WScript.Shell") "SendKeys" "%{F4}"))
  13. Ce doit être faisable avec : - Bloc + Paramètre d'étirement + Attribut avec récupération de la longueur
  14. Si ca peut aider, voici une fenêtre qui m'a bien pris la tête a aligner. Il faut vraiment tous mettre dans des colonnes et des lignes, des colonnes dans les lignes, des lignes dans les colonnes (piouf), puis jouer sur les marges et alignements ! Print.dcl
  15. Pour compléter REBCAO Je joins en plus mon fichier .LIN qui vas avec le DWG posté plus haut. CREATION TYPE DE LIGNE ------------------------------------------------------------------------------------------------------------- EAU_CHAUDE_EC,Eau chaude EC ---- EC ---- EC ---- EC ---- A,12.7,-5.08,["EC",STANDARD,S=2.54,U=0.0,X=-2.54,Y=-1.27],-5.08 ------------------------------------------------------------------------------------------------------------- 12.7 = longueur de la partie visible du trait (cette longueur est multipliée par l’échelle globale x échelle de type de ligne de l’objet) -5.08 = longueur de l’espace vide car valeur négative. Problème quel chiffre utiliser ? Utilisez 2.54 par caractère ; soit 5.08 pour 2 ; 7.62 pour 3 ; 10.16 pour 4 … [la définition du texte entre crochets] "EC",= le texte visible dans le trait Standard = nom du style de texte , vérifiez la police appliquée ! utilisez ARIAL.ttf ou ROMANS.SHX Si aucun style n'est défini, AutoCAD LT utilise le style courant. S=2.54 = échelle appliquée au texte U=0 ; = Angle du texte ici 0 donc texte toujour horizontal R= indique la rotation relative dans les exemples ci-dessous R est absent par défaut angle = 0 Position XY du texte. X= -2.54 = position en X du départ du texte Y = -1.27 = position en Y -5.08 : créer un espace après le texte @SF-Linetype.lin
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité