Quelques Questions VBA (Catia)

Signaler
-
 Utilisateur anonyme -
Bonjour,

Désolée si une réponse à déjà été donnée quelque part, j'ai quelque peu cherché mais en vain ...

bon, voici mes Problèmes / Questions.

Premièrement, je travaille sur CATIA et emploie donc l'éditeur VBA (alt + F11).

Lorsque je lance ma macro avec l'éditeur ouvert, tout se passe bien.
Si je lance ma macro à partir de CATIA, la fenêtre se grise et le pc s'éteint ...
Première question donc :
"Est ce que la macro VBA doit être mise entièrement en mémoire avant d'être exécutée ?"

Seconde Question,
J'emploie les SendKeys et les command. J'aimerais que la SendKeys parte une fraction de seconde après que la command soit terminée ... Seulement, je n'arrive pas à gérer la notion de "terminée" ... J'ai trouver beaucoup de questions à ce sujet mais je n'ai pas compris les réponses ...

Troisième question,
J'aimerais que ma macro travaille en tâche de fond (jusque là tout va bien).
Seulement, j'ai besoin que ma fenêtre CATIA soit active (Catia.activewindow. ... ) pour appliquer dessus la notion de command.
Y aurait-il moyen de faire "Comme si la fenêtre était active sans qu'elle le soit pour permettre à l'utilisateur de continuer à jouer avec sa station" ?
Et si oui, comment faire en sorte que les SendKeys soient virtuelles également et uniquement appliquées à CATIA ?


------

Pas très claire la question 2 ...

Je veux dire :
Je lance une commande.
Je fais un "sendkeys" après 1 seconde d'attente

Seulement, parfois le Enter n'est pas la bonne touche ! (Parfois le "OK" est en grisé et il faut envoyer "ESC" à la place)

Problème, si j'envoie ESC alors que l'opération est en cours, cela l'annule !
Si je fais attendre 10 secondes, mon programme va durer une éternité ...

Ce que j'aimerais c'est :

- Envoi de la commande
- Le plus tôt possible (arbitrairement de l'ordre de la seconde) envoyer ENTER
- SI rien ne se passe, envoyer ESCAPE (si quelque chose se passe, ne pas envoyer ESCAPE)

Merci pour votre aide ...
J'espère avoir été claire ... et vous remercie d'avance pour vos réponses !

7 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Salut

Oui, Catia utilise VBA, mais c'est un progiciel que pas grand monde ne connait.
Les réponses resteront donc évasives.

SendKeys possède un paramètre permettant de ne continuer qu'une fois que l'action est terminée.
Par contre, tu es confronté au temps de réaction du logiciel sur lequel tu agis (lequel ?)

Utiliser SendKeys et ne pas avoir le destinataire actif n'est pas possible.

Méthodes pour attendre : voir <cet exemple> que l'on peut trouver en faisant la simple recherche du verbe 'attendre' parmi les codes.

Pour que ton projet soit viable et sans surprise, il vaudrait mieux accéder aux objets du programme cible : Soit ce sont des objets Catia, documentés dans le visionneur d'objet (F2) de VBA, soit (plus complexe) en utilisant les APIs pour rechercher les handles des fenêtres, puis les handles des objets appartenant à cette fenêtre et agir dessus, toujours avec les APIs.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,
Je plussoie l'avis de jack (que je salue).
Et ajoute que le Sendkeys nécessite en plus que la fenêtre de destination ait le focus. Entendre par fenêtre de destination, selon le cas de figure, soit celle de l'appli elle-même (si le sendkeys lui est directement destiné), soit la fenêtre dont il est le container (une textbox, par exemple) si cette sous-fenêtre est celle de destination.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
et si j'ai bien compris ceci :
Seulement, j'ai besoin que ma fenêtre CATIA soit active (Catia.activewindow. ... ) pour appliquer dessus la notion de command.
Y aurait-il moyen de faire "Comme si la fenêtre était active sans qu'elle le soit pour permettre à l'utilisateur de continuer à jouer avec sa station" ?
Et si oui, comment faire en sorte que les SendKeys soient virtuelles également et uniquement appliquées à CATIA ?

le but serait de pouvoir jouer tout en laissant supposer qu'on est en train de bosser ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Bon, ma macro - à l'heure actuelle - emploie mon pc complètement (pas assez de RAM ;) ) seulement, elle est destinée à être utilisée sur un pc bien plus puissant.

Xeon, 64 Go Ram, ...

Seulement, ce serait bien que ce pc puisse être actif encore ... Donc je cherchais une solution (que je ne trouve pas :( )

Une fonction attendre, j'ai déjà (j'ai juste jeté un oeil sur le fait de mettre des micro-sleep que j'aime beaucoup)

La question était plus : l'action qui est demandée prend de plus en plus de temps à mesure que la complexité augmente (en gros, je coupe une pièce en petit cube. Plus il y a de cubes, plus c'est long à couper). Seulement, je ne sais pas comment faire incrémenter ce temps sans atteindre des quantités faramineuses ... (je voudrais que l'action se déclenche qu'à la fin de l'opération et pas avant)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Tu commences à devenir incompréhensible d'ingénuité, en mélangeant tout et n'importe quoi !:
Relis toi depuis le début et reviens nous en exposer le "sens" logique, s'il te plait.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

salut tt le monde
je suis un débuter en vba catia et j'ai un projet en catia v5 :
mon projet consiste un créer une application en catia v5 pour simuler l procédé de formage incrémental.
je peux savoir les étapes pour réliser un userform sur catia ????

steph

S.V.P quelqu'un, expliquez quoi faire au squatter.