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. #1
    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 Enregistrer sous Automatique Fichier Excel depuis macro Autocad
    Bonjour, Bonjour,

    Je séche sur un petit truc qui me bloque pas mal.

    J'ai une macro autocad qui m'ouvre un fichier excel en lecture seule (pour ne pas enregistrer n'importe comment mon fichier plateforme), me le rempli via une extraction de certaien données.
    Notamment le nom en A3 et chemin du fichier en A2.

    Je souhaite enregistrer le fichier rempli avec les infos contenu en A3 et A2.

    Depuis excel je sais faire c'est :

    Sub enregistrement()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim str As String
    Dim dir As String
    Dim Name As String
    Dim ongletexcel As Worksheet
    dir = Cells(1, 2).Value
    Name = Cells(2, 3).Value
    str = dir & "\" & Name & ".xls"
    ActiveWorkbook.SaveAs Filename:=str, FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
    End Sub

    Par contre depuis autocad je séche .... Une idée ?

    Voici mon code vba AUTOCAD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
     
    Sub Extractionptinsertion()
     
    Dim applicationexcel As Object ' dimension variable application excel
     
    Set applicationexcel = GetObject(, "excel.Application")  ' On récupère l'objet Application
    applicationexcel.Visible = True ' on le rend visible
     
    monfichier = applicationexcel.ActiveWorkbook.Name 'definition de la variable monfichier = variable application excel, classeur actif + le nom
    applicationexcel.Workbooks(monfichier).Activate ' on active le fichier
     
     
    Set ongletexcel = applicationexcel.Workbooks(monfichier).Worksheets("Injectionbloclocal") 'on va chercher l'onglet qui nous interresse
     
    'Dimension des variables autocad à prendre en compte
    Dim Textes As AcadText
    Dim Objets As AcadEntity
    Dim tt As String
     
     
    ' action autocad (document actif)
    Set Applicationautocad = AutoCAD.Documents.Application.ActiveDocument
     
    'On commence à la ligne
    Ligne = 5
     
     
    ongletexcel.Cells(1, 1).Value = ThisDrawing.Path + "\" + ThisDrawing.Name
    ongletexcel.Cells(2, 1).Value = ThisDrawing.Path
    ongletexcel.Cells(3, 1).Value = ThisDrawing.Name
     
    ongletexcel.Cells(4, 1).Value = "Label"
    ongletexcel.Cells(4, 2).Value = "Position X"
    ongletexcel.Cells(4, 3).Value = "Position Y"
    ongletexcel.Cells(4, 4).Value = "Rotation"
    ongletexcel.Cells(4, 5).Value = "Calques"
    ongletexcel.Cells(4, 6).Value = "Hauteur du texte"
     
    For Each Objets In Applicationautocad.ModelSpace ' pour chaque "varible objets" dans la variable "application autocad" dans l'espace objet
     
     
    tt = Objets.ObjectName
    If tt = "AcDbText" Then
    Set Textes = Objets
     
    If Textes.Layer = "CODE_PIECE" Then
     
     
    'Set Textes = Textes.TextAlignmentPoint("left")
     
    'Textes.Alignment = acAttachmentPointleft
     
    ongletexcel.Cells(Ligne, 1).Value = Textes.TextString
    ongletexcel.Cells(Ligne, 2).Value = Textes.InsertionPoint(0)
    ongletexcel.Cells(Ligne, 3).Value = Textes.InsertionPoint(1)
    ongletexcel.Cells(Ligne, 4).Value = Textes.Rotation
    ongletexcel.Cells(Ligne, 5).Value = Textes.Layer
    ongletexcel.Cells(Ligne, 6).Value = Textes.Height
     
    On Error Resume Next
     
    Ligne = Ligne + 1
    Else
    End If
     
    Else
    End If
    Next Objets
     
    'On recommence pour les gaines
    Set ongletexcel = applicationexcel.Workbooks(monfichier).Worksheets("Injectionblocgaine") 'on va chercher l'onglet qui nous interresse
     
    Ligne = 5
     
     
    ongletexcel.Cells(1, 1).Value = ThisDrawing.Path + "\" + ThisDrawing.Name
     
    ongletexcel.Cells(4, 1).Value = "Label"
    ongletexcel.Cells(4, 2).Value = "Position X"
    ongletexcel.Cells(4, 3).Value = "Position Y"
    ongletexcel.Cells(4, 4).Value = "Rotation"
    ongletexcel.Cells(4, 5).Value = "Calques"
    ongletexcel.Cells(4, 6).Value = "Hauteur du texte"
     
     
     
    For Each Objets In Applicationautocad.ModelSpace ' pour chaque "varible objets" dans la variable "application autocad" dans l'espace objet
     
     
    tt = Objets.ObjectName
    If tt = "AcDbText" Then
    Set Textes = Objets
    If Textes.Layer = "02B_gaines_num" Then
     
     
    'Set Textes = Textes.TextAlignmentPoint("left")
     
     
    ongletexcel.Cells(Ligne, 1).Value = Textes.TextString
    ongletexcel.Cells(Ligne, 2).Value = Textes.InsertionPoint(0)
    ongletexcel.Cells(Ligne, 3).Value = Textes.InsertionPoint(1)
    ongletexcel.Cells(Ligne, 4).Value = Textes.Rotation
    ongletexcel.Cells(Ligne, 5).Value = Textes.Layer
    ongletexcel.Cells(Ligne, 6).Value = Textes.Height
     
    On Error Resume Next
     
    Ligne = Ligne + 1
    Else
    End If
     
    Else
    End If
    Next Objets
     
     
    ZoomExtents 'Zoom etendu
    ThisDrawing.PurgeAll 'pour purger le dessin en cours
    'ThisDrawing.ModelSpace.Regen 'on regen
    ThisDrawing.Save 'on sauvegarde
    ThisDrawing.Close 'on ferme
     
    'fermeture.fermeture 'envois vers le module de fermeture
     
     
    MsgBox "Le fichier excel créé est à enregistrer dans le dossier en cours de traitement"
     
    End Sub

  2. #2
    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
    Bonjour,

    Teste ceci après avoir activé la référence "Microsoft Excel x.x Library" dans l'éditeur VBA d'Autocad

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    '################################################################
    '# Nécessite d'activer la référence Microsoft Excel x.x Library #
    '################################################################
     
    Sub test()
    Dim Xl As Excel.Application, Wbk As Excel.Workbook, Sh As Excel.Worksheet
     
    Set Xl = New Excel.Application
    Xl.Visible = True '<-- on pourrait laisser excel invisible
    Set Wbk = Xl.Workbooks.Add
    Set Sh = Wbk.Worksheets("Feuil1")
     
    Sh.Cells(1, 1) = ThisDrawing.Path
    Sh.Cells(2, 1) = Split(ThisDrawing.Name, ".")(0) '<-- pour ne prendre que le nom du dessin sans l'extension dwg
     
    Wbk.SaveAs Sh.Cells(1, 1) & "\" & Sh.Cells(2, 1) & ".xls"
    Wbk.Close
    Xl.Quit
     
    End Sub
    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.

  3. #3
    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
    Bonjour,

    Merci pour le code,

    Mais j'avoue ne pas tout comprendre, pourquoi ouvrir un nouvel excel, ainsi qu'un nouvel onglet puisqu'il est dejà ouvert.

    Il ne faudrait pas plutôt activer l'excel actif?

    Edit :

    J'ai incrementé mon fichier de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    applicationexcel.Workbooks(monfichier).Activate
    Set ongletexcel = applicationexcel.Workbooks(monfichier).Worksheets("Injectionbloclocal").Select
     
    ongletexcel.Cells(1, 1) = ThisDrawing.Path
    ongletexcel.Cells(2, 1) = Split(ThisDrawing.Name, ".")(0) '<-- pour ne prendre que le nom du dessin sans l'extension dwg
     
    monfichier.SaveAs ongletexcel.Cells(1, 1) & "\" & Sh.Cells(2, 1) & ".xls"
    monfichier.Close
    applicationexcel.Quit
    Mais il me pose la question de savoir si je veux enregistrer ou non et aussi bien avec un fichier en lecture seule ou non......

  4. #4
    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
    Mais j'avoue ne pas tout comprendre, pourquoi ouvrir un nouvel excel, ainsi qu'un nouvel onglet puisqu'il est dejà ouvert.
    C'était juste un exemple pour te montrer qu'il était relativement aisé de piloter Excel depuis Autocad à partir du moment où l'on active la référence
    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. #5
    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
    A ok effectivement , mais la référence est bel et bien activé.

    Mais je bloque vraiment sur l'enregistrement.

    On dirait qu'il saute ma ligne Saveas pour aller directement à .quit

    Du coup j'ai le message voulez vous enregistrer les modifications etc.

    J'en conclu donc que je n'ais pas bien défini la dimension de mon classseur.

    Donc j'ai testé plein de chose mais il me manque une variable (ou dimension) quelque part...

    Pour info voilà le cheminement de ma suite (pas logique) de vba et script.

    Depuis SAS (superautoscript) je lui donne une liste de fichier dwg à gérer avec un script en particulier, ce script appel 2 macro vba (l'une pour l'ouverture d'une plateforme d'echange autocad<=> excel) et la seconde une extraction de données.
    Une fois l'extraction finis je souhaite qu'il enregistre ce fichier xls en du nom et du chemin.
    Ensuite il enregistre le plan, le ferme.
    Et SAS passe au suivant.....

    Mais je reste bloquer sur voulez vous enregistrer les modifs

  6. #6
    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
    Si je comprend bien, tu as un fichier modèle (en lecture seule) que tu ouvres et que tu veux sauvegarder sous un autre nom une fois que les données sont transférées.

    Je laisserais Autocad ouvrir le fichier Excel modèle plutôt que de l'ouvrir manuellement et de travailler avec le fichier actif. Un jour ou l'autre le fichier actif ne sera pas celui qu'on croit et ça va coincer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    '################################################################
    '# Nécessite d'activer la référence Microsoft Excel x.x Library #
    '################################################################
     
    Sub test()
    Dim Xl As Excel.Application, Wbk As Excel.Workbook, Sh As Excel.Worksheet
    Dim NomFich As String
     
    NomFich = "D:\Temp\test.xls" '<-- adapter chemin et nom du fichier excel à ouvrir
     
    Set Xl = New Excel.Application
    Xl.Visible = False '<-- excel reste invisible
    Set Wbk = Xl.Workbooks.Open(NomFich)
    Set Sh = Wbk.Worksheets("Feuil1") '<-- adapter nom feuille
     
    Sh.Cells(1, 1) = ThisDrawing.Path
    Sh.Cells(2, 1) = Split(ThisDrawing.Name, ".")(0) '<-- pour ne prendre que le nom du dessin sans l'extension dwg
     
    'tes extractions de donnée
    '...
    '...
    '...
     
    Wbk.SaveAs Sh.Cells(1, 1) & "\" & Sh.Cells(2, 1) & ".xls"
    Wbk.Close
    Xl.Quit
     
    End Sub
    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. #7
    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
    Tu veux m'epouser


    Ca à l'air de marché au poil !!, et le pire c'est que j'ai déjà un bout de code qui me sert dans un autre module à ouvrir cette fameuse plateforme, et à aucun momen je n'ai pensé passer par ce code la (en appelant mon autre module d'extraction en cours de route)

    Merci beaucoup,

    Je termine mon script etc, et je fais le test grandeur nature sur une 20aine de plan (on vera lundi comme ca )

    Edit : une petite question, il ne me quitte pas le fichier en lecture seule ?

    Edit 3 : J'ai trouvé, il suffisait de mettre false aprés .close

  8. #8
    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
    Tu veux m'epouser

    je ne suis pas un homme facile, je ne couche pas le premier soir...
    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.

  9. #9
    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 ne suis pas un homme facile, je ne couche pas le premier soir...
    Ils disent tous ça !

    En tout cas cela marche nickel

    Mais une autre question me viens,

    est il possible de lancer une macro (toujours depuis autocad) contenu dans un fichier excel?

    Exemple :

    Ton super code ouvre l'xls

    Mon super code extrait mes données

    La un super code encore inconue lance ma super macro de fusion de donnée contenu dans l'xls.

    Ton super code enregistre le fichier

    Et hop on passe au suivant?

  10. #10
    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
    En reprenant mon bout de code, essaie ceci (il s'agit de la dernière ligne de code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    '...
    NomFich = "D:\Temp\test.xls" '<-- adapter chemin et nom du fichier excel à ouvrir
     
    Set Xl = New Excel.Application
    Xl.Visible = False '<-- excel reste invisible
    Set Wbk = Xl.Workbooks.Open(NomFich)
    Set Sh = Wbk.Worksheets("Feuil1") '<-- adapter nom feuille
     
    Xl.Run "test.xls!LaMacro" '<-- nom du fichier et de la macro à adapter
    '...
    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.

  11. #11
    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
    Bonjour,

    Merci

    Je teste dans l'aprés midi

  12. #12
    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 Re
    Bonjour,Bonjour,

    Dsl, l'après midi a été longue...

    Malheureusement cela ne fonctionne pas

    "Erreur 1004 - Impossible de trouver la macro 'monfichier.xls!mamacro'



    Pour être sur de ne pas me tromper dans l'appel, j'ai nommé mon module et ma macro de la même maniere...
    Je lui ai également donnée le chemin complet, le module plus le nom de la macro...

    Mais rien n'y fait

    Voici les tests que j'ai effectué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Xl.Run "PlateformeVGR.xls!Transfert!"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Xl.Run "PlateformeVGR.xls!Transfert"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Macro = Xl.Run("G:\invent-immo\Module-vba\Module-DPFLL\Plateformes\Vaugirard\PlateformeVGR.xls!Transfert.Transfert")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Macro = Xl.Run("G:\invent-immo\Module-vba\Module-DPFLL\Plateformes\Vaugirard\PlateformeVGR.xls!Transfert")
    Etc, etc....

  13. #13
    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
    Etrange, j'avais fait les test avant et ça fonctionne chez moi.
    Ton fichier contenant la macro est bien ouvert avant de faire appel à cette macro ?
    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.

  14. #14
    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 :)
    Bonsoir,

    Oui oui car c'est votre code qui ouvre ce fichier (depuis autocad), et j'ai mis X1.run avec l'enregistrement et la fermeture.


  15. #15
    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à je ne vois pas ce qui coince. A tout hasard remontre moi ton code
    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.

  16. #16
    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
    Bonjour,

    Le voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    '# Nécessite d'activer la référence Microsoft Excel x.x Library #
    '################################################################
     
    Sub Traitement()
    Dim Xl As Excel.Application, Wbk As Excel.Workbook, Sh As Excel.Worksheet
    Dim NomFich As String
    Dim appautocad As AcadApplication
     
    NomFich = "G:\invent-immo\Module-vba\Module-DPFLL\Plateformes\Vaugirard\PlateformeVGR.xls" '<-- adapter chemin et nom du fichier excel à ouvrir
     
    Set Xl = New Excel.Application
    Xl.Visible = False '<-- excel reste invisible
    Set Wbk = Xl.Workbooks.Open(NomFich)
    Set Sh = Wbk.Worksheets("injectionbloclocal") '<-- adapter nom feuille
     
    Sh.Cells(2, 1) = ThisDrawing.Path
    Sh.Cells(3, 1) = Split(ThisDrawing.Name, ".")(0) '<-- pour ne prendre que le nom du dessin sans l'extension dwg
     '################################################################
     '################################################################
    'Lancement macro d'extraction
     
     
    Extractiontexte.Extractionptinsertion
     
     
    '################################################################
    '################################################################
     'Lancement macro d'importation Excel
     
    'Macro = Xl.Run("G:\invent-immo\Module-vba\Module-DPFLL\Plateformes\Vaugirard\PlateformeVGR.xls!Transfert!Transfert!")
     
     
     
    Wbk.SaveAs Sh.Cells(2, 1) & "\" & Sh.Cells(3, 1) & ".xls"
    Wbk.Close False
    Xl.Quit
     
     
    End Sub
    C'est le votre

  17. #17
    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
    On va essayer de procéder par élimination

    Dans ton fichier "PlateformeVGR.xls" insère, dans un module standard, ce petit bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    MsgBox "COUCOU"
    End Sub
    Désactive la macro d'extraction "Extractiontexte.Extractionptinsertion"

    Et teste simplement comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    '# Nécessite d'activer la référence Microsoft Excel x.x Library #
    '################################################################
     
    Sub Traitement()
    Dim Xl As Excel.Application, Wbk As Excel.Workbook, Sh As Excel.Worksheet
    Dim NomFich As String
    Dim appautocad As AcadApplication
     
    NomFich = "G:\invent-immo\Module-vba\Module-DPFLL\Plateformes\Vaugirard\PlateformeVGR.xls" '<-- adapter chemin et nom du fichier excel à ouvrir
     
    Set Xl = New Excel.Application
    Xl.Visible = False '<-- excel reste invisible
    Set Wbk = Xl.Workbooks.Open(NomFich)
    Set Sh = Wbk.Worksheets("injectionbloclocal") '<-- adapter nom feuille
     
    Sh.Cells(2, 1) = ThisDrawing.Path
    Sh.Cells(3, 1) = Split(ThisDrawing.Name, ".")(0) '<-- pour ne prendre que le nom du dessin sans l'extension dwg
     '################################################################
     '################################################################
    'Lancement macro d'extraction
     
     
    'Extractiontexte.Extractionptinsertion
     
     
    '################################################################
    '################################################################
     'Lancement macro d'importation Excel
     
    Xl.Run "PlateformeVGR.xls!test"
     
     
     
    Wbk.SaveAs Sh.Cells(2, 1) & "\" & Sh.Cells(3, 1) & ".xls"
    Wbk.Close False
    Xl.Quit
     
     
    End Sub
    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.

  18. #18
    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
    Bonjour, Bonjour,

    Désolé, c'est un peu la course au boulot cette semaine, je teste ceci ce soir chez moi

    Bonne journée

    Arno

  19. #19
    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
    Bonjour, Bonjour,

    J'ai mis un peu de temps, mais aprés test cela marche

    Donc me viens une question bête, le fait que le nom du module, et le nom la macro soit identique n'y serais pas pour qq chose ????

  20. #20
    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
    En effet, je viens de tester et ça coince si le module porte le même nom que la macro. Je ne connaissais pas cette subtilité.
    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 1 sur 2 12 DernièreDernière

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