aide pour macro cartouche svp

Voir le sujet précédent Voir le sujet suivant Aller en bas

aide pour macro cartouche svp

Message par mouss le Jeu 22 Sep 2016 - 21:26

Salut,
J'ai un souci sur une macro pour remplir mon cartouche catia v5:
La macro en question fonctionne bien sur une variable " Description", mais je n'arrive pas a mettre en place les autres variable que j'ai rajouter dans le userform "Numero"-"echelle" et "date".
Une âme charitable pourrai me donner un coup de main svp.
merci.


macro:


Public NameDraw As String
Public DecoupageChaine As Variant
Public ConteurPart As Integer
Public CountVieuw As Integer
Public NBParam As Integer
Public NameParam As String
Public CountNote As Integer
Public MaNote02 As DrawingText
Sub CATMain()

UserForm1.Show

End Sub
Public Property Get DrawDocument() As DrawingDocument
Set DrawDocument = CATIA.ActiveDocument
End Property
Public Property Get param() As Parameters
Set param = DrawDocument.Parameters
End Property
Public Property Get Calque() As DrawingSheet
Set Calque = DrawDocument.Sheets.ActiveSheet
End Property
Public Property Get AcView() As DrawingViews
Set AcView = Calque.Views
End Property
Public Property Get MaNote() As DrawingTexts
Set MaNote = Calque.Views.ActiveView.Texts
End Property
Public Function ChargeParam()
UserForm1.Projet.Caption = "Projet"
SplitName
UserForm1.Label1.Caption = NameDraw
'
NBParam = param.Count
For i = 1 To NBParam
   NameParam = param.Item(i).Name
       If NameParam = "Description" Then
           UserForm1.TxtDescription.Text = param.Item(i).ValueAsString
       End If
Next i
'
End Function
Public Function ChangeParam()
Dim NouveauDescription As String
NouveauDescription = UserForm1.TxtDescription.Text

For i = 1 To NBParam
AncienParam = param.Item(i).Name
  If AncienParam = "Description" Then
     param.Item(i).ValuateFromString (NouveauDescription)
  End If
Next i

End Function
Public Function RempliCart()
CountVieuw = AcView.Count
For k = 1 To CountVieuw
Set MaVieuw = AcView.Item(k)
  If MaVieuw.Name = "Background View" Then
  AcView.Item(k).Activate
  End If
Next
'
Dim Description As String
Description = UserForm1.TxtDescription.Text
CountNote = MaNote.Count
'
For k = 1 To CountNote
Set MaNote02 = MaNote.Item(k)
  If MaNote02.Name = "Description" Then
  MaNote02.Text = Description
  End If
Next
'

'
For k = 1 To CountVieuw
Set MaVieuw = AcView.Item(k)
  If MaVieuw.Name = "Main View" Then
  AcView.Item(k).Activate
  End If
Next

End Function
Public Function SplitName()
NameDraw = DrawDocument.Name
DecoupageChaine = Split(NameDraw, ".")
'
ConteurPart = 0
'
  For Each Part In DecoupageChaine
     ConteurPart = ConteurPart + 1
  Next
End Function


lien vers la macro: ul.to/98di1f2i

mouss
timide
timide

Messages : 2
Date d'inscription : 22/09/2016
Localisation : RIVES SUR FURE

Revenir en haut Aller en bas

Re: aide pour macro cartouche svp

Message par raphael_59240 le Sam 1 Oct 2016 - 0:51

Bonjour,

je viens de regarder ton programme et je pense que tu devrais le revoir complètement, tu utilises beaucoup de ligne et c'est un peu le fouillis ( sans te vexe).
le conseil que je te donne:
1- revois tes déclarations de variables voici un exemple :
Code:
'code à mettre à la place du code de ton bouton (valider, remplir....?)

Private sub Valider_click()

dim NameDraw As String
dim DecoupageChaine As Variant
dim ConteurPart As Integer
dim CountVieuw As Integer
dim NBParam As Integer
dim NameParam As String
dim CountNote As Integer


'declaration variable catia''''

dim MaNote02 As DrawingText
dim DrawDocument As DrawingDocument
dim param As Parameters
dim Calque As DrawingSheet
dim AcView As DrawingViews
dim MaNote As DrawingTexts



Set DrawDocument = CATIA.ActiveDocument
Set param = DrawDocument.Parameters
Set Calque = DrawDocument.Sheets.ActiveSheet
Set AcView = Calque.Views
Set MaNote = Calque.Views.ActiveView.Texts

2 - utilise Private Sub UserForm_Initialize() ou Private Sub UserForm_Activate() , le premier est préférable,
pour déterminé tous tes captions à l ouverture ou directement dans les propriétés (encore mieux)

3- je sais que pour remplir un cartouche, le texte provisoir dois avoir dans sa propriété un nom similaire (ex: C_txt1, C_txt2....) de cette manière tu fais d abord un comptage des textes dans ta feuille et tu l'utilise dans une boucle.

Code:

parametre_a=1

for a=1 to toncomptage
    
    parametre_b = gauche(nomtexte,5)
    if parametre_b="C_txt" then
        
         select case parametre_b & parametre_a

         case "C_txt1"
                 parametre_b¶metre_a=userforme1.label1.caption
         case "C_txt2"

                 split du texte.....

                 parametre_b¶metre_a=userforme1.label2.caption
        .
        .
        .
        end select
    
     parametre_a=parametre_a+1

    end if
next


end sub
avatar
raphael_59240
actif
actif

Messages : 123
Date d'inscription : 28/03/2015
Age : 46
Localisation : dunkerque

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum