Aller au contenu

Exploitation CSV sur Excel


Thelduin

Messages recommandés

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 :

 

u2op.png

 

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) :

 

efcw.png

 

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 :)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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

 

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

  • 4 semaines après...

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 ?)

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é