Aller au contenu

Recherche Routine Lisp ATTIN / ATTOUT


Big666

Messages recommandés

Bonjour,

 

Peut-être comme vous, je suis en confinement.

 

Donc bien sûr je ne travail pas de mon poste habituel ou il y a tout ce qu'il faut pour bien faire.

 

Et je n'ai pas les deux Lisps que me permettra d'exporter et d'importer vers Excel

Donc s'il y a quelqu'un qui a les Lisp ATTIN / ATTOUT

 

merci

 

 

Nous vivons tous dans le ventre d'un chien géant

Tout le monde le sait mais personne ne dit rien du tout

 

ultra Vomit

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Il me semble que ces commandes sont disponibles grâce aux ExpressTool :3

 

Lors de l'installation d'AutoCAD (du moins sur les versions PRO), il est possible de les installer (la case est décochée par défaut) lors de l'installation d'AutoCAD et de ses Add-on...

 

Je te conseille donc, si tu as le temps, de ré-installer ton AutoCAD (en sauvegardant tes fichiers de personnalisation bien sûr) car je n'ai pas souvenir que l'on puisse les installer après coup... (un défaut à mes yeux mais bon...)

Vérifie peut-être avant que tu y as accès avant de désinstaller/réinstaller AutoCAD :3

 

Bisous,

Luna

Lien vers le commentaire
Partager sur d’autres sites

Merci pour la réponseoui je sais mais le truc est là je veux éviter de réinstaller.il y a des Lisp qui font la même chose mais c'est deux lisp me vont bien

 

 

 

 

 

Nous vivons tous dans le ventre d'un chien géant

Tout le monde le sait mais personne ne dit rien du tout

 

ultra Vomit

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

Et voici la version AMELIOREE (par Brice STUDER) qui travaille MEME avec les Blocs Dynamiques !

 

Routine puisee dans mon stock de 3000 routines ...

 

LA SANTE (Stay Safe), Bye, lecrabe "triste"

Automne 2020, la retraite

 

 

;;;
;;;    ATTOUT.LSP
;;;    Created 4/24/98 by Randy Kintzley
;;;    Copyright © 1999 by Autodesk, Inc.
;;;
;;;    Your use of this software is governed by the terms and conditions of the
;;;    License Agreement you accepted prior to installation of this software.
;;;    Please note that pursuant to the License Agreement for this software,
;;;    "[c]opying of this computer program or its documentation except as
;;;    permitted by this License is copyright infringement under the laws of
;;;    your country.  If you copy this computer program without permission of
;;;    Autodesk, you are violating the law."
;;;
;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
;;;    UNINTERRUPTED OR ERROR FREE.
;;;
;;;    Use, duplication, or disclosure by the U.S. Government is subject to
;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
;;;    (Rights in Technical Data and Computer Software), as applicable.
;;;
;;;  ----------------------------------------------------------------

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;; 
;;; 01/2012 Ajout de la gestion des calques, par Brice Studer 
;;; 03/2012 Ajout de la gestion des noms et paramètres de blocs dynamiques (en lecture/écriture), par Brice Studer
;;;
;;; Je viens de mettre à jour le lisp : on peut maintenant modifier les paramètres dynamiques dans le fichier exporté, 
;;; les blocs dynamiques seront mis à jour avec ATTIN (+ nettoyage et correction du code) 
;;; 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;; Attention: les routines Express/Bonus doivent etre installees ! 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;;
;;; Routine ATTOUT / ATTIN d'Autodesk corrigee/amelioree par Bryce - Version 1.10
;;; 
;;; http://cadxp.com/index.php?/topic/34622-attout-et-bloc-dynamiques/page__pid__191049#entry191049
;;; 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 
;; ATTOUT -
;; Extracts attribute data from selected block inserts to a tab delimited file 
;;

