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

Macros et VBA Excel Discussion :

Création macro ouverture fichier solidwork [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    dessinateur industriel
    Inscrit en
    Avril 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 10
    Par défaut Création macro ouverture fichier solidwork
    Bonjour tout le monde !

    Je viens vers vous car je cherche à me faciliter la vie ! Je suis dessinateur industriel et toutes les pièces que je dessine en 3D, je dois ensuite les faire fabriquer par des sous-traitants. Pour cela je dois créer des fichier .STEP .PDF et .DXF à partir de mon logiciel de conception (SolidWorks). Je dois ensuite dispatcher les pièces en fonction de leur nature chez le sous-traitant concerné : pièces usinées chez l'usineur, pièce mécano-soudée chez le chaudronnier.... Et cette étape est longue et fastidieuse, sans compter les oublis et les erreurs d'envois ^^. Je peux récupérer un tableau Excel du logiciel de conception avec la nature des pièces, leur nom, le chemin complet du dossier.

    En bref après avoir récupéré le tableau Excel je veux ajouter un filtre de sélection pour pouvoir afficher juste le type de pièce (pièces usinées par exemple) et qu’une macro ouvre tous les fichiers filtrés du tableau dans SolidWorks. Après via l’autre logiciel je lancerai une autre macro pour générer les fichiers neutres voulus mais il s’agit là d’une autre étape que j'ai déjà plus au moins résolu.

    Je voulais donc savoir s’il était possible d’avoir une macro sous un bouton qui permettra d’ouvrir des fichiers en ayant juste le nom des fichiers et le nom du dossier dans lesquels sont mis les fichiers. En sachant que :

    - tous les fichiers ne se trouvent pas dans le même dossier,
    - tous les fichiers on des noms différents,
    - plusieurs dossiers peuvent avoir le même nom,
    - pour un nom de fichier, il y a le 3D et le 2D sous le même nom. Par exemple la pièce blabla aura son 3D qui se nommera blabla.SLDPRT et la mise en plan se nommera blabla.SLDDRW. Il faudrait que la macro puisse ouvrir les deux fichiers (qui s’ouvrent avec le même logiciel).

    Je cherche depuis un bout de temps déjà sur L'Internet et j'ai réussi à créer un bouton sur Excel qui me permet d'ouvrir une pièce mais la macro n'ouvre que le 3D d'une pièce, en connaissant le nom et le chemin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Bouton1_Cliquer()
     
    Dim myBool As Boolean
    Dim myError As Long, myWarning As Long
     
    myBool = Shell("C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe", vbNormalFocus)
     
    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.OpenDoc6("C:\Users\SONFVER\Desktop\macro\test\01.sldprt", 1, 1, "", myError, myWarning)
    Set swApp = Nothing: Set swModel = Nothing
     
    End Sub
    Bon j’espère que j’ai été assez clair dans mon explication ^^ ! Je vois bien ce que je souhaite mais il est facile de s’embrouiller en voulant expliquer ça par écrit…Je fais mes premiers pas dans le vaste monde des macros et j'avoue que je m'y perd un peu .

    Merci beaucoup à ceux qui prendront le temps de lire ce post et merci à tous de permettre ce genre d’aide sur la toile.

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    j'ai 2 questions :

    1) as-tu essayé la fonction DIR ? elle permet de boucler sur des fichiers qui ne sont pas forcement de fichiers Excel

    2) Pourquoi as tu choisi Excel pour piloter SOLIDWORKS ?

    @ Bientôt

  3. #3
    Candidat au Club Avatar de pbergmann45
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2016
    Messages : 4
    Par défaut Piloter les fichiers solidworks
    Serai-il plus adapté d'utiliser autre chose qu' Excel pour ce que vous voulez faire!
    Je pense que oui: Hta pour l'interface graphique, Shell et VBscript pour sa partie script me semble une solution correcte.
    Cordialement.

  4. #4
    Membre régulier
    Homme Profil pro
    dessinateur industriel
    Inscrit en
    Avril 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 10
    Par défaut
    Merci de vos réponses !

    @ Igloobel :

    1) Je ne connais pas les fonctions des scripts ^^ ! Je débute tout juste alors je lis quelques lignes de codes que je trouve à droite à gauche et j'essaie de comprendre les lignes que je copie/colle pour ma macro et je vois ce que ça donne. Alors non je ne pense pas que j'ai déjà essayé la fonction DIR

    2) En fait si j'utilise Excel c'est que j'ai directement mes tableaux de commande pour la suite. Et que le tableau que je récupère de SolidWorks avec les propriétés me permet de classifier les pièces de mes conceptions par famille avec les filtres et donc de préparer mes dossiers d'envoi un par un. Et surtout vu que je n'y connais rien en programmation les macros Excel me semblaient être un bon moyen de commencer =) !

    @ pbergmann45 :

    Comme je le disais plus haut je débarque tout juste dans le monde des scripts. Je connais bien Excel alors je me suis dis que j'allais commencer avec ça

  5. #5
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    @ pbergmann45 :

    Je connaissais pas HTA et cela semble interessant et je vais m'y pencher

    mais pour notre amis chikchik cela semble un peu compliqué (sans vouloir véxer ou insulter )

    @ chikchik :

    j'ai pas SOLIWORKS mais je vais essayé de t'aidé

    la fonction Dir permet de récupérer tous tes nom de fichiers .SLDPRT ou .SLDDRW

    et pour l'ouverture j'utiliserais ton shell

    voici un exemple avec NOTEPAD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    RetVal = Shell("C:\WINDOWS\NOTEPAD.EXE d:\TreeSys.txt", 1)
    End Sub
    Peux tu faire une copie écran de comment c'est organisé sur ton fichier Excel

    cache les données sensible


    A+

  6. #6
    Membre régulier
    Homme Profil pro
    dessinateur industriel
    Inscrit en
    Avril 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 10
    Par défaut
    Merci de prendre le temps de me répondre Igloobel

    Bon dans l'idée voici le tableau (très peu de pièces en exemples mais la liste peut être longue...) :

    Nom : tableau normal.png
