Macro famille de piece pour un dossier

Bonjour,

Je suis à la recherche d'une macro qui me permettrai d'extraire la famille de pièce d'un fichier pièce.

Et que cette macro s'effectue pour l'ensemble d'un dossier (contenant X fichier pièce)

Je précise que les pièces n'ont pas la famille pièce de créer.

Ce qui m'intéresse est de récupérer UNE propriété commune à toute mes pièces dans un fichier Excel.

Les idées sont les bienvenues.

Merci

1 « J'aime »

Bonjour,

Je partage une macro que j’ai fait qui a la plupart des fonctions que tu as besoin (recherche dans un dossier et sous dossier des pièces SW ; lecture et modification des propriétés personnalisées ; renseignement d’un fichier texte)

Attention c’est un peut brouillon car non finaliser


macrorecusive.txt

Bonjour slauzeral,

Mais ta macro ne m'aide pas énormément.

Merci de ton aide !

1 « J'aime »

Salut,

Pour être sur de bien comprendre. Tu veux une macro qui :

  1. Boucle les fichiers .sldprt et .sldasm d'un dossier
  2. Récupère une propriété de chacun des fichiers
  3. Ajoute la valeur de la propriété dans un tableau Excel.

 

2 « J'aime »

Salut remrem,

Quand tu dis "boucle les fichiers" qu'entends tu ?

Sinon oui, je précise qu'il y a uniquement des fichiers .sldprt

Pour la suite c'est ça,

  1. Récupère une propriété de chacun des fichiers
  2. Ajoute la valeur de la propriété dans un tableau Excel
1 « J'aime »

 Donc

  1. Recherche les fichiers .sldprt d'un dossier
  2. Récupère une propriété de chacun des fichiers
  3. Ajoute la valeur de la propriété dans un tableau Excel.

Quelle est le nom de la propriété ?

Faut il remonter dans le classeur des informations sur chacun des fichiers : Nom, chemin, etc ?

Faut-il rechercher également dans les sous dossiers ?

Est ce que tu as déjà réalisé d'autres macro ?

Est-il possible d'avoir un dossier avec des fichiers cohérents pour tester ?

Je sais cela fait beaucoup de question, mais c'est indispensable avant de coder n'importe quoi. ;-)

 

2 « J'aime »

Oui c'est exactement ça :

"Recherche les fichiers .sldprt d'un dossier

Récupère une propriété de chacun des fichiers

Ajoute la valeur de la propriété dans un tableau Excel."

Pour tes questions :

Quelle est le nom de la propriété ? $PROPRIETE@Nombre de Trou.

Faut il remonter dans le classeur des informations sur chacun des fichiers : Nom, chemin, etc ? Non, uniquement le champ de la propriété.

Faut-il rechercher également dans les sous dossiers ? Non, les pièces sont directement dans un dossier.

Est ce que tu as déjà réalisé d'autres macro ? Pour les macro je suis arrivé "à taton" en récupérant des morceaux à droite à gauche...

Je joins un dossier avec 5 pièces pour tester.


lynkoa.zip

Salut,

 

Tu devrais regarder avec cette formule:

Sub parametre()

Dim retVal As Boolean
Dim propriete As String
piece = Sheets("Chemin_pièce").Range("A1") 'Ouvre les liens des fichiers

Set swApp = CreateObject("SldWorks.Application")

       
        Set Part = swApp.OpenDoc6(piece, 1, 0, "", longstatus, longwarnings)

    Set swModel = swApp.ActiveDoc
    Set swConfigMgr = swModel.ConfigurationManager
    Set swConfig = swConfigMgr.ActiveConfiguration
    Z = swConfig.Name                                                  'Recupere le nom de la configuration
               
        propriete = swModel.GetCustomInfoValue(Z, "Poids")
        Sheets("Feuil1").Range("A1").Value = propriete            'copie la valeur de la propriété "poids" dans la feuille Excel

End Sub

 

Tu devrais essayer avec ça, après il faut que tu créée la boucle te permettant de autour de ça.

 

Bon courage,

1 « J'aime »

Salut PierrotDls,

Merci pour la macro, 

C'est un très bon début !!!

Elle me permet de récupérer la propriété pour la pièce définie.

Maintenant il me faut trouver :

- Comment ouvrir les fichier ".sldprt" d'un dossier et non un fichier précis.

- D'incrémenter la cellule "A1" pour que les propriétés se remplissent les unes en dessous des autres.

Merci !

Bonsoir,

Ci-joint un bout de code pour scanner le dossier.

Suffit d'ajouter les fonctions pour récupérer la propriétée recherchée et ça devrait fonctionner.


scan_dossier.txt
1 « J'aime »

Salut Cyril.f

Merci pour la macro,

Mais quand j'ajoute les ligne de récupération de ma propriété j'ai direct une erreur de compilation.

Dim fso As FileSystemObject 

Type défini par l'utilisateur non défini.

Si tu peux m'aider... Merci

Bonjour,

Faut activer les références suivantes dans l'éditeur vba (outils> Références):

Microsoft Scripting Runtime

Solidworks 20xx type library

1 « J'aime »

Oui effectivement c'est ce que je viens de voir.

Du coup parfait (fin la macro n'est surement pas la plus propre et la plus simple mais elle fonctionne)

Merci !