(defun c:attout ( / ss fna )

(vl-load-com) ; ajout BS

(acet-error-init '(nil 0))

(cond
((not (setq fna (ACET-FILE-WRITEDIALOG "Enter output filename"
                             (strcat (getvar "dwgprefix")
                                     (acet-filename-path-remove (acet-filename-ext-remove (getvar "dwgname")))
                                     ".txt"
                             );strcat
                             "txt"
                             "Acet:Att"
                             1665
                )
      );setq
 );not
 (princ "\nNo output file selected.")
)
((not (setq ss (ssget '((0 . "INSERT") (66 . 1))))
 );not
 (princ "\nNo valid objects selected.")
)
(T
 (bns_attout fna ss)
)
);cond close

(acet-error-restore)
);defun c:attout

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;function version of ATTOUT takes a filename and a selection set.
(defun bns_attout ( fna ss / lst )

(if (and fna
        ss
        (setq lst (bns_attout_get_info ss))
   );and
   (bns_attout_output fna lst)
);if
(princ)
);defun bns_attout

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Takes a filename and a list of string data and writes it out.
(defun bns_attout_output ( fna lst / n a fh)

(if (setq fh (open fna "w"))
   (progn

    (acet-ui-progress-init "Writing output file" (length lst))
    (setq n 0)
    (repeat (length lst)
     (write-line (nth n lst) fh)
     (acet-ui-progress-safe n)
     (setq n (+ n 1));setq
    );repeat
    (close fh)
    (acet-ui-progress-done)

    (if (setq a (findfile fna))
        (princ (strcat "\nOutput file: \"" a "\" created."))
        (acet-alert (strcat "\nOutput FAILED for file: \"" fna "\"."))
    );if
   );progn then write the file
   (progn
    (if fna
        (acet-alert (strcat "*Error* could not open file \""
                           fna
                           "\" for write. The file may be currently in use."
                   )
        );acet-alert then
        (acet-alert "*Error* invalid filename.")
    );if
   );progn else print the error.
);if

);defun bns_attout_ouput

;{ ajout BS
(defun GetDynProps ( bloc / proplist )
 (mapcar
   '(lambda ( prop / propvalue)
     (if (= :vlax-true (vla-get-show prop))
       (progn
         (if (numberp (setq propvalue (vlax-get prop 'Value)))
           (if (= acAngular (vla-get-UnitsType prop))
             (setq propvalue (angtos propvalue (getvar "AUNITS") 16))
             (setq propvalue (rtos propvalue 2 16))
           )
         )
         (setq proplist (cons (list (strcat "{DYNPARAM} " (vla-get-propertyname prop)) propvalue) proplist))
       )
     )
   )
   (vlax-invoke bloc 'GetDynamicBlockProperties)
 )
 proplist
)
;}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;bns_attout_get_info - retrieves the data from the block inserts in
;the selection set provided.
;
(defun bns_attout_get_info ( ss / delim n j a lst lst2 lst3 lst4 na e1 ob blk hnd lyr str) ; modif BS, ajout variable lyr

(setq delim "\t"); the delimiter for the output file.

(acet-ui-progress-init "Searching for all attribute data" (sslength ss))
(setq n 0)
(repeat (sslength ss)
 (setq   na (ssname ss n)
         e1 (entget na)
         ob (vlax-ename->vla-object na) ; ajout BS
        lst (acet-insert-attrib-get (list na 1))
 );setq
 (if (= :vlax-true (vla-get-isdynamicblock ob)) ; {ajout BS
   (setq lst (append lst (getdynprops ob)))
 )
 (if (vlax-property-available-p ob 'effectivename)
   (setq blk (vla-get-effectivename ob))
   (setq blk (vla-get-name ob))
 );}
 (setq hnd (cdr (assoc 5 e1))
       lyr (cdr (assoc 8 e1)) ; ajout BS
       lst3 (append lst3 (list (list hnd blk lyr lst))) ; modif BS
 );setq

 (setq j 0)
 (repeat (length lst)
   (setq a (car (nth j lst)));setq
   (if (not (member a lst2))
     (setq lst2 (append lst2 (list a)));setq
   );if
   (setq j (+ j 1));setq
 );repeat
 (acet-ui-progress-safe n)
 (setq n (+ n 1));setq
);repeat
(acet-ui-progress-done)

;lst2 is now a list w/unique attrib tags
;i.e. ("tag" "tag2" "tag3")
;lst3 is a list of the form ((handle blockname layer ((tag value) (tag value)...) ; modif BS
;                            (handle blockname layer ((tag value) (tag value)...) ; modif BS
;                            ...
;
;                           )

(acet-ui-progress-init "Formatting attribute data for output" (length lst3))

(setq str (strcat "HANDLE" delim "BLOCKNAME" delim "LAYER")) ; modif BS
(setq n 0)
(repeat (length lst2)                             ;;;;build the header for spread sheet.
 (setq str (strcat str delim (nth n lst2)));setq
 (setq n (+ n 1))
);repeat
(setq lst4 (list str))

(setq n 0)
(repeat (length lst3)
 (setq  lst (nth n lst3)
        str (strcat "'"
                    (car lst)  ;the handle
                    delim
                    (cadr lst) ;the blockname
                    delim ; ajout BS
                    (caddr lst) ;the layer, ajout BS
            );strcat
        lst (cadddr lst) ; modif BS
 );setq

 (acet-ui-progress-safe n)

 (setq j 0)
 (repeat (length lst2)
  (setq a (nth j lst2)
        a (cadr (assoc a lst))
  );setq
  (if (not a)
      (setq a "<>")
  );if

  (setq str (strcat str delim a));setq
  (setq j (+ j 1));setq
 );repeat

 (setq lst4 (append lst4 (list str)))

 (setq n (+ n 1));setq
);repeat
(acet-ui-progress-done)

lst4
);defun bns_attout_get_info


;; 
;; ATTIN -
;; Imports attribute data from selected file. The file must be of
;; the same format as created with ATTOUT.
;; 

(defun c:attin ( / fna lklay )

(acet-error-init (list
                (list "cmdecho" 0)
                0
                '(progn
                  (if lklay
                      (progn
                       (acet-sysvar-set '("cmdecho" 0))
                       (command "_.layer" "_lock" lklay "")
                       (acet-sysvar-restore)
                      )
                  );if need to re-lock
                  (princ (strcat "\n" (itoa #bns_attin_modified) " Block inserts modified."))
                 );progn
               )
)

(acet-autoload '("yes_no.lsp" "(bns_get_yes_no a B)"))

(setq #bns_attin_modified 0)
(cond
((not (setq fna (acet-ui-getfile "Enter input filename"
                              (strcat (getvar "dwgprefix")
                                      (acet-filename-path-remove (acet-filename-ext-remove (getvar "dwgname")))
                                      ".txt"
                              );strcat
                              "txt"
                              "Acet:Att" 
                              1664
                )
      )
 )
 (princ "\nNo input file selected.")
);cond #1
((setq fna (findfile fna))
 (setq lklay (acet-layer-unlock-all))
 (if (equal 4 (logand 4 (getvar "cmdactive")))
     (bns_attin fna nil);a script is running so no interactive placement
     (bns_attin fna T);Allow interactive placement
 );if
 (if lklay
     (command "_.layer" "_lock" lklay "")
 );if
 (princ (strcat "\n" (itoa #bns_attin_modified) " Block inserts modified."))
);cond #2
);cond close

(acet-error-restore)
);defun c:attin


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;bns_attin takes a file name and a flag (interact) that specifies
;if the user should be prompted to select block inserts when unmatched
;data is found.
;
(defun bns_attin ( fna interact / fh lst lst2 lst3 lst4 blkn dlst unit newval lst5 n j na e1 a delim ans )

(vl-load-com) ; ajout BS

(setq delim "\t")
(if (setq fh (open fna "r"))
   (progn

    (princ "\nReading the input file...")
    (while (setq a (read-line fh))
     (if (not lst)        ;change first record to upper case
         (setq a (xstrcase a))
     );if
     (setq lst (cons (acet-str-to-list delim a) lst));setq
    );while
    (setq fh (close fh))
    (princ " Done.")

    (setq  lst (reverse lst)
          lst2 (cdr lst) ;the data
           lst (car lst) ;the column headers
    );setq

    (acet-ui-progress-init "Importing data" (length lst2))
    (setq n 0)
    (repeat (length lst2)
    (setq lst3 (nth n lst2)
          lst4 nil
    );setq

    (acet-ui-progress-safe n)

     (setq j 0)                                 ;match the header row with the current record
     (repeat (min (length lst) (length lst3))
      (setq    a (list (nth j lst)
                       (nth j lst3)
                 );list
            lst4 (cons a lst4)
      );setq
      (setq j (+ j 1));setq
     );repeat
     (setq lst4 (reverse lst4));setq

     (if (and (setq a (cadr (assoc "HANDLE" lst4)))
              (equal "'" (substr a 1 1))
         );and
         (setq a (substr a 2))
     );if
     (if (and a
              (setq na (handent a))
              (setq ob (vlax-ename->vla-object na)) ; ajout BS
              (setq e1 (entget na))
              (if (vlax-property-available-p ob 'effectivename) ; {ajout BS
                (setq blkn (vla-get-effectivename ob))
                (setq blkn (vla-get-name ob))
              );}
              (equal "INSERT" (cdr (assoc 0 e1)))
              (equal 1 (cdr (assoc 66 e1)))
              (or (not (assoc "BLOCKNAME" lst4))
                  (equal (xstrcase (cadr (assoc "BLOCKNAME" lst4)))
                         (xstrcase blkn) ; modif BS
                  );equal
              );or
         );and
         (progn
          (if (not (equal 8 (logand 8 (getvar "undoctl"))))
              (acet-undo-begin)
          );if
      (entmod (subst (cons 8 (cadr (assoc "LAYER" lst4))) (assoc 8 e1) e1) ) ; ajout BS, modification du calque d'insertion du bloc
          (setq lst4 (vl-remove (assoc "BLOCKNAME" lst4) lst4)
                lst4 (vl-remove (assoc "HANDLE" lst4) lst4)
                lst4 (vl-remove (assoc "LAYER" lst4) lst4) ; ajout BS
          );setq
          ;{ ajout BS
          (foreach l lst4
             (if (wcmatch (car l) "{DYNPARAM} *")
               (setq lst4 (vl-remove l lst4)
                     dlst (cons (list (substr (car l) 12) (cadr l) ) dlst)
               )
             )
          )
          (foreach prop (vlax-invoke ob 'GetDynamicBlockProperties)
             (if (and
                   (= (vla-get-readonly prop) :vlax-false)
                   (setq newval (assoc (xstrcase (vla-get-propertyname prop)) dlst))
                 )
               (progn
                 (setq unit (vla-get-unitstype prop)
                       newval (cadr newval))
                 (cond
                   ((= unit 1)
                     (setq newval (angtof newval))
                   )
                   ((> unit 1)
                     (setq newval (atof newval))
                   )
                 );cond
                 (vl-catch-all-error-p
                   (vl-catch-all-apply 'vla-put-Value (list prop newval))
                 )
               );progn
             );if
          );foreach
          ;}
          (if (acet-insert-attrib-set na lst4 nil)
              (setq #bns_attin_modified (+ #bns_attin_modified 1))
              (progn
               (if interact
                   (setq lst5 (cons lst4 lst5));setq add to interactive list.
                   (princ "\nNo matching attribute tags.")
               );if
              );progn else
          );if
          (acet-undo-end)
         );progn then
         (progn
          ;Print what's going on...
          (if (not interact)
              (cond
               ((not a)
                (princ "\nNo Handle specification.")
               )
               ((not na)
                (princ (strcat "\nNo entity with specified handle \"" a "\" exists."))
               )
               (T
                (princ (strcat "\nSpecified entity: \"" a "\" has been deleted or is invalid. "))
               )
              );cond then non-interactive execution
              (setq lst5 (cons lst4 lst5));setq else gather a list of attribs with
                                          ;no insert home.
          );if
          );progn else no home for this record
     );if
    (setq n (+ n 1));setq
    );repeat
    (acet-ui-progress-done)

    (if (and lst5
             interact
             (setq ans (bns_get_yes_no
                        (list "ATTIN - Select blocks?"
                              (strcat
                               ""
                               "\n    One or more records of data could not be"
                               "\n   matched to block inserts within this drawing."
                               "\n"
                               "\n    Do you want to select the block inserts "
                               "\n   and assign this data interactively?"
                              );strcat
                        );list
                        (list 40 10)
                       );bns_get_yes_no
             );setq
             (equal ans 1)
        );and
        (progn
         (princ "\nSelect the desired blocks to assign the data to and press ENTER when done.")
         (bns_attin_interactive (reverse lst5))
        );progn then
    );if

   );progn then
   (acet-alert "\nError opening input file for read.")
);if

);defun bns_attin

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun bns_attin_interactive ( lst / na e1 )

(while lst

(if (not (equal 8 (logand 8 (getvar "undoctl"))))
    (acet-undo-begin)
);if
(bns_print_att_list (car lst))
(princ "\nPress [Enter] to skip or [Esc] to finish.")
(if (and (setq na (acet-ui-single-select '((0 . "INSERT") (66 . 1)) nil))
         (setq e1 (entget na))
    );and
    (progn
     (if (acet-insert-attrib-set na (car lst) nil)
         (setq #bns_attin_modified (+ #bns_attin_modified 1)
                               lst (cdr lst)
         );setq
         (acet-alert (strcat "\nNo matching attribute tags were found on that "
                            "block insert. \nTry another block insert."
                    );strcat
         );acet-alert
     );if
    );progn then
    (setq lst (cdr lst));setq
);if
(acet-undo-end)
);while

);defun bns_attin_interactive


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun bns_print_att_list ( lst / sp n a b j k)

(setq lst (cons (list "---" "-----") lst)
     lst (cons (list "TAG" "VALUE") lst)
      sp "    "
      sp (strcat sp sp sp sp sp sp sp sp)
      sp (strcat sp sp sp sp sp sp sp sp)
       j 0
       k 0
       n 0
);setq
(repeat (length lst)
(setq a (nth n lst)
      b (cadr a)
      a (car a)
      j (max (strlen a) j)
      k (max (strlen B) k)
);setq
(setq n (+ n 1));setq
);repeat

(princ "\n")
(setq j (+ j 2)
     k (+ k 2)
);setq
(setq n 0)
(repeat (length lst)
(setq a (nth n lst)
      b (cadr a)
      a (car a)
);setq
(if (not (equal b "<>"))
    (progn
     (setq a (strcat a
                     (substr sp 1 (max 0 (- j (strlen a))))
             );strcat
           b (strcat b
                     (substr sp 1 (max 0 (- k (strlen B))))
             );strcat
          a (strcat "\n " a B)
     );setq
     (princ a)
    );progn then
);if
(setq n (+ n 1));setq
);repeat
n
);defun bns_print_att_list


(acet-autoload2	'("Yes_no.lsp"	(bns_get_yes_no lst size)))
(princ)

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

hello

je confirme, il s'agit d'express tool comme le dit Luna

il te suffit de faire "comme si" tu modifiais AutoCAD (sous windows Panneau de configuration\Tous les Panneaux de configuration\Programmes et fonctionnalités) sauf que tu demandes à AutoCAD d'ajouter les Xpress tools

Le Lisp de (gile) dont j'ai oublié le nom était bien plus sympa que le truc des Xpress (même si je ne l'ai malheureusement encore jamais essayé)

bisouxxXX comme dit Luna!! :P

Phil

Projeteur Revit Indépendant - traitement des eaux/CVC

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

Bonjour,

Je viens d'extraire les attributs des mes blocs avec ATTOUT, je modifie dans excel et lorsque je réinjecte les données, voici le message que j'obtient.

"ATTIN - Select blocks?
One or more records of data could not be matched to block insert within this drawing.
Do you want to select the block inserts and assign this deta interactively?"

Est-ce parce que j'ai créé un tableau dans excel pour trier mes données? 

Merci d'avance

Alain

Lien vers le commentaire
Partager sur d’autres sites

je fais pas de lisp mais est ce tu as l'identification du bloc que tu as extrait ?

 

tu as 10 blocs de même nom et 10 attribut que tu as extrait (1 par bloc)

comment le programme sait quel attribut appartient à quel bloc ?

 

Lien vers le commentaire
Partager sur d’autres sites

il y a 8 minutes, Curlygoth a dit :

je fais pas de lisp mais est ce tu as l'identification du bloc que tu as extrait ?

 

tu as 10 blocs de même nom et 10 attribut que tu as extrait (1 par bloc)

comment le programme sait quel attribut appartient à quel bloc ?

 

Bonjour Curlygoth,

Ça je n'en ai aucune idée (peut être le handle), je ne suis qu'un utilisateur de lisp. Je ne sais absolument pas comment fait le programme.

J'ai environs 200 blocs avec une bonne dizaine d'attribut. 

En général ATTOUT/ATTIN fonctionne très bien mais parfois il plante et j'aimerai savoir pourquoi. J'ai plus facile de remplir dans le fichier excel et réijecter tout après.

 

image.png.aeb4455a76f936a1d72fcbecc39db4c4.png

 

image.thumb.png.e90504db01d39418794ad44e1c17aac2.png

Lien vers le commentaire
Partager sur d’autres sites

Il y a 1 heure, DPB6804 a dit :

Bonjour,

Je viens d'extraire les attributs des mes blocs avec ATTOUT, je modifie dans excel et lorsque je réinjecte les données, voici le message que j'obtient.

"ATTIN - Select blocks?
One or more records of data could not be matched to block insert within this drawing.
Do you want to select the block inserts and assign this deta interactively?"

Est-ce parce que j'ai créé un tableau dans excel pour trier mes données? 

Merci d'avance

Alain

Tout dépend de ce que tu as fait dans ton tableau Excel, mais pour que AutoCAD y retrouve ses petits il faut que dans chaque ligne, le maintien (HANDLE)  et le nom du block (BLOCKNAME) n'aient pas été modifiés et que dans les colonnes suivantes il n'y ait que des valeurs d'attribut correspondant aux étiquettes en entête (<> si le bloc ne contient pas cet attribut).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Il y a 15 heures, Curlygoth a dit :

alors oui normalement c'est le handle !

un des blocs a peut être été supprimer ? ou modifier au point que son handle a changé ?

et pourquoi exporter pour réimporter après ?

Bonjour Curlygoth,

Je n'ai pas touché aux "HANDLE", j'ai juste fait des tri .

Pour répondre à ta dernière question, jai plus facile de voir tous mes attributs dans un fichier excel et voir si je ne me suis pas trompé dans la description. Il faut que les descriptions soit les même pour pouvoir faire un récapitulatif pour les commandes. ex.: MCC - Ht 8m - TOP60 et MCC - Ht 8m - TOP 60 un simple espace en plus et ça ne sera pas comptabilisé de la même façon. Je vois mieux ces petites erreurs dans excel puis en réinjectant ça corrige de suite.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 15 heures, (gile) a dit :

Après un rapide test, on a ce message si un ou plusieurs HANDLE présents dans le fichier ne sont pas trouvés dans le dessin (ont été effacés par exemple).

Merci Gile,

Je ne fais plus de tableau dans excel, mais des simples tri et ça fonctionne. Probablement que la fonction "mettre sous forme de tableau" faisait perdre quelque chose à l'enregistrement du fichier.

Merci d'avoir cherché.

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é