Macro VBA : Appel de plusieurs lignes de codes
  • Topic:
    • SOLIDWORKS

  • 3 réponses
  • 1951 vues

Par c.riviere Le 13 mars 2017

Bonjour à tous,

Je conçois une macro depuis le début d'année pour automatiser des mises en plans. Suivant mes pièces elles pocèdes des options que j'ai paramétré et certaines de ses options sont des couples de deux options. On m'a dis récement que plutôt que faire copier / coller pour cette dernière il était possible de faire comme des appelles pour que ma macro sois plus compréhensible mais je ne sais absolument pas comment m'y prendre.

Je vous donne comme exemple l'option n°1 que j'ai paramétré comme ci-dessous, de plus la selection de chaque options s'effectue suivant la valeur de "U" exmple : U=1 alors réaliser l'option n°1.

  ElseIf U = 1 Then

boolstatus = Part.Extension.SelectByID2("Plan de droite", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
If O < 6 / 1000 Then
Set SkCircle = Part.SketchManager.CreateCircle(-Longueur / 1000 - M + 0.0035, 0, 0, -Longueur / 1000 - M + 0.0035, -0.001, 0)
ElseIf O >= 6 / 1000 Then
Set SkCircle = Part.SketchManager.CreateCircle(-Longueur / 1000 - M + 0.0035, 0, 0, -Longueur / 1000 - M + 0.0035, -0.001, 0)
End If
boolstatus = Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
Part.FeatureManager.FeatureCut False, False, False, 1, 1, 0.04, 0.04, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, 0, 1, 1
Part.SelectionManager.EnableContourSelection = 0

L'option que j'essaye de paramétré plus courtement est la n°5 qui fusionne l'option n°1 et n°2.

Merci d'avance pour votre attention à tous

Meilleure réponse

rroblin | 1005 point(s)

Bonjour,

Le conseille que l'on t'a donné pour alleger ton code est d'utiliser la fonction "call"

Par exemple :

Dans ton module principal

Sub macro 1

if toto = 1

Call fonction 1

if toto =2

Call fonction 2

if toto =3

Call fonction 3

End sub

Sur d'autres modules

Sub fonction 1

Beaucoup de ligne
Beaucoup de ligne
Beaucoup de ligne
Beaucoup de ligne

End sub

Sub fonction 2

Beaucoup de ligne
Beaucoup de ligne
Beaucoup de ligne
Beaucoup de ligne

End sub

Sub fonction 3

Beaucoup de ligne
Beaucoup de ligne
Beaucoup de ligne
Beaucoup de ligne

End sub

Cela te permets d'avoir plusieurs bloc de petite taille et lisible plutôt qu'un seul bloc illisible ou tu galères à retrouver tes petits.

Dans ton cas, tu auras autant de fonctions que d'option, chacun dans leur "Sub" puis une "Sub" qui fait les tests et appelle les fonctions qui correspondent.

En espérant t'avoir aidé.

a+

Rémi

Les autres réponses

MaD | 4647 point(s)

Select case U

case 1, 2, 5

if U = 1 OR U=5 then

'Chose a faire

end if

if U = 2 OR U=5 then

'Chose a faire

end if

Case 3

Case 4

Case Else

End Select

rroblin | 1005 point(s)

Bonjour,

Le conseille que l'on t'a donné pour alleger ton code est d'utiliser la fonction "call"

Par exemple :

Dans ton module principal

Sub macro 1

if toto = 1

Call fonction 1

if toto =2

Call fonction 2

if toto =3

Call fonction 3

End sub

Sur d'autres modules

Sub fonction 1

Beaucoup de ligne
Beaucoup de ligne
Beaucoup de ligne
Beaucoup de ligne

End sub

Sub fonction 2

Beaucoup de ligne
Beaucoup de ligne
Beaucoup de ligne
Beaucoup de ligne

End sub

Sub fonction 3

Beaucoup de ligne
Beaucoup de ligne
Beaucoup de ligne
Beaucoup de ligne

End sub

Cela te permets d'avoir plusieurs bloc de petite taille et lisible plutôt qu'un seul bloc illisible ou tu galères à retrouver tes petits.

Dans ton cas, tu auras autant de fonctions que d'option, chacun dans leur "Sub" puis une "Sub" qui fait les tests et appelle les fonctions qui correspondent.

En espérant t'avoir aidé.

a+

Rémi

c.riviere | 978 point(s)

Merci beaucoup à vous deux pour vos réponses je vais mettre tout ça en pratique maintenant

a+