Aide macro

Bonjour,

 

Je suis en train de chercher un moyen de récuperer les propriétés d'emplacement de ma pièce

 

Exemple : Ma pièce est enregistrée dans un dossier "Affaire X", dans un dossier "Client Y"

 

Je voudrais que sur mon cartouche apparaissent le nom du dossier client et le nom de l'affaire.

 

Docn je veux rcuperer le chemin d'enregistrement et ne faire apparaître que le nom du client et de l'affaire, car souvent j'oubli de 'lindiquer et je m'en rend compte une fois l'impression fini.

 

Lucas m'avait aiguillé vers une macro.

 

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
 
Sub main()
 
 
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
 
 
swModel.AddCustomInfo2 "File Path", swCustomInfoText, Left(swModel.GetPathName, InStrRev(swModel.GetPathName, "\"))
 
 
End Sub
La macro n'a pas d'erreur, mais je ne sais pas trop comment faire après.
Pour que ces info se retrouve sur mon cartouche.
Pour info, je passe par un formulaire de propriété perso.
 
Merci! =)
Salut, en fait la macro doit ajouter une propriété personnalisée appelée "File Path" que tu peux utiliser ensuite dans ton cartouche ou dans une annotation.
1 « J'aime »

Docn la proprit perso "File path" me donne le nom du dossier client et le nom du dossier d'affaire?

 

Comment les difrencier? j'aurai voulu avoir le nom du client dans une case, et de l'affaire dans une autre.

 

C'est possible?

Bon j'ai fait un test sur une annotation.

 

Je me retrouve avec le chemin complet comme si j'avais mis la propriété nom du dossier.

Tu peux mettre un exemple de chemin en précisant le nom du client et de l'affaire ?
1 « J'aime »

Voici le screenshot

 

Je voudrais mettre "Client X" dans la case client et "Affaire Y" dans la case chantier ou Ref.

 

 


macro.png

Alors il faut ajouter avant le End Sub la partie suivante :

 

filepath = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, "\")) 
fin = Len(filepath) - 1
pos_cli = InStrRev(filepath, "\", fin)
client = Mid(filepath, pos_cli + 1, fin - pos_cli)
pos_aff = InStrRev(filepath, "\", pos_cli - 1)
affaire = Mid(filepath, pos_aff + 1, pos_cli - 1 - pos_aff)

swModel.AddCustomInfo2 "Client", swCustomInfoText, client

swModel.AddCustomInfo2 "Affaire", swCustomInfoText, affaire
 

1 « J'aime »

Il y a probablement une solution plus simple, mais au moins ça fonctionne !

La macro ajoutera 2 propriétés personnalisées en plus que tu pourras utiliser dans ton cartouche :

"Client" pour le nom du client

"Affaire" pour le numéro d'affaire

 

1 « J'aime »

Du moment que ça fonctionne, ça me va!

 

ça me parait niquel comme macro, mais j'ai une erreur sur la ligne client= Mid (FilePath, po_cli+1, fin-pos_cli)

En effet tu as une erreur car tu n'as pas bien copié collé !

C'est pos_cli et non po_cli 

1 « J'aime »

Edit : suppression doublon

1 « J'aime »

Non, j'ai juste mal retapé sur Lynkoa

 

j'ai bien mis : client = Mid(FilePath, pos_cli + 1, fin - pos_cli)


macros.png

Etrange, quelle est l'erreur ?

1 « J'aime »

Erreur d'execution 5

 

Argument ou appel de procédure incorrect

Tu sèches Lucas? :p ^^

1 « J'aime »
Désolé pas eu le temps de tester plus en profondeur, je regarde ça ce soir.
1 « J'aime »

Pas de soucis Lucas, c'est sympa de ta part!

 

Je fais ça en fil rouge, donc ce n'est pas urgentissime ;)

En tout cas, elle a l'air très bien ta macro. Tu gères!

Il faudrait vraiment que je me forme là dessus....

 

Bonne fin de journée!

1 « J'aime »

Désolé je ne comprends pas, chez moi ça fonctionne !

Je te mets en PJ le fichier qui marche chez moi pour que tu testes...

Merci pour les compliments et bonne fin de journée à toi aussi.


chemin.swp

Je ne coprends pas non plus...

 

Chez moi ou au bureau, toujours la même erreur.

 

Je suis sous 2014.

 

Un petit roman photo? si tu as le temps bien sur!

Tu sais utiliser le debug pour les macros ? Sinon je peux prendre le contrôle de ton ordinateur à distance ?