Affichages : 3513
Taille : 27,3 Ko

    Et dans l'idée il faudrait que je puisse ouvrir les pièces restantes dans le tableau après l'application des filtres dans les colonnes, ici le filtre "Pièce usinée" est appliqué sur la colonne "Type de composant" :

    Nom : tableau filtré.png
Affichages : 3279
Taille : 12,9 Ko

    Voilà pour la copie d'écran =) ! Et non t'inquiètes ce n'était ni vexant ni insultant ahahah. Juste terriblement vrai !

    Merci encore pour le coup de main

  7. #7
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    une remarque et une question

    Remarque : si tu pouvais faire une copie écran avec les entêtes de ligne et colonne (A,B,C,D ...) et (1,2,3,4,5....) cela m'arrangerait

    question : ton emplacement est une adresse seule ou un lien hypertexte ?

    A+

  8. #8
    Membre régulier
    Homme Profil pro
    dessinateur industriel
    Inscrit en
    Avril 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 10
    Par défaut
    Bonjour !

    Voici les captures d'écran avec les numéros de lignes et de colonnes :

    Nom : tableau normal.png
Affichages : 3538
Taille : 44,3 Ko

    Nom : tableau filtré.png
Affichages : 3416
Taille : 20,8 Ko

    Pour l'instant l'emplacement est juste chemin mais je pense que je vais une macro de mise en forme du document en utilisant l'option "enregistrer une macro" car il n'y aucune mise en forme lorsque je récupère le tableau via SolidWorks donc je pourrais les passer en lien hypertexte si c'est arrangeant

  9. #9
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    laisse l'adresse comme cela cela évitera de la transformer

    tu as dit dans ton premier post :
    En bref après avoir récupéré le tableau Excel je veux ajouter un filtre de sélection pour pouvoir afficher juste le type de pièce (pièces usinées par exemple) et qu’une macro ouvre tous les fichiers filtrés du tableau dans SolidWorks. Après via l’autre logiciel je lancerai une autre macro pour générer les fichiers neutres voulus mais il s’agit là d’une autre étape que j'ai déjà plus au moins résolu.
    Oubli cela ne marche pas comme cela

    Tu peux filtrer si tu en as besoin pour voir le résultat
    mais ta macro va lire une ligne après l'autre et tester le contenu de la cellule (celle que tu filtres) avec ce que tu veux filtrer

    exemple :
    tu veux "pièce usinée"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    algo:
    -commencer en ligne 3
    - tant que pas dernière ligne faire
    	- si valeur cellule (F+ligne) = "pièce usinée" alors
    		(traitement à faire)
    	 fin si
    	- ligne = ligne +1
      fin tant que (retour boucle)
    PS: bon je reviendrais plus tard une fois que j'aurais fini mon travail qui viens de s'accumuler d'un coup

  10. #10
    Membre régulier
    Homme Profil pro
    dessinateur industriel
    Inscrit en
    Avril 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 10
    Par défaut
    Salut le fil !

    Merci Igloobel pour présenter le code comme tu l'as fait précédemment : c'est beaucoup plus parlant pour moi =) !

    Donc si je comprends bien il faudra juste que je fasse une macro par type de pièces (tournage, fraisage, mécano-soudées et tôlerie) ? Donc en bref quatre "boutons" ? Si j'arrive à un truc comme ça c'est vraiment super =) =) =) !!!

    Merci du coup de main en tout cas ! Et bonne journée !

  11. #11
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Moi je ferai une liste de validation plutôt que 4 boutons ... mais c'est toi qui voit !

    A+

  12. #12
    Membre régulier
    Homme Profil pro
    dessinateur industriel
    Inscrit en
    Avril 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 10
    Par défaut
    Une liste de validation c'est à dire ? Je ne vois pas très bien le concept ^^

    A +

  13. #13
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par chikchik Voir le message
    Une liste de validation c'est à dire ? Je ne vois pas très bien le concept ^^

    A +
    Va voir mon blog tu auras un exemple sur liste de validation (en plus elle est auto-ajustée )
    clic sur le chiffre "1" en face de Billet dans le blog puis "en lire plus..."


    et dis moi si cela te suffit comme explication ... ou pas

    pour moi c'est :
    - une liste de validation (liste de : "Type de Composants")
    - un bouton avec la valeur du type de composant dans la cellule qui a la liste de validation

    cela me parrait plus simple et plus facilement maintenable que de faire 4 boutons (surtout si si un nouveau type de composant apparait)

    tu me dis également si cela te convient

  14. #14
    Membre régulier
    Homme Profil pro
    dessinateur industriel
    Inscrit en
    Avril 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 10
    Par défaut
    Salut !

    Ah oui effectivement cela me paraît mieux le coup de la liste de validation ! Et du coup tu déclares la case de la liste comme variable puis tu demandes au code d'ouvrir toutes les pièces du tableau qui ont en colonne F le même texte ?

    J'ai commencé à fouiller un peu plus en détail ce we et je suis en train de faire un premier jet avec pleins de "trous" dans mon code ou je ne sais pas quoi mettre. Je m'y remets ce soir et j’essaie de poster ça demain si j'ai fini ce que je voulais faire !

    Merci et @+

  15. #15
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    c'est pas grave s'il y a plein de trou on les comblera ensemble

  16. #16
    Membre régulier
    Homme Profil pro
    dessinateur industriel
    Inscrit en
    Avril 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 10
    Par défaut
    bon alors j'ai tenté d'écrire un truc avec ce que je comprenais mais ça ne doit pas donner grand chose ^^. Bon je lache ça un peu en pavé mais s'il y a des questions sur ce que j'ai tenté de faire faut hésiter parce que ça ne doit pas être très clair ahahahah !

    J'ai tenté de déterminer la plage sur laquelle serait effectuée la recherche d'égalité de valeur (entre le type de pièce qui vient des propriétés de SolidWorks (qui se trouve en colonne F) et le type de pièce que je veux ouvrir dans ma liste de validation (que j'ai mis au pif en A8 dans la macro). C'est la variable nb_de_piece. Je ne sais pas si c'est nécessaire d'en passer par là mais ça me paraissait logique qu'il ai un début et une fin pour déterminer où doit se dérouler la recherche

    Ensuite j'ai voulu faire une fonction SI en boucle jusqu'à la fin de la plage que j'ai déterminé juste avant. Je ne pense pas avoir très bien compris ce que j'ai pu trouver sur L'Internet à ce sujet... En bref j'ai trouvé ça et j'ai essayé de l'intégrer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim L as integer
    L = 1
    for L = 1 to Range("B65356").End(xlUp).row
        If Range("B" & L) = 1 Then 
              ' ton traitement
       end if
    next L
    Par contre je ne sais pas si L=1 représente la valeur de l'incrément pour aller à la ligne suivante ? En sachant que la macro était faite pour trouver si la valeur était égale à 1 dans la colonne B ça faisait beaucoup de 1 et je n'ai pas très bien capté ^^.

    Bref fini le suspens voici la plus belle macro de tous les temps =) :

    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
    Sub test()
     
    'Déclaration des variables :
     
       Dim choix_liste As String   'type de pièce choisi dans la liste déroulante pour l'ouverture des pièces
       Dim nb_de_piece As Integer  'nombre de lignes de la colonne F correspondant aux nombres de pièces
       Dim increment As Integer    'incrément de 1 pour effectuer le boucle de recherche ligne par ligne sur la colonne F
       Dim myBool As Boolean       'c'est dans la macro pour ouvrir une pièce sur Solidworks via une macro excel dans mon premier post mais je ne comprends pas ^^
       Dim myError As Long         'c'est dans la macro pour ouvrir une pièce sur Solidworks via une macro excel dans mon premier post mais je ne comprends pas ^^
       Dim myWarning As Long       'c'est dans la macro pour ouvrir une pièce sur Solidworks via une macro excel dans mon premier post mais je ne comprends pas ^^
     
       choix_liste = Range(A8)
       nb_de_piece = Application.WorksheetFunction.CountA(Feuil1.Range("$F:$F")) 'nombre de cellules non vide dans la colonne F, soit le nombre de pièces
       increment = 1
       myBool = Shell("C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe", vbNormalFocus)  'c'est dans la macro pour ouvrir une pièce sur Solidworks via une macro excel dans mon premier post mais je ne comprends pas ^^
     
    'definition de la plage sur lequel va s'appliquer la macro :
     
    For increment = 1 To Range("nb_de_piece").End(xlUp).Row 'le nombre de cellules non vides en F et l'incrément de 1 pour faire la boucle ?
     
    'Boucle tant que cellule non vide :
     
       If Range(increment & nb_de_piece) = "choix_liste" Then 'si le type de pièce en colonne F correspond au choix de la liste alors
     
    'action a effectuer, pour l'instant je copie/colle betement la macro que j'ai mis sur mon premier post :
     
       Set swApp = CreateObject("SldWorks.Application") 'création d'un objet pour permettre de lancer SolidWorks ?
       Set swModel = swApp.OpenDoc6("C:\Users\SONFVER\Desktop\macro\test\01.sldprt", 1, 1, "", myError, myWarning) 'utilisation de l'objet pour ouvrir le fichier avec l'adresse ?
       Set swApp = Nothing: Set swModel = Nothing 'je n'y comprends rien à cette ligne ahahahah. Peut être une supression de l'objet ?
     
     
       End If
    Next L      'on passe à la ligne suivante ?
     
     
    End Sub
    merci pour ceux qui jettront un oeil à mon chef d'oeuvre

  17. #17
    Membre régulier
    Homme Profil pro
    dessinateur industriel
    Inscrit en
    Avril 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 10
    Par défaut
    Bonjour le fil !

    Bon j'ai continuer à fouiller l'Internet et j'y suis presque !!! Il ne me reste qu'un détail à régler mais je pense qu'il est de taille... Bon voici le code après modif :
    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
    Sub Macro3()
     
    'Déclaration des variables :
     
       Dim choix_liste As String     'type de pièce choisi dans la liste déroulante pour l'ouverture des pièces
       Dim nb_de_piece As Integer    'nombre de lignes de la colonne F correspondant aux nombres de pièces
       Dim increment As Integer      'incrément de 1 pour effectuer la boucle de recherche ligne par ligne sur la colonne F
       Dim myCell As String          'variable pour fusionner l'incrément et la colonne F pour la plage de recherche
       Dim path As String            'chemin du dossier d'enregistrement de la pièce
       Dim nom As String             'nom de la pièce
       Dim path_complete As String   'chemin complet de la pièce
       Dim myBool As Boolean
       Dim myError As Long, myWarning As Long
     
    'Initialisation de certaines variables:
     
       choix_liste = Range("E6")
       nb_de_piece = Application.WorksheetFunction.CountA(Feuil1.Range("$I:$I")) 'nombre de cellules non vide dans la colonne F, soit le nombre de pièces
       increment = 1
       myBool = Shell("C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe", vbNormalFocus)
     
    'ouverture de SolidWorks :
     
    Set swApp = CreateObject("SldWorks.Application")
     
    'definition de la plage sur lequel va s'appliquer la macro :
     
    For increment = 1 To nb_de_piece
     
       myCell = "I" & (increment + 9)            'concatène le nom de la cellule à partir de F5 pour l'utiliser avec Range()
       If Range(myCell) = choix_liste Then       'si le type de pièce en colonne F correspond au choix de la liste alors
       path = Range("J" & (increment + 9))       'extraction du chemin du dossier
       nom = Range("G" & (increment + 9))        'extraction du nom de la pièce
       path_complete = path + nom & ".sldprt"    'création du chemin complet avec extension
       Range(myCell).Activate                    'Selectionne la cellule = action à effectuer pour vérification pas à pas
     
       Set swModel = swApp.OpenDoc6(path_complete, 1, 1, "", myError, myWarning)
       Set swApp = Nothing: Set swModel = Nothing
     
       End If
     
    Next increment 'on passe à la ligne suivante
     
    End Sub
     
    'Code récupéré sur internet pour ouverture pièce SolidWorks avec chemin complet :
     
    'Sub Bouton1_Cliquer()
     
    'Dim myBool As Boolean
    'Dim myError As Long, myWarning As Long
     
    'myBool = Shell("C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe", vbNormalFocus)
     
    'Set swApp = CreateObject("SldWorks.Application")
    'Set swModel = swApp.OpenDoc6("C:\Users\SONFVER\Desktop\macro\test\01.sldprt", 1, 1, "", myError, myWarning)
    'Set swApp = Nothing: Set swModel = Nothing
     
    'End Sub
    J'ai fait une lecture pas à pas du code sur le fichier Excel ci-dessus en image :

    - il m'ouvre bien SolidWorks avant de commencer la boucle,
    - il me fait bien la boucle une première fois sur une ligne sur laquelle il n'est pas censé s’arrêter car la condition n'est pas validée,

    Nom : première boucle.jpg
Affichages : 3263
Taille : 27,9 Ko

    - il me fait bien la boucle une deuxième fois sur une ligne sur laquelle la condition est validée et il m'ouvre bien la première pièce sur Solidworks (incroyable ^^)

    Nom : deuxième boucle.jpg
Affichages : 3251
Taille : 58,0 Ko

    - par contre pour la troisième boucle sur laquelle la condition est vraie là il plante. Il génère le bon chemin complet de la pièce (image de gauche) mais j'ai un message d'erreur (image de droite) :

    Nom : troisième boucle.jpg
Affichages : 3369
Taille : 220,9 KoNom : message d'erreur.jpg
Affichages : 3145
Taille : 18,9 Ko

    En fait le problème, je pense, est qu'il essai d'ouvrir la pièce de la troisième boucle en ré-ouvrant une autre fenêtre de SolidWorks et non en ouvrant le fichier dans la fenêtre existante... Mais peut être est-ce autre chose je n'en sais rien hein ! Sur le gestionnaire de tache je n'ai pas d'autre SolidWorks ouvert donc je ne sais pas trop... Merci de votre aide !

  18. #18
    Membre régulier
    Homme Profil pro
    dessinateur industriel
    Inscrit en
    Avril 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 10
    Par défaut Eureka !!!
    C'est bon j'ai trouvé ! J'ai bricolé un peu au pif et j'ai eu un gros coup de bol ahahahahah ! Voilà la bête :

    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
    Sub Macro3()
     
    'Déclaration des variables :
     
       Dim choix_liste As String     'type de pièce choisi dans la liste déroulante pour l'ouverture des pièces
       Dim nb_de_piece As Integer    'nombre de lignes de la colonne F correspondant aux nombres de pièces
       Dim increment As Integer      'incrément de 1 pour effectuer la boucle de recherche ligne par ligne sur la colonne F
       Dim myCell As String          'variable pour fusionner l'incrément et la colonne F pour la plage de recherche
       Dim path As String            'chemin du dossier d'enregistrement de la pièce
       Dim nom As String             'nom de la pièce
       Dim path_complete As String   'chemin complet de la pièce
       Dim myBool As Boolean
       Dim myError As Long, myWarning As Long
     
    'Initialisation de certaines variables:
     
       choix_liste = Range("E6")
       nb_de_piece = Application.WorksheetFunction.CountA(Feuil1.Range("$I:$I")) 'nombre de cellules non vide dans la colonne F, soit le nombre de pièces
       increment = 1
     
     'ouverture de SolidWorks :
     
       myBool = Shell("C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe", vbNormalFocus)
       Application.Wait Now + TimeValue("0:00:10")
     
    'Set swApp = CreateObject("SldWorks.Application")
     
    'definition de la plage sur lequel va s'appliquer la macro :
     
    For increment = 1 To nb_de_piece
     
       myCell = "I" & (increment + 9)            'concatène le nom de la cellule à partir de F5 pour l'utiliser avec Range()
       If Range(myCell) = choix_liste Then       'si le type de pièce en colonne F correspond au choix de la liste alors
       path = Range("J" & (increment + 9))       'extraction du chemin du dossier
       nom = Range("G" & (increment + 9))        'extraction du nom de la pièce
       path_complete = path + nom & ".sldprt"    'création du chemin complet avec extension
       Range(myCell).Activate                    'Selectionne la cellule = action à effectuer pour vérification pas à pas
     
       Set swApp = CreateObject("SldWorks.Application")                                              'ouverture SolidWorks
       Set swModel = swApp.OpenDoc6(path_complete, 1, 1, "", myError, myWarning)                      'ouverture fichier
       'swModel.SaveAs2 Left(path, (Len(path) - 6)) & "step", 0, True, False                          'Enregistrement en STEP
       'swApp.CloseDoc path
       Set swApp = Nothing: Set swModel = Nothing
     
       End If
     
    Next increment 'on passe à la ligne suivante
     
    End Sub
     
    'Code récupéré sur internet pour ouverture pièce SolidWorks avec chemin complet :
     
    'Sub Bouton1_Cliquer()
     
    'Dim myBool As Boolean
    'Dim myError As Long, myWarning As Long
     
    'myBool = Shell("C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe", vbNormalFocus)
     
    'Set swApp = CreateObject("SldWorks.Application")
    'Set swModel = swApp.OpenDoc6("C:\Users\SONFVER\Desktop\macro\test\01.sldprt", 1, 1, "", myError, myWarning)
    'Set swApp = Nothing: Set swModel = Nothing
     
    'End Sub
    Merci à tous ceux qui m'ont aidé =) !

    A bientôt !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Macro ouverture fichiers
    Par leolomi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/02/2016, 15h12
  2. [XL-2010] Création macros pour fichier devis
    Par Pupul25 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 06/03/2013, 09h36
  3. [Toutes versions] Macro ouverture fichier Excel + formatage
    Par asengs dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/02/2011, 11h44
  4. Macro ouverture Fichier puis enregistrement : Comment la simplifier ?
    Par mattwarend dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/11/2008, 11h02
  5. [VBA-E] Macro ouverture fichier déja ouvert
    Par bhaal76 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 14h30

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