IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Enregistrer sous Automatique Fichier Excel depuis macro Autocad


Sujet :

VBA

  1. #21
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Je pense que du coup il à deux noms identiques, donc plutôt que de prendre l'un des deux il n'en prend aucun

    Je continu sur ma lancée et reviens vous ensuite

    Je peux d'ores et déjà vous dire sur quoi je vais plancher....

    Ouvrir un plan charger une macro pour stocker le nom et chemin du plan, changer l'extention .dwg par .excel, ouvrir l'excel, lancé macro autocad (insertion d'objet dans autocad depuis excel), enregistrement du plan fermeture, fermeture de xls, ouverture du plan suivant etc


    Merci beaucoup


    Edit : Idée pour une future macro

    Je pense qu'en partant du code que vous m'avez fournis il possible de faire ce que je souhaite (voir ci dessus)

    Dans la ligne d'ouverture du fichier xls, est possible de changer le chemin et nom par une variable (nom et chemin du plan) en enlevant le .dwg et en mettant le .xls à la place.

    Une idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Chemin = thisdrawing.Path
    Nom= Split(ThisDrawing.Name, ".")(0) 'vient de vous
     
    NomFich = "Chemin\nom.xls" '
    Je ne peux tester la (traitement de 150 plans en cours)

    Mais dans le fond l'idée est possible ou je fais fausse route ?

    Merci d'avance

    Ps: je laisse le sujet en résolu car la question de départ est resolu

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Une petite question, est il possible de mettre dans un attribut deux choses distinct.

    Exemple dans mon code pour la valeur de l'attribut surface j'ai ceci :

    SURFACE = ongletlocal.Cells(D, "Y").Value

    Je souhaiterais qu'il mette m² à chaque fois à la fin,

    J'ai donc essayé ceci

    SURFACE = ongletlocal.Cells(D, "Y", "m²").Value

    SURFACE = ongletlocal.Cells(D, "Y", & "m²").Value

    SURFACE = ongletlocal.Cells(D, "Y").Value + "m²"

    Mais non, je ne pense pas partir du bon principe...

    J'ai donc forcé le format depuis le fichier plateforme via format cellule perso, mais non car il ne prend que la valeur....

    Une idée ?

  3. #23
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    L'association de deux valeurs se fait via le signe & (esperluette)
    Essaie comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SURFACE = ongletlocal.Cells(D, "Y").Value & "m²"
    Deux questions sur cette syntaxe :
    • ongletlocal est bien une variable de type WorkSheet ?
    • D est bien une variable numérique ?
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  4. #24
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par Arno_ap Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Chemin = thisdrawing.Path
    Nom= Split(ThisDrawing.Name, ".")(0) 'vient de vous
     
    NomFich = "Chemin\nom.xls" '
    C'est presque ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Chemin = thisdrawing.Path
    Nom= Split(ThisDrawing.Name, ".")(0) 'vient de vous
     
    NomFich = Chemin & "\" & Nom & ".xls"
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  5. #25
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    J'ai trouvé entre temps le piment d'esperluette

    ongletlocal est bien une variable de type WorkSheet ? Oui c'est tout simplement l'onglet qui correspond pour mes créations de bloc, au bloc "Local"
    J'en ai aussi un pour les gaines.


    D est bien une variable numérique ? D est la variable de ligne de départ incrementée de 1 à chaque boucle pour la création du bloc (enfin insertion) et les données à mettre dans les attributs.


    J'ai ajouter une étape à mon cheminement en faite

    Maintenant je fais ceci :

    Depuis Autoscript je charge une liste de plan, plus un script qui me charge/décharge à la fin du traitement ma macro)

    D'autocad je lance le fichier excel, extrait, fusionne les données,
    Et la maintenant je lui demande d'aller de suite me créé les blocs correspondant dans le fichier autocad ouvert et de mettre les attributs,

    Puis enregistrement et fermeture dessins + xls bien nommé (grace à vous )

    Par contre j'ai tous les 10/20 plans une erreurs d'incompatibilité de type sur une variable trés bien défnie puisque qu'il l'utilise sans soucis sur les autres plans.

    Serait ce du à "reste" dans la mémoire ?

    Quand c'est comme ça pas d'autre choix de planté (gestionnaire des tâches) autocad, car autoscript ne comprend plus s'il doit ouvrir fermé le fichier...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomFich = Chemin & "\" & Nom & ".xls"
    Encore oublié l'esperluette (je ne savais pas que cela se nommait comme ça )


    Ps : je garde le même sujet pour mes questions, ou faut il que j'en créé un nouveau à chaque que je change de question??

    Bonne journée

  6. #26
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par Arno_ap Voir le message
    Par contre j'ai tous les 10/20 plans une erreurs d'incompatibilité de type sur une variable trés bien défnie puisque qu'il l'utilise sans soucis sur les autres plans.

    Serait ce du à "reste" dans la mémoire ?
    Difficile à dire vu d'ici..., cela coince toujours sur le(s) même(s) plan(s) ou c'est aléatoire ? Cette variable en question c'est laquelle ? Elle est déclarée de quel type ? Elle reçoit quelle valeur ?

    Citation Envoyé par Arno_ap Voir le message
    Ps : je garde le même sujet pour mes questions, ou faut il que j'en créé un nouveau à chaque que je change de question??
    C'est vrai qu'on commence à s'éloigner de la question initiale mais vu qu'il s'agit d'un sujet particulier (Autocad via Excel et vice versa) je propose de garder le même sujet.
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  7. #27
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    La ligne ou cela plante de manière très aléatoire d'ailleurs et la ligne qui défini les points d'insertion de bloc, en x y et z.

    Celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InsertionPoint(0) = X: InsertionPoint(1) = y: InsertionPoint(2) = Z
    Elles sont défénies comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'variable de positionnement
    X = ongletlocal.Cells(D, "AH").Value
    y = ongletlocal.Cells(D, "AI").Value
    Rotate = ongletlocal.Cells(D, "D").Value
    Z = 0
    echelleinsertionX = 1
    echelleinsertionY = 1
    echelleinsertionZ = 1
    Rotationdubloc = Rotate

    Les valeurs sont numériques.

    Après être resté une bonne partie de l'après midi derrière l'écran pour comprendre (gestionnaire des tâche activé sur processus), je me suis rendu compte que par moment il reste un excel.exe d'activer.

    Et c'est pil poil à ce moment la qu'il "plante" car l'Excel qui reste activé na pas de valeur dans les cellules ou je l'envois chercher.

    En farfouillant dans les modules faits en formation lors de l'initiation j'ai retrouvé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set excelapp = Nothing
    Set excelsheet = Nothing
    Pensez vous qu'il soit judicieux de mettre ceci pile à la fin du traitement après l'enregistrement du fichier et sa fermeture

    Pour rappel le code de "traitement" ou tous les appels s'opèrent se trouve page 1.


    C'est vrai qu'on commence à s'éloigner de la question initiale mais vu qu'il s'agit d'un sujet particulier (Autocad via Excel et vice versa) je propose de garder le même sujet.
    Souhaitez vous que je modifie le titre pour un titre plus générique?

  8. #28
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par Arno_ap Voir le message
    En farfouillant dans les modules faits en formation lors de l'initiation j'ai retrouvé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set excelapp = Nothing
    Set excelsheet = Nothing
    Pensez vous qu'il soit judicieux de mettre ceci pile à la fin du traitement après l'enregistrement du fichier et sa fermeture
    Oui c'est judicieux. Lorsqu'on utilise des variables "objet" (WorkBook, WorkSheet, Application, etc...), celles-ci utilisent plus de mémoire qu'une variable de type String, Integer ou autre. La mémoire se libère lorsque l'on ferme l'application contenant la macro mais si cette application reste active et exécute plusieurs fois la macro (ce qui est ton cas) il se peut que la mémoire finisse par saturer. Il est donc conseillé de libérer les variables en fin de procédure (ce que je ne fais pas systématiquement...shame on me)
    Par rapport à ton code tu peux mettre ceci juste avant le "End Sub"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set Sh = Nothing
    Set Wbk = Nothing
    Set Xl = Nothing
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2010] Télécharger et enregistrer sous un fichier Excel dans IE9 Windows 7
    Par francoiscrna dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 03/03/2015, 14h06
  2. lancer macro d'un fichier excel depuis Access
    Par nicoosito dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/09/2010, 09h52
  3. Enregistrer fichier web depuis macro VBA
    Par antoun961 dans le forum VB.NET
    Réponses: 1
    Dernier message: 21/03/2008, 14h53
  4. macro pour un "enregistrer sous" automatique
    Par Cilou38 dans le forum VBA Word
    Réponses: 1
    Dernier message: 19/07/2007, 13h22
  5. [VBA]enregistrer en fichier excel en macro
    Par jazziestan dans le forum SDK
    Réponses: 12
    Dernier message: 29/12/2006, 10h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo