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 :
- Boucle les fichiers .sldprt et .sldasm d'un dossier
- Récupère une propriété de chacun des fichiers
- 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,
- Récupère une propriété de chacun des fichiers
- Ajoute la valeur de la propriété dans un tableau Excel
1 « J'aime »
Donc
- 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.
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 !