Syntaxe test sur vérification (KWA) - réactions

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

Syntaxe test sur vérification (KWA) - réactions

Message par StagiaireEnMousse le Ven 10 Avr 2015 - 23:41

Bonjour !

Comme prévu me revoilà avec mon bagage de questions.  What a Face
Je connais assez bien CATIA, surtout la V6, mais la VBA sur V5 (et V6 en fait) j'en ai peu fait.  No

Donc voici mon problème.

J'ai une 3DPart dans laquelle on a mis quelques vérifications (KWA) pour s'assurer de la validité du modèle.
Ce que je voudrais faire, c'est :

Code:
If toutes les vérifications sont bonnes Then
Message("C'est tout bon")
Else
Message("Re-vérifiez votre modèle")
End If

J'ai fait ça sur Excel. C'est-à-dire que j'ai importé :
les verifications
les relations de vérification
les valeurs des paramètres qui entre dans les vérifications
dans des cellules et je les teste. J'ai même fait un petit système avec des feux comme dans CATIA. Very Happy J'obtiens ce que je recherche, donc tout baigne !  cheers

Par contre, j'aurais voulu faire ça en exploitant CATVB directement.
Je pensais intégrer une réaction (KWA) en reprenant les conditions qui apparaissent déjà dans mes vérifications.

Mais je n'ai pas la bonne syntaxe, car j'ai toujours des messages d'erreur. Voici ce que je mets dans ma réaction:

Source:

Parametre1
Parametre2
Parametre3
Parametre4
Parametre5
Parametre6
Parametre7
Parametre8
Parametre9
Parametre10
Parametre11

Action :

Code:
If Parametre1 >= Parametre2 And  
Parametre3 > Parametre4 And
Parametre7 > Parametre8 And
Parametre9 == Parametre10 And
Parametre11 >= Parametre2 And
   If Pilotage <> "Automatique"{
      Parametre5 >= Parametre6 -0.001mm}
   Else{
   0
   }
{
Message("Votre modèle est conforme. Veuillez poursuivre.")}
Else{
Message ("Des erreurs persistent. Cliquez sur le logo feu tricolore situé en bas de l'écran.")}   

J'ai essayé de mettre l'action sous forme VB :

Source:

Parametre1
Parametre2
Parametre3
Parametre4
Parametre5
Parametre6
Parametre7
Parametre8
Parametre9
Parametre10
Parametre11

Action :

Code:
Sub main ()

If Parametre1 >= Parametre2 And  
Parametre3 > Parametre4 And
Parametre7 > Parametre8 And
Parametre9 == Parametre10 And
Parametre11 >= Parametre2 And
   If Pilotage <> "Automatique" Then
      Parametre5 >= Parametre6 -0.001mm
   Else
   0
   End If
Then
MsgBox "Votre modèle est conforme. Veuillez poursuivre."
Else
MsgBox "Des erreurs persistent. Cliquez sur le logo feu tricolore situé en bas de l'écran pour savoir d'où elles proviennent."
End If

End sub

Cela ne donne toujours rien.  Crying or Very sad J'aurais besoin d'indications niveau syntaxe ; je pense que ça m'aiderait beaucoup à avancer.
Et puis je voudrais aussi savoir s'il existait une variable dans CATIA associée à l'état d'une vérification (validée ou non). Ca m'éviterait de reprendre les formules de vérifications.

D'avance merci à tous !

Une stagiaire en galère


Dernière édition par StagiaireEnMousse le Sam 11 Avr 2015 - 1:46, édité 1 fois

StagiaireEnMousse
actif
actif

Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par Guss_ le Ven 10 Avr 2015 - 23:50

Salut,

Quel est le(s) message(s) d'erreur ? et à quelle ligne ?

Guss_
Fédérateur
Fédérateur

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

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par StagiaireEnMousse le Sam 11 Avr 2015 - 0:20

Bonjour Guss ! What a Face
Merci d'avoir répondu.

L'erreur que j'ai se trouve au niveau de mon deuxieme "If". Je crois que l'enchaînement de "And" et de "If" ne lui plaît pas.
Code:
Ligne d'erreur de syntaxe 7 :
  structure non valide :  syntax error (près du mot : < If >)

