Boite de dialogue - VB/VBA/VBS - Programmation
Marsh Posté le 18-06-2007 à 16:44:09
Dans Word l'utilisation du raccourci CTRL+flèche gauche permet d'aller au début du mot en cours (ou précédent si on est sur un espace).
En passant par l'enregistreur de macro, tu devrais pouvoir t'en servir.
Marsh Posté le 19-06-2007 à 07:50:59
Bonjour,
Merci tegu, mais ce n'est pas tout à fait ça
En fiat on doit cliquer sur le bouton de la boite de dialogue pour trouver une séquence.
Et la, cette séquence est sélectionnée (bien entendu) mais l'opérateur peut cliquer sur le document pour le rendre actif (la boite de dialogue reste en second plan).
A ce stade si l'opérateur tape une touche la sélection sera remplacée => perte de texte.
Ce que je voudrais c'est que, quand on clique sur le document le curseur se place à gauche du texte sélectionné sans aucune autre manipulation.
Je sais je demande beaucoup, et peut-être qu'il n'y a pas de solution (l'espoir fait vivre.....)
Il faudrait intercepter la mise en second plan de la boite de dialogue .......
Bonne journée
Marsh Posté le 19-06-2007 à 10:15:36
« ...une boite de dialogue que j'utilise en modal. »
Bon, première chose sur laquelle se mettre d'accord : ta boite de dialogue est non modale !
Elle permet d'accéder à une autre fenêtre sans la fermer http://fr.wikipedia.org/wiki/Fen%C3%AAtre_modale
Sinon une piste serait une macro dans le normal.dot qui détecterait si la boite de dialogue est ouverte et, quand on active un document word, lancerait la séquence que j'ai indiqué précédemment.
Sans garantie aucune. Je ne suis pas sûr que ça puisse marcher.
Marsh Posté le 19-06-2007 à 10:23:36
A adapter
Dans TheDocument
|
Créer une UserForm
ici avec une liste déroulante et un bouton de validation
y associer le code suivant
|
Code dans un module
|
Marsh Posté le 19-06-2007 à 10:35:22
Bonjour
Merci de vos réponses, mais un contretemps vient de m'arriver et je vais devoir suspendre pour quelque temps (1 semaine) l'analyse de ce problème.
Mais je ne l'oublierai pas pour autant, Je vous tiendrais au courant
Merci
Marsh Posté le 28-06-2007 à 09:32:30
Bonjour,
Comme promis me revoila
Tégu : d'accord sur la définition de modale, mais il faudrait le dire à microsoft parce qu'il faut écrire "frm.show modal" pour la rendre non modale !!!!!!!!!!!!!!!!!!!!!!!!!!
KIKI29 je viens d'essayer ton code, je ne comprends pas tout, mais j'ai un petit soucis, ça se plante à la commande FindWindow
strClassName = "OpusApp"
WordHWnd = FindWindow(lpClassName:=strClassName, lpWindowName:=vbNullString)
IL me semble qu'il doit me manquer un module de classe "OpusApp"
Merci
Marsh Posté le 28-06-2007 à 09:52:10
Pour Info : Nom des Classes Windows utilisées dans MS Office
Word 97 OpusApp
Word 2000 OpusApp
Word XP OpusApp
pour Excel XLMAIN etc
Je n'ai strictement aucun probleme, à mon avis relis le code ainsi que l'affectation de ce code
TheDocument, Module ou UserForm1
Marsh Posté le 28-06-2007 à 10:00:39
Ok, j'ai changé les private function en function et tout est OK
Mais a quel moment la macro ActiverWord est exécutée ..
Je pense que je ne me suis pas bien fait bien comprendre
Ce que je voudrais c'est quand on swap d'une boite de dialogue au document word, on déselectionne automatiquement le texte (on place le curseur à gauche).
La grande difficulté (enfin pour moi) est de détecter le passage de la boite de dialogue au document.
Marsh Posté le 02-07-2007 à 09:51:29
Pour info : « modal » n'est pas une constante VB.
Dans ton cas sa valeur semble être vide ou égale à zéro (si tu l'as déclarée ou si tu n'utilises pas « Option Explicit »).
Or les constantes officielles pour les boîtes de dialogue sont vbModal et vbModeless. Et comme par hasard vbModeless = 0.
D'où ton erreur d'interprétation à mon avis.
Marsh Posté le 18-06-2007 à 14:50:36
Bonjour,
Sous Word, j'ai fait une boite de dialogue que j'utilise en modal
Dans cette boite j'ai un bouton qui fait une recherche de mot.
Ce que je voudrais, c'est que quand je clic sur le document, le curseur se déplace automatiquement à gauche du mot.
Merci