Quelques Questions VBA (Catia)

Saelenia - 8 mars 2013 à 12:45
 Utilisateur anonyme - 15 mai 2013 à 21:21
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 mars 2013 à 22:04
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)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 mars 2013 à 22:13
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
8 mars 2013 à 22:20
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.
0
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 mars 2013 à 12:49
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.
0
mustapha1989
15 mai 2013 à 20:58
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
0
Utilisateur anonyme
15 mai 2013 à 21:21
S.V.P quelqu'un, expliquez quoi faire au squatter.
0
Rejoignez-nous