CadXP: Exploitation CSV sur Excel - CadXP

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Exploitation CSV sur Excel

#1 L'utilisateur est hors-ligne   Thelduin 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 42
  • Inscrit(e) : 22-février 18

Posté 13 juillet 2020 - 13:50

Bonjour à tous,

J'ai besoin de votre aide pour l'exploitation de fichier CSV sur Excel, je suis un peu perdu, et je me demande si il faudrait pas que je passe par une routine VBA (j'y connais rien en VBA) pour faire ce que je veux.
En fait, je fais régulièrement des carnets de coupes de coffrage (je suis en BE Structure). Ces coupes sont tracées dans des cadres de la taille d'un A3. Ce cadre est un bloc dans lequel je mets le nom de chaque coupe (attributs du bloc). J'arrive donc a extraire dans un fichier CSV les noms des coupes de chacune des pages de mon carnet. Seulement voilà, quand j'importe ce CSV dans Excel pour créer la table des matières du carnet, je ne sais pas comment faire pour que cela suive la mise en page déjà présente.

Ci dessous une capture de mon excel et je vous détail ce que je voudrai faire :

Image IPB

Vous pouvez voir sur l'image que j'ai 17 lignes disponibles, sur 2 colonnes H et Q, les autres colonnes étant réservées aux indices (ça permet de faire un A3 propre). Ce sont dans ces 2 colonnes que doivent apparaître les noms des coupes. Or, excel ne se préoccupe pas de la mise en page quand j'importe un CSV, donc si le CSV a plus de 17 lignes, je suis marron. Je sais pas comment faire pour qu'à partir de la 18e ligne, les données s'insèrent sur la 2e colonne disponible (la colonne Q).

Ci-dessous un exemple de table des matières remplie (à la main ! ce qui est un peu long) :

Image IPB

J'espère avoir été suffisamment claire pour que vous puissiez m'apporter votre aide, n'hésitez pas à me demander plus de précision si besoin :)

Merci d'avance :)
0

#2 L'utilisateur est hors-ligne   didier 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8 574
  • Inscrit(e) : 18-décembre 02
  • LocationPlanète : Terre

Posté 13 juillet 2020 - 16:47

Coucou

Je ne comprends pas bien la question du coup je vais répondre quelque chose d'ultra simple :
Dans un classeur il y a le prototype de la présentation mais avec les colonnes H et Q vides
Dans le CSV extrait (on ne sait pas ce qu'il contient) il suffira de copier la colonne concernée pour la coller dans la colonne mise en forme
En choisissant de ne copier que les valeurs pas la mise en forme

Il est possible que j'aie mal compris...

Amicalement
0

#3 L'utilisateur est hors-ligne   Thelduin 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 42
  • Inscrit(e) : 22-février 18

Posté 13 juillet 2020 - 17:00

Bonjour Didier,

Je vais essayer de poser ma question autrement.
Admettons, j'ai un fichier CSV qui contient 25 lignes avec une colonne pour le numéro de page et une 2e colonne pour le(s) nom(s) de coupe(s) sur la page :
01,CH1
02,CH2
03,CH3
.
.
.
.
.
25,CH25

Est-il possible de faire en sorte que les lignes 1 à 17 du CSV s'insèrent dans la colonne H et les lignes 18 à 25 s'insèrent dans la colonne Q autrement qu'en faisant un copier coller des valeurs après avoir importé le fichier CSV dans un Excel vierge ? En d'autres termes, est-il possible d'automatiser l'importation du CSV pour que les données suivent la mise en page ?
0

#4 L'utilisateur est hors-ligne   Thelduin 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 42
  • Inscrit(e) : 22-février 18

Posté 13 juillet 2020 - 17:57

En fait le but ici est de pouvoir remplir l'excel automatiquement après avoir fini mon carnet sur AutoCAD, car pour le moment, on rempli la table des matières à la main, ce qui peux vite devenir long et fastidieux dès qu'on a beaucoup de coupes/pages.
Du coup j'ai eu comme idée de faire une extraction de données AutoCAD en CSV pour l'inclure dans excel. Peut-être suis-je parti sur une mauvaise piste ?
0

#5 L'utilisateur est hors-ligne   didier 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8 574
  • Inscrit(e) : 18-décembre 02
  • LocationPlanète : Terre

Posté 14 juillet 2020 - 09:06

Coucou

Oui c'est possible
Transmets un fichier DWG avec les attributs à mettre en place et la routine qui fabrique le CSV
Il faut savoir que ça va être bien plus lent qu'actuellement car la gestion d'Excel depuis LSP est moins efficace que la création de CSV

Amicalement

0

#6 L'utilisateur est hors-ligne   Thelduin 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 42
  • Inscrit(e) : 22-février 18

Posté 14 juillet 2020 - 14:11

Ah mais je passe pas par une routine pour la création du CSV, je passe pas la fonction extractdonnees d'AutoCAD
J'essayerai de faire un lisp pour ça pour vous le transmettre, mais j'avoue que là ça dépasse mes compétences en lisp
Évidemment, je ne suis pas au bureau aujourd'hui, et je n'ai pas AutoCAD à la maison, du coup je reviens vers vous d'ici la fin de la semaine avec les fichiers
0

#7 L'utilisateur est hors-ligne   Thelduin 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 42
  • Inscrit(e) : 22-février 18

Posté 15 juillet 2020 - 12:35

Bonjour !

Je reviens vers vous car j'essaye désespérément de faire un lisp pour extraire les données que je veux, mais j'ai quelques soucis avec la fonction "-extractdonnees" d'AutoCAD.
La fonction utilise un fichier gabarit DXE. Ne sachant pas comment créer un tel fichier, j'ai utilisé la fonction "extractdonnees" (sans le tiret) qui est la même mais avec des boîtes de dialogues. Bref. Une fois arrivé à la fin de l'extraction, la fonction demande si on veut intégrer un tableau dans AutoCAD ou si on veut enregistrer les données dans un fichier externe (ce qui m'intéresse du coup !). AutoCAD m'a donc généré un fichier CSV. Jusque là, pas de soucis.

Je me suis alors retrouvé avec un fichier DXE qui a enregistré le fait qu'il faut extraire les données dans le fichier "exemple.CSV". Du coup, quand j'utilise la fonction "-extractdonnees" avec comme fichier gabarit le DXE créé précédemment, et bien il extrait les données dans le fichier "exemple.csv". Et c'est là que ça me dérange. J'aimerai pouvoir créer un nouveau fichier (ou remplacer un existant) à CHAQUE extraction.

Comment faire ? Cela semble venir du DXE mais je n'ai aucune idée de comment le modifier. Est-ce que quelque chose m'aurait échappé lors de la création du DXE avec "extractdonnees" ? Je sais qu'on s'éloigne pas mal de la rubrique VBA du forum, mais je préfère poser ma question ici plutôt que de créer un nouveau sujet.
0

#8 L'utilisateur est hors-ligne   Curlygoth 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 14
  • Inscrit(e) : 09-mai 19

Posté 12 août 2020 - 10:08

Bonjour,

Je sais pas si je peux t'aider car le lisp. (J'ai du mal... (Peut être trop de parenthèse ?)

Par contre en VBA, je sais créer des fenetres pour générer et nommer tes présentations plutot que de le faire manuellement.
et les parcourirs pour recupérer des infos dans tes blocs


'parcours les présentations (meme l'onglet Model)
For each layout in ThisDrawing.Layout 
   If layout.name = "Model" then 'si la présentation s'appelle Model on passe
   else
      For b = 0 To ThisDrawing.PaperSpace.Count - 1 'on parcours les objets qui sont dans la présentation
         Set Entity = ThisDrawing.PaperSpace.Item(B)

           If Entity.ObjectName = "AcDbBlockReference" Then 'on verifier que l'objet est un bloc
              Set blockRefObj = Entity
                  if blockRefObj.EffectiveName = "NOM_BLOC" then 'on verif le nom du bloc de ton cartouche
                  'code sur ton bloc
                    For Each Att In blockRefObj.GetAttributes 'on parcours les attribut du bloc
                       If Att.TagString = "ATTRIBUT1" Then 'On rechecrhe l'attribut de nom ATTRIBUT1
                        VAR1 = Att.TextString  'on met les valeurs dans une variable temporaire
                       Else
                       End If
                       If Att.TagString = "ATTRIBUT2" Then 'On rechecrhe l'attribut de nom ATTRIBUT2
                        VAR2 = Att.TextString  'on met les valeurs dans une variable temporaire
                       Else
                       End If
                       '.... etc c'est vrai c'est pas sexy mais tu peux te faire une fonction avec l'attribut a extraire par exemple !
                   Next Att
                   TEXTE = TEXTE & VAR1 & ";" & VAR2 & chr(10) 'donc tu mets par exemple tes colonnes separées par un ";"
                  VAR1 = ""
                  VAR2 = ""
                  else
                  end if
           else
           end if



   end if
next

'EDIT On peut creer un CSV ou le mettre directement dans Excel !

CHEMIN = ThisDrawing.Path & "\" & "Mon fichier texte dans le répertoire que le dessin.csv"
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set A = fs.CreateTextFile(CHEMIN, True) 'on créé le fichier
    A.WriteLine TEXTE 'On ecris dans le fichier
    A.Close 'on ferme le fichier

TEXTE = ""



Voila je ne l'ai pas tester mais bon si tu as des soucis on développera

pour télécharger le module :
Lien vers module VBA

oui contrairement au lisp le vba n'est pas natif dans autocad mais les posibilités sont les mêmes (ou à quelques détails prêt ?)
Je dessine sur Autocad depuis mes 16 ans, je fais tout avec 2D/3D etc...
Et maintennant ? Ben, je ne dessine quasiment plus...
Je programme pour que mon ordinateur travail à ma place
Et je créé des outils pour gérer planning, mail auto, rapport issu du dessin et j'en passe.
(Uniquement en VBA et VB.net / Sql)

Mon site Web (en cours de construction) : Site
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)