A vrai dire, je m'en doutais, je trouve ça louche moi-même.  Mad

En gros j'inclus la condition Parametre5 >= Parametre6 -0.001mm uniquement dans le cas où mon paramètre "Pilotage" a une valeur différente de "Automatique". Sinon, pas besoin de vérifier la condition Parametre5 >= Parametre6 -0.001mm
Et je pense que je m'y prends très mal... Crying or Very sad

StagiaireEnMousse
actif
actif

Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par Guss_ le Sam 11 Avr 2015 - 1:14

Ok, je vois, je me doutais un peu de l'erreur, mais je ne savais pas si tu avais écris de cette manière uniquement pour la mise en forme sur le forum ou également dans ton code.

Il faut que tout soit écrit sur la même ligne (en VB il n'y a pas d'indicateur de fin de ligne d’instruction)

Il faut écrire

Code:
If Parametre1 >= Parametre2 And Parametre3 > Parametre4 And Parametre7 > Parametre8 And Parametre9 == Parametre10 ... Then

Dans certain cas (mais visiblement ça ne marche pas avec IF dans le vba de catia) tu peux utiliser le caractère "_" pour faire un retour à la ligne du code

par exemple
Code:

MsgBox "Bonjour", _
  vbInformation, _
  "Message"

Guss_
Fédérateur
Fédérateur

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

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par StagiaireEnMousse le Sam 11 Avr 2015 - 1:29

Merci pour l'astuce Guss ! Je l'avais remarqué à un moment que ça fonctionnait mieux comme ça.

Par contre, j'ai bel et bien l'impression que c'est l'enchaînement "And If" qui ne lui plaît pas... J'ai toujours le même probème au même endroit, ahah Crying or Very sad

J'ai contourné le problème en redéfinissant mes conditions. Mais si jamais quelqu'un a une explication, je suis toute ouïe. Smile

Je pense que je ne mettrais pas ce sujet en "résolu" vu que je pense avoir d'autres questions qui arriveront sous peu... cyclops

Bonne journée à tous Exclamation

StagiaireEnMousse
actif
actif

Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par Guss_ le Sam 11 Avr 2015 - 1:47

Oui le And If est inutile, simplement And suffit par contre j'ai du mal à suivre ton raisonnement, c'est bancal ton code

tu ne peux pas écrire

Code:

If Pilotage <> "Automatique" Then
      Parametre5 >= Parametre6 -0.001mm
Else
ça ne veut rien dire

Il faut mettre plusieurs boule If les unes dans les autres


Code:

if Parametre1 >= Parametre2 And Parametre3 > Parametre4 And Parametre7 > Parametre8 And Parametre9 == Parametre10 And Parametre11 >= Parametre2 Then
' on vérifie tous les paramètres communs au mode de pilotage que se soit automatique ou non
   If Pilotage <> "Automatique" Then
     ' si on est en pilotage automatique alors on vérifie un paramètre supplémentaire
       If Parametre5 >= Parametre6 -0.001mm Then
          MsgBox "Votre modèle est conforme. Veuillez poursuivre."
       Else
          MsgBox "Des erreurs persistent. Cliquez sur le logo feu tricolore situé en bas de l'écran pour savoir d'où elles proviennent."
       End If
   Else
     MsgBox "Votre modèle est conforme. Veuillez poursuivre."
   End If
Else
   MsgBox "Des erreurs persistent. Cliquez sur le logo feu tricolore situé en bas de l'écran pour savoir d'où elles proviennent."
End If

voilà ça devrait être mieux comme ça, mais ce n'est pas une solution unique, on peut avoir d'autre manière d'obtenir le même résultat.

Guss_
Fédérateur
Fédérateur

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

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par StagiaireEnMousse le Sam 11 Avr 2015 - 1:57

Oui tout à fait, en fait j'ai fait quelque chose de similaire au final !

Effectivement, ça ne voulait rien dire, et CATIA me le disait... Crying or Very sad

Encore merci Guss !

StagiaireEnMousse
actif
actif

Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par Guss_ le Sam 11 Avr 2015 - 2:56

de rien.

Guss_
Fédérateur
Fédérateur

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

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par StagiaireEnMousse le Mer 15 Avr 2015 - 2:18

Re,

