Google+

Modification de l'exemple du tutos

Apprendre à programmer avec le VBA

Modérateurs: xavierb, annwn

Modification de l'exemple du tutos

Messagepar Steeve Osteen » Jeu 27 Sep 2012 11:11

annwn a écrit:
UBound(monTab) donne un chiffre qui correspond au nombre de parties de mon Variant monTab
Donc quand j'écris Interm = monTab(UBound(monTab)) , je mets dans mon string Interm la chaine de caractère qui correspond à la dernière partie de mon tableau...donc mon nom de fichier avec l'extension.
Ensuite pour faire sauter l'extention j'utilise Mid qui me renvoie une chaine de caractère (un string !) commençant au caractère n°1 et de longueur :la longueur de mon string -7 caractères (qui correspondent au point plus les 6 lettre d'extension ) ;)



pour que ce soit valable dans tout les cas, il aurait pas mieux valu refaire une découpe avec le . comme séparateur comme ça quelque soit l'extension, ça marche.. ??

soit

Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
Option Explicit
Sub main()

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim monTexte As String, Interm As String, monTab As Variant , interm2 as Variant

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

monTab = Split(swModel.GetPathName, "\", -1)
Interm = monTab(UBound(monTab))
interm2 = Split(interm, ".", -2)
montexte = interm2(UBound(interm2))
monTexte = "Bonjour, le document actif est :" & vbCr & monTexte
MsgBox monTexte

End Sub
 
Parsed in 0.003 seconds, using GeSHi 1.0.8.10


enfin je crois
aucun support ne sera assuré par MP. toute demande par ce biais sera ignorée.
Avatar de l’utilisateur
Steeve Osteen
Administrateur du site
 
Messages: 3015
Inscription: Ven 22 Juin 2012 15:40
Localisation: Normandie
Version de SolidWorks et SP: SolidWorks 2014 SP2.0

Share On:

Partagez sur Facebook Facebook Partagez sur Twitter Twitter

Re: Macros : les bases ...

Messagepar annwn » Jeu 27 Sep 2012 12:22

oui ça marchera aussi :)
Programmer, c'est bien; programmer utile, c'est mieux ...
Avatar de l’utilisateur
annwn
Maestro
 
Messages: 938
Inscription: Dim 1 Juil 2012 18:40
Localisation: Lyon
Version de SolidWorks et SP: SW 2012 SP 5.0

Re: Macros : les bases ...

Messagepar Steeve Osteen » Jeu 27 Sep 2012 12:48

je viens de corriger mon bout de code avec interm2 as Variant (je ne l'avais pas déclaré)

par contre sur le paramétrage de la fonction Split, je ne suis pas parfaitement sur de mon coup,
le paramétre -1 de split permet de fractionner l'ensemble des parties avec pour délimiteur mon point.
Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
interm2 = Split(interm, ".", -1)
 
Parsed in 0.001 seconds, using GeSHi 1.0.8.10

par contre maintenant comment récupérer l'avant dernière valeur du tableau interm2?

la docs ubound du msdn ne m'aide pas vraiment
http://msdn.microsoft.com/fr-fr/library/95b8f22f(v=VS.80).aspx
aucun support ne sera assuré par MP. toute demande par ce biais sera ignorée.
Avatar de l’utilisateur
Steeve Osteen
Administrateur du site
 
Messages: 3015
Inscription: Ven 22 Juin 2012 15:40
Localisation: Normandie
Version de SolidWorks et SP: SolidWorks 2014 SP2.0

Re: Modification de l'exemple du tutos

Messagepar Steeve Osteen » Ven 28 Sep 2012 10:26

personne n'aurait d'idée?
aucun support ne sera assuré par MP. toute demande par ce biais sera ignorée.
Avatar de l’utilisateur
Steeve Osteen
Administrateur du site
 
Messages: 3015
Inscription: Ven 22 Juin 2012 15:40
Localisation: Normandie
Version de SolidWorks et SP: SolidWorks 2014 SP2.0

Re: Modification de l'exemple du tutos

Messagepar annwn » Ven 28 Sep 2012 12:11

Si attends je te mets ça ...
Programmer, c'est bien; programmer utile, c'est mieux ...
Avatar de l’utilisateur
annwn
Maestro
 
Messages: 938
Inscription: Dim 1 Juil 2012 18:40
Localisation: Lyon
Version de SolidWorks et SP: SW 2012 SP 5.0

Re: Modification de l'exemple du tutos

Messagepar annwn » Ven 28 Sep 2012 12:14

Steeve Osteen a écrit:
Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
Option Explicit
Sub main()

Dim swApp As SldWorks.SldWorks , swModel As SldWorks.ModelDoc2
Dim monTexte As String, Interm As String, monTab As Variant , interm2 as Variant

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

monTab = Split(swModel.GetPathName, "\", -1)
Interm = monTab(UBound(monTab))
interm2 = Split(interm, ".", -1)
montexte = interm2(UBound(interm2)-1)
monTexte = "Bonjour, le document actif est :" & vbCr & monTexte
MsgBox monTexte

End Sub
 
Parsed in 0.002 seconds, using GeSHi 1.0.8.10
ça, ça devrait être bon ! :D

Il faut enlever 1 à l'index de interm2 donc UBound(interm2)-1 pour avoir l'avant dernier

Ah oui mais si tu as un point "." dans ton nom de fichier ça ne marche plus :(
Attends je modifie

@suivre...
Programmer, c'est bien; programmer utile, c'est mieux ...
Avatar de l’utilisateur
annwn
Maestro
 
Messages: 938
Inscription: Dim 1 Juil 2012 18:40
Localisation: Lyon
Version de SolidWorks et SP: SW 2012 SP 5.0

Re: Modification de l'exemple du tutos

Messagepar annwn » Ven 28 Sep 2012 12:25

annwn a écrit:
Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
Option Explicit
Sub main()

Dim swApp As SldWorks.SldWorks , swModel As SldWorks.ModelDoc2
Dim monTexte As String, Interm As String, monTab As Variant , interm2 as Variant,i as Integer

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

monTab = Split(swModel.GetPathName, "\", -1)
Interm = monTab(UBound(monTab))
interm2 = Split(interm, ".", -1)
For i=0 to UBound(interm2)-1
 montexte = montexte & "." & interm2(i)
Next i
MsgBox "Bonjour, le document actif est :" & vbCr & monTexte

End Sub
 
Parsed in 0.003 seconds, using GeSHi 1.0.8.10
[/quote]
Du coup faut concatener les différents index de ton variant interm2 jusqu'à l'avant dernier ;)
Programmer, c'est bien; programmer utile, c'est mieux ...
Avatar de l’utilisateur
annwn
Maestro
 
Messages: 938
Inscription: Dim 1 Juil 2012 18:40
Localisation: Lyon
Version de SolidWorks et SP: SW 2012 SP 5.0

Re: Modification de l'exemple du tutos

Messagepar Steeve Osteen » Ven 28 Sep 2012 15:11

pourquoi tu concaténe?
normalement avec le split du interm2 tu as deux cases dans ton tableau interm et tu cherches juste à afficher la première case (ou l'avant dernière au choix..

je pense qu'il y a un truc qui manque dans ma compréhension le split renvoie bien un tableau de char à une dimension?
aucun support ne sera assuré par MP. toute demande par ce biais sera ignorée.
Avatar de l’utilisateur
Steeve Osteen
Administrateur du site
 
Messages: 3015
Inscription: Ven 22 Juin 2012 15:40
Localisation: Normandie
Version de SolidWorks et SP: SolidWorks 2014 SP2.0

Re: Modification de l'exemple du tutos

Messagepar annwn » Sam 29 Sep 2012 07:59

Oui ce que tu dis fonctionne si tu n'as pas de point dans le nom de ton fichier mais imaginons que ton fichier se nomme :
1234.567.SLDPRT

dans ce cas montexte = interm2(UBound(interm2)-1) = "567"

donc il faut concatener interm2(0) avec interm2(1) et mettre un point au milieu d'où :
For i=0 to UBound(interm2)-1
montexte = montexte & "." & interm2(i)
Next i
Programmer, c'est bien; programmer utile, c'est mieux ...
Avatar de l’utilisateur
annwn
Maestro
 
Messages: 938
Inscription: Dim 1 Juil 2012 18:40
Localisation: Lyon
Version de SolidWorks et SP: SW 2012 SP 5.0

Re: Modification de l'exemple du tutos

Messagepar Steeve Osteen » Sam 29 Sep 2012 10:04

Ok ça y est j'ai compris.. Merci annwn
aucun support ne sera assuré par MP. toute demande par ce biais sera ignorée.
Avatar de l’utilisateur
Steeve Osteen
Administrateur du site
 
Messages: 3015
Inscription: Ven 22 Juin 2012 15:40
Localisation: Normandie
Version de SolidWorks et SP: SolidWorks 2014 SP2.0

Re: Modification de l'exemple du tutos

Messagepar Steeve Osteen » Lun 14 Jan 2013 14:11

je reviens sur ton exemple, mais je viens de tomber la dessus:

Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
Property FileName As String

Dim instance As IDocumentSpecification
Dim value As String
 
instance.FileName = value
 
value = instance.FileName
 
Parsed in 0.002 seconds, using GeSHi 1.0.8.10


ça n'aurai pas été mieux que le

swModel.GetPathName ?
aucun support ne sera assuré par MP. toute demande par ce biais sera ignorée.
Avatar de l’utilisateur
Steeve Osteen
Administrateur du site
 
Messages: 3015
Inscription: Ven 22 Juin 2012 15:40
Localisation: Normandie
Version de SolidWorks et SP: SolidWorks 2014 SP2.0

Re: Modification de l'exemple du tutos

Messagepar titifonky » Lun 14 Jan 2013 19:49

Bonjour,

Je m'immisce dans la conversation mais n'est il pas plus facile de travailler avec Scripting.FileSystemObject

Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
Dim fso As New FileSystemObject
Dim NomDuFichier As String
NomDuFichier = fso.GetFileName(CheminDuFichier)
 
Parsed in 0.001 seconds, using GeSHi 1.0.8.10


par contre il faut mettre "Microsoft Scripting Runtime" en référence dans VBA
http://www.le-metal.net, sur la métallerie
titifonky
Disciple
 
Messages: 332
Inscription: Jeu 13 Déc 2012 01:03

Re: Modification de l'exemple du tutos

Messagepar annwn » Mar 15 Jan 2013 13:39

Steeve Osteen a écrit:je reviens sur ton exemple, mais je viens de tomber la dessus:

Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
Property FileName As String

Dim instance As IDocumentSpecification
Dim value As String
 
instance.FileName = value
 
value = instance.FileName
 
Parsed in 0.002 seconds, using GeSHi 1.0.8.10


ça n'aurai pas été mieux que le

swModel.GetPathName ?
Apparemment filename ne fonctionne qu'avec un composant dans un assemblage mais pas sur le fichier ouvert ;)
Programmer, c'est bien; programmer utile, c'est mieux ...
Avatar de l’utilisateur
annwn
Maestro
 
Messages: 938
Inscription: Dim 1 Juil 2012 18:40
Localisation: Lyon
Version de SolidWorks et SP: SW 2012 SP 5.0

Re: Modification de l'exemple du tutos

Messagepar Steeve Osteen » Mar 15 Jan 2013 14:33

ah ben comme ça le problème est réglé. :roll:
aucun support ne sera assuré par MP. toute demande par ce biais sera ignorée.
Avatar de l’utilisateur
Steeve Osteen
Administrateur du site
 
Messages: 3015
Inscription: Ven 22 Juin 2012 15:40
Localisation: Normandie
Version de SolidWorks et SP: SolidWorks 2014 SP2.0


Retourner vers Apprentissage

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron