[VBA userform] Erreur d'exécution 424 : Objet requis

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

[VBA userform] Erreur d'exécution 424 : Objet requis

Message par chychal le Dim 29 Jan 2017 - 3:48

Bonjour à tous,

Je débute tout juste sur le code VBA avec l'éditeur sur CATIA (j'utilise la V5R20), en suivant quelques indications d'un cours pdf en anglais, j'essaie de créer un code qui me permettrait de générer un arbre cylindrique avec 3 cylindres de longueurs & rayons différents en utilisant un UserForm.
Je me suis essayé à la tâche, mais me voilà face à ma première erreur quand j'exécute l'application. J'ai pioché des infos à droite à gauche mais je ne trouve pas mon soucis (qui doit être évident vu mon niveau actuel), si vous pouviez m'aider et par la même occasion m'orienter vers des tutos ou auteurs qui me permettraient de me lancer plus facilement dans le bain, ce serait le top.
Bref, voici mon code actuel :

Code:
Private Sub UserForm_Click()

Dim iCenterX As Integer
Dim iCenterY As Integer
Dim dPi As Double

Dim oCurrentSketch As Sketch
Dim oCurrentCircle1 As AnyObject

Dim iCurrentLevel As Integer

Dim oPart As Part

Dim oPartBody As Body

Dim oPlaneYZ As Reference

Dim NrPad As Integer

Sub CylCreation(length, radius)

Set oCurrentSketch = oPartBody.Sketches.Add(oPlaneYZ)

Dim oFactory2D As Factory2D
Set oFactory2D = oCurrentSketch.OpenEdition
Set oCurrentCircle1 = oFactory2D.CreateClosedCircle(iCenterX, iCenterY, radius)

Dim constraints1 As Constraints
Set constraints1 = oCurrentSketch.Constraints
Dim ref2 As Reference
Set ref2 = oPart.CreateReferenceFromObject(oCurrentCircle1)

Dim constraint1 As Constraint
    Set constraint1 = constraints1.AddMonoEltCst(catCstTypeRadius, reference2)

constraint1.Mode = catCstModeDrivingDimension
Dim Length1 As Dimension
Set Length1 = constraint1.Dimension

length.Value = radius
oCurrentSketch.CloseEdition

Dim oPad As Pad
Set oPad = oPart.ShapeFactory.AddNewPad(oCurrentSketch, length + iCurrentLevel)
oPad.SecondLimit.Dimension.Value = iCurrentLevel * -1

iCurrentLevel = iCurrentLevel + length

End Sub

et mon code sur le bouton OK :

Code:
Private Sub OK_Click()
    iCenterY = 0
    iCenterX = 0
    dPi = 3.14159265358979
    iCurrentLevel = 0

    Dim oPartDocument As Document

    Set oPartDocument = CATIA.Documents.Add("Part")
    Set oPart = oPartDocument.Part
    Set oPartBody = oPart.MainBody
    Set oPlaneYZ = oPart.CreateReferenceFromGeometry(oPart.OriginElements.PlaneYZ)
    
    Dim Length1 As Double
    Dim Length2 As Double
    Dim Length3 As Double
    Dim Diam1 As Double
    Dim Diam2 As Double
    Dim Diam3 As Double
    
    
    Length1 = CDbl(L1.Value)
    Diam1 = CDbl(D1.Value)
    
    If Length1 > 0 Then
        If Diam1 > 0 Then
                Call CylCreation(Length1, Diam1)
        End If
      End If
      
    Length2 = CDbl(L2.Value)
    Diam2 = CDbl(D2.Value)
    
    If Length2 > 0 Then
        If Diam2 > 0 Then
                Call CylCreation(Length2, Diam2)
        End If
      End If
      
    Length3 = CDbl(L3.Value)
    Diam3 = CDbl(D3.Value)
    
    If Length3 > 0 Then
        If Diam3 > 0 Then
                Call CylCreation(Length3, Diam3)
        End If
      End If

    oPart.Update
    CATIA.ActiveWindow.ActiveViewer.Reframe

Et voici la ligne en surbrillance quand je mets débogage : Set oCurrentSketch = oPartBody.Sketches.Add(oPlaneYZ)

Un grand merci d'avance, bonne journée à tous

chychal
timide
timide

Messages : 5
Date d'inscription : 28/01/2017
Localisation : Toulouse

Revenir en haut Aller en bas

Re: [VBA userform] Erreur d'exécution 424 : Objet requis

Message par lumpazepfel le Dim 29 Jan 2017 - 8:15

Salut Julien,
Bienvenu sur ce forum.
Dans ton premier code tu déclares 2 fonctions "Private Sub UserForm_Click()" et "Sub CylCreation(length, radius)" mais il n'y a q'un seul "End Sub".
Tu n'as pas de fonction CATMain? Peux tu poster une image de ta userform?
avatar
lumpazepfel
actif
actif

Messages : 148
Date d'inscription : 03/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

Re: [VBA userform] Erreur d'exécution 424 : Objet requis

Message par chychal le Dim 29 Jan 2017 - 11:05

Bonsoir Marc & merci pour ta réponse,
Je te poste ma UserForm :

Pour ce qui est de la fonction CATMain, je devrais la déclarer en premier?
Encore merci et bonne soirée

chychal
timide
timide

Messages : 5
Date d'inscription : 28/01/2017
Localisation : Toulouse

Revenir en haut Aller en bas

Re: [VBA userform] Erreur d'exécution 424 : Objet requis

Message par lumpazepfel le Lun 30 Jan 2017 - 20:12

Salut Julien,

Oui en général il faut un module avec une fonction CATmain qui au minimum affiche la UserForm.
Voici un lien vers un tuto qui correspond à ce que tu veux faire :
https://drive.google.com/drive/folders/0BxqqyROc191GZjhpT1l4TkpqcWc.
Si tu as besoins d'aide poste bien l'ensemble de tes codes (modules et userform)
avatar
lumpazepfel
actif
actif

Messages : 148
Date d'inscription : 03/11/2015
Localisation : Ensisheim

Revenir en haut Aller en bas

Re: [VBA userform] Erreur d'exécution 424 : Objet requis

Message par chychal le Mar 31 Jan 2017 - 7:15

Bonsoir Marc et merci beaucoup pour ce lien, je vais tenter de regarder ça dans la semaine. Bonne soirée & bonne continuation!

chychal
timide
timide

Messages : 5
Date d'inscription : 28/01/2017
Localisation : Toulouse

Revenir en haut Aller en bas

Re: [VBA userform] Erreur d'exécution 424 : Objet requis

Message par Guss_ le Ven 3 Fév 2017 - 2:38

Il y a quelques erreurs dans dans ton code, comme l'a dit Marc, il manque déjà des End, End Sub ...

Je pense qu'il faut que tu revois en un 1er temps la structure de ton code

Sub()
...
[code]
...
End Sub

Pour ce qui est du CATmain, c'est n'est pas obligatoire, c'est seulement si tu veux par la suite exploiter ta macro via un bouton que tu rajouterais dans la barre d'outil.
Tu peux tout a fait développer ton interface et la faire fonctionner via l'éditeur, et à la fin tu créé une nouvelle macro qui appellera ton interface avec la Sub CATmain()

Guss_
Fédérateur
Fédérateur

Messages : 503
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

Re: [VBA userform] Erreur d'exécution 424 : Objet requis

Message par Contenu sponsorisé


Contenu sponsorisé


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