Je reviens à la charge sur le sujet.
En fait, j'aimerais qu'à ma réaction, si le modèle est bon, on retourne sur Excel.
Donc comme vu sur l'autre sujet, il faut faire ainsi pour retourner sur Excel via macro catvba:

Code:

Private Declare Function BringWindowToTop Lib "User32" (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "User32" Alias _
    "FindWindowA" (ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long


Sub Excel_Top()

    Dim hwnd As Long
 
    'Récupère le Handle d'une fenêtre
    'Le Handle est un nombre entier unique généré par Windows afin d'identifier les fenêtres.
    
    hwnd = FindWindow(vbNullString, "Microsoft Excel")
 
    If hwnd > 0 Then
        
        BringWindowToTop hwnd
        'Affiche en mode "Normal"
        ShowWindow hwnd, 1
    End If
    
End Sub


Ceci étant, je voudrais inclure ce bout de code dans ma partie "Action VB" de ma réaction. Mais impossible avec l'appel aux API...

Du coup, je voudrais savoir comment traduire dans une macro catvba, le déclenchement d'évènement au changement de valeur. (sur excel, il faut utiliser "Target", mais sur Catvba ? )

D'avance merci ! What a Face

StagiaireEnMousse
actif
actif

Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par Guss_ le Mer 15 Avr 2015 - 3:02

J'ai du mal à piger exactement ton soucis.

Perso je copie-collerais tout le code que tu as écris au dessus, après le End sub de ta Sub Main()
Et à la place ou après les lignes
MsgBox "Votre modèle est conforme. Veuillez poursuivre."
je placerais
Excel_Top()
ce qui donnerait :

Code:

sub main()
if Parametre1 >= Parametre2 And Parametre3 > Parametre4 And Parametre7 > Parametre8 And Parametre9 == Parametre10 And Parametre11 >= Parametre2 Then
' on vérifie tous les paramètres communs au mode de pilotage que se soit automatique ou non
   If Pilotage <> "Automatique" Then
     ' si on est en pilotage automatique alors on vérifie un paramètre supplémentaire
       If Parametre5 >= Parametre6 -0.001mm Then
          MsgBox "Votre modèle est conforme. Veuillez poursuivre."
          Excel_Top
       Else
          MsgBox "Des erreurs persistent. Cliquez sur le logo feu tricolore situé en bas de l'écran pour savoir d'où elles proviennent."
       End If
   Else
     MsgBox "Votre modèle est conforme. Veuillez poursuivre."
     Excel_Top
   End If
Else
   MsgBox "Des erreurs persistent. Cliquez sur le logo feu tricolore situé en bas de l'écran pour savoir d'où elles proviennent."
End If
end sub


Private Declare Function BringWindowToTop Lib "User32" (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "User32" Alias _
    "FindWindowA" (ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long


Sub Excel_Top()

    Dim hwnd As Long
 
    'Récupère le Handle d'une fenêtre
    'Le Handle est un nombre entier unique généré par Windows afin d'identifier les fenêtres.
    
    hwnd = FindWindow(vbNullString, "Microsoft Excel")
 
    If hwnd > 0 Then
        
        BringWindowToTop hwnd
        'Affiche en mode "Normal"
        ShowWindow hwnd, 1
    End If
    
End Sub


Guss_
Fédérateur
Fédérateur

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

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par StagiaireEnMousse le Mer 15 Avr 2015 - 3:14

Merci de plancher sur mon problème Guss. Crying or Very sad

Mon souci c'est bel et bien le fait de tout mettre en un bloc dans ma réaction. J'ai fait exactement la même chose que toi mais j'obtiens un message d'erreur lorsque ma réaction a lieu... Je mettrai le message d'erreur demain. Smile

StagiaireEnMousse
actif
actif

Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par Guss_ le Mer 15 Avr 2015 - 3:41

Ah oui en fait il faut mettre

Code:
Private Declare Function BringWindowToTop Lib "User32" (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "User32" Alias _
    "FindWindowA" (ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Tout en haut de ton Code, avant même la 1ere Sub

Guss_
Fédérateur
Fédérateur

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

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par StagiaireEnMousse le Mer 15 Avr 2015 - 18:31

Re Guss,

Alors oui quand j'écris une macro dans l'éditeur de macro, ça marche nickel.

Mais ce que je voudrais, c'est que mes macro dans mon module1 s'executent de la même manière qu'une réaction KWA. C'est-à-dire qu'au changement de valeur d'un paramètre, je déclenche mes macros du module1.

Du coup, j'ai C/c mes macros dans ma réaction KWA, mais voilà, le problème arrive lorsque l'on utilise des API, car impossible de les mettre en tout début, comme dans l'éditeur de macro.  No



En gros, j'ai 2 questions qui sont liées :

1) Peut-on faire appel à des macro contenues dans un module1, dans une réaction KWA ?
2) Sinon, comment rédiger sytaxiquement parlant, le déclenchement d'une macro par changement de valeur d'un paramètre ? Sur Excel, c'est avec "Target" et "Worksheet_Change", mais sur CATVba, aucune idée... Crying or Very sad

D'avance merci Exclamation What a Face

EDIT : j'ai vu qu'il y avait une fonction Private Sub object_Change, mais je ne comprends pas comment s'en servir ; si j'ai plusieurs "object" qui changent par exemple, que faire ?

StagiaireEnMousse
actif
actif

Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par Guss_ le Mer 15 Avr 2015 - 19:30

AH ok, maintenant j'ai compris ton problème.

là comme ça je n'ai pas de solution, en gros tu veux faire un système dynamique qui vérifie en temps réelle les paramètres et donc déclenche un événement à un moment précis, mais lorsque l'utilisateur utilise l'interface catia, et non lorsqu'il lance une macro.


Guss_
Fédérateur
Fédérateur

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

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par Guss_ le Mer 15 Avr 2015 - 19:38

Dans une macros (celle que j'ai cité dans l'autre sujet concernant Excel) je créé dynamiquement une macro dans Excel via Catia
Dans cette macro j'ai une ligne qui appel une macro Catia, depuis Excel, ça peut être une piste.
Code:

            sFilePath = chemin_macro
            catScriptLibraryType = 2
            sModule = nom_module
            sProcedure = "mise_a_jour_table" 'CatMain is only allowable Choice
            sFilePathAndName = sFilePath
            Set CatSysServ = CATIA.SystemService
            vRetVal = CatSysServ.ExecuteScript(sFilePathAndName, catScriptLibraryType, sModule, sProcedure, Params)


Guss_
Fédérateur
Fédérateur

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

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par StagiaireEnMousse le Mer 15 Avr 2015 - 21:37

Oui tu as tout à fait compris ce que je voulais faire, désolée je n'ai pas été très claire dans mes explications. Embarassed

A quoi correspond la ligne "catScriptLibraryType = 2" ?

J'ai essayé ton code dans ma réaction "Action VB" et ça a l'air de pouvoir marcher !

Je dis pouvoir, car j'ai un message d'erreur. "Bibliothèque de macros inconnue". Là je sèche complètement. Je donne le FilePath via CATIA.ActiveDocument.Path (car mon .catvba est dans le même répertoire), donc je ne peux pas me tromper théoriquement. Suspect

StagiaireEnMousse
actif
actif

Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par StagiaireEnMousse le Jeu 16 Avr 2015 - 0:32

Re,

Alors c'est bon, c'est résolu !
Comme une débile, je ne mettais pas le fichier .catvba, mais uniquement le chemin...

A mettre dans Action VB :

Code:
Dim result
Dim params()
chemin = CATIA.ActiveDocument.Path
project="\NomDuFichier.catvba"
result = CATIA.SystemService.ExecuteScript(chemin & project,catScriptLibraryTypeVBAProject, "Module1", "CATMain",  params)

End sub

StagiaireEnMousse
actif
actif

Messages : 23
Date d'inscription : 09/04/2015
Localisation : Ile-De-France

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

Message par Guss_ le Jeu 16 Avr 2015 - 0:43

C'est cool ça et bon à savoir, qu'on peut automatiser le lancement de macro grâce au kwa
Il faudrait que je trouve le temps de voir comment fonctionne le kwa, je n'ai encore jamais mis les pieds dans ce module.

Guss_
Fédérateur
Fédérateur

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

Revenir en haut Aller en bas

Re: Syntaxe test sur vérification (KWA) - réactions

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

- Sujets similaires

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