OVH Cloud OVH Cloud

Programmation des barres de commande et des contrôles

5 réponses
Avatar
arbiel
Bonjour à tous

Pour vous éviter une perte de temps à ceux d'entre vous qui ne sont pas
intéressés par mes difficultés, sachez tout d'abord que je cherche des
informations sur ces deux points :

la succession des événements dans Word (open, new, windowactive, ....)
la gestion dynamique de menus contextuels

Pour ceux qui poursuivent, avant d'entrer dans l'exposé de mes difficultés,
il me semble utile de préciser ce que je cherche à réaliser.

J'ai créé des modèles de documents avec des signets destinés à contenir des
valeurs particulières, comme le nom de l'auteur, le domaine concerné par le
document, le type de document.

J'ai constaté que lors de la mise à jour de ces champs, je perdais les
signets.

J'essaie maitenant de créer des commandes dans les menus contextuels ("Text"
et "Table Text") pour faciliter la création des signets. L'utilisateur
pourrait sélectionner une zone de texte (libre ou dans une cellule de
tableau), clicquer droit, se voir présenter dans un Pop Up la liste des
signets possibles, choisir le signet qui correspond à la zone sélectionnée et
définir ainsi la position de chaque signet dans le texte.

La liste des signets dépend du modèle de document utilisé.

Ceci n'est peut-être pas très pratique, mais il n'y a pas trop de signets,
et la méthode est indépendante du texte lui-même, donc adaptable sans
difficulté à d'autres contextes.


J'éprouve beaucoup de difficultés

1) La séquence des événements

Tout d'abord sur la compréhension de la séquence des événements.

Je veux modifier le libellé de la commande (lui donner le nom du modèle) et
la liste des PopUp qui s'affichent. j'ai donc choisi d'intercepter
"WindowActivate". Mais j'intercepte aussi les événements open, close pour
maintenir la liste des documents ouverts (mais c'est peut-être complétement
inutile).

Les traces que j'ai réalisées me montrent que WindowActive est déclenché
avant Open, et semble être déclenché 2 fois.

Quelqu'un peut-il m'expliquer ?

2) La gestion des commandes

Je suis complètement perdu.

Tout d'abord je crée les commandes avec l'option Temporary.

Mais Word semble les mémoriser.

Je viens d'écrire une procédure de remise à plat et les traces effectuées à
cette occasion m'ont montré qu'au fil de mes tests précédents, j'avais créé
une bonne cinquantaine de commandes dans les deux menus "Text" et "Table
Text" alors que je m'attendais à ce que tout soit oublié lors de l'arrêt de
Word

Je viens aussi de constater, et j'ai bien retrouvé dans l'aide en ligne,
que les menus sont liés aux modèles. J'ai donc crée des commandes un peu
partout, en fonction des documents actifs lors de mes essais.

Quelqu'un peut-il m'indiquer où trouver des informations sur le
fonctionnement de tout ceci.

D'avance, un grand merci à tous ceux qui voudront bien m'aider.

Hier soir, j'étais sur le point de tout abandonner

Cordialement

Arbiel

5 réponses

Avatar
Geo

J'ai créé des modèles de documents avec des signets destinés à contenir des
valeurs particulières, comme le nom de l'auteur, le domaine concerné par le
document, le type de document.

J'ai constaté que lors de la mise à jour de ces champs, je perdais les
signets.


Tu as bien fait de prévenir, on va y aller à petites doses et désolé si
tu as l'impression qu'on remet ton travail en cause :-)

Tu parles de signets et de champs et là je décroche déjà.
L'auteur, il est par défaut dans DocumentProperty("Author")
Il y a en standard des propriétés que tu peux utiliser plus ou moins à
ta guise par exemple :

Title
Subject
Author
Keywords
Comments ...
Si ça suffit pas tu peux en définir d'autres
Ca correspond à ce qu'on voit dans fichier propriétés.
Ca évite les signets.

J'essaie maintenant de créer des commandes dans les menus contextuels ("Text"
et "Table Text") pour faciliter la création des signets. L'utilisateur
pourrait sélectionner une zone de texte (libre ou dans une cellule de
tableau), cliquer droit, se voir présenter dans un Pop Up la liste des
signets possibles, choisir le signet qui correspond à la zone sélectionnée et
définir ainsi la position de chaque signet dans le texte.


[...]
Quand tu dis "pourrait", ça veut dire que s'il ne le fait pas c'est pas
gênant ? Si c'est obligatoire une autre solution serait de faire une
userform où l'utilisateur remplirait directement les champs nécessaires
qui pourraient même être préremplis avec les paramètres du poste comme
l'auteur par exemple.

[...]

Je n'ai pas bien compris la suite, en particulier de quelles commandes
tu parles. Si ce sont des sujets indépendants il vaudrait mieux séparer
les messages.
Pourrais-tu aussi préciser la version de word utilisée ?

--
A+

Avatar
arbiel
Bonjour à tous et merci à Géo d'avoir pris le temps de me lire et de me
conseiller.

Voià quelques précisions :

1) Word utilisé

Word 2000 (9.0.3821 SR-1) au bureau ; chez moi, je pense qu'il s'agit de la
même version, mais je n'en suis pas certain (je travaille sur le sujet à mon
bureau et à mon domicile)
Cependant, je pense que mes difficultés ne sont pas directement liées à la
version de Word.

2) Les propriétés du document

La mise à jour des propriétés nécessite un acte volontaire de la part de
l'utilisateur. La commande Propriétés du menu Fichier répond à ce besoin.
Cependant, les utilisateurs utilisent rarement cette commande, et lorsqu'ils
le font, ils doivent recopier des informations déjà présentes dans le texte.
Double travail et risque d'erreurs, de fautes de frappe en partiulier du fait
de l'exiguïté de la zone de saisie.
L'idée de mon application est de garantir, autant que faire se puisse, la
cohérence entre le texte et ces propriétés.

D'où l'idée des signets. A la fermeture du document, il est très facile d'en
copier le contenu dans les propriétés.

3) "L'utilisateur pourrait sélectionner ..."

Je veux dire que je ne peux, ni ne souhaite d'ailleurs, imposer la méthode
de définition des signets (si je m'en tiens à cette méthode pour rendre texte
et propriétés cohérents). Cependant, il est clair que la version définitive
d'un document ne pourra être obtenue que lorsque la cohérence entre le texte
et les propriétés sera garantie. Je ne sais pas encore comment faire, mais je
réfléchis à ce problème.

4) C'est donc assez logiquement que je ne désire pas m'orienter vers la
conception de formulaires spécifques de saisie. Les utilisateurs font les
modifications qu'ils jugent utiles dans le texte, et c'est de ce texte que je
dois partir pour renseigner automatiquement les propriétés.

5) Commandes

J'ai donc imaginé de m'appuyer sur des signets pour retrouver les éléments
caractéristiques des documents Word à partir de leur contenu. Il faut donc
que la création de ces signets ne soit pas trop contraignante. L'utilisation
des commandes de Word n'est absolument pas adaptée : trop lourde, et même
totalement illusoire car elle nécessite la mémorisation du nom des signets.
Je veux permettre aux utilisateurs de définir ces signets (en fait ils n'ont
pas conscience qu'il s'agit de signets) par le moyen des menus contextuels
qui leur présentent la liste des informations caractéristiques, avec des
indications supplémentaires sur le fait que l'information en question est
obligatoire ou facultative, déjà renseignée ou encore vide.
J'ai appelé commandes ce que Microsoft appelle, je crois, ControlX (autant
que je comprenne) l'ensemble des objets qui permettent à l'utilisateur de
contrôler le fonctionnement de l'application.
J'ai donc dû pénétrer dans le domaines de barres de commandes, des menus
(Application.CommandBars) pour créer de nouveaux "ControlX", qui eux-mêmes
sont des "Butttons", des "PopUps" ou des choses de cette nature. Autant
d'objets que j'appelle, peut-être à tort, Commandes.

Sur ce point, j'ai bien du mal à comprendre comment Word gère ces objets. En
particulier, il existe,dans la commande de création de tels objets, un
paramètre "Temporary". J'avais compris qu'il permettait de rendre un tel
objet temporaire, oublié à la fermeture de Word. Ce ne semble pas être le cas.

6) Les événements

La liste des propriétés à renseigner à partir du contenu d'un document
dépend du type de ce document. J'ai donc imaginer de modifier les menus
contextuels lorsque l'utilisateur change de fenêtre, pour que ne lui soit
proposé que les informations caractéristiques.

D'où mes questions sur la succession des événements.

7 L'indépendance des sujets

Je comprends parfaitement qu'il est nécessaire de simplifier les messages et
de les cadrer sur des points précis. Je sais que ce n'est pas le cas de mon
message. Cependant, tous les points que je présente sont liés.

Présenter plus globalement le problème, et toutes les difficultés que je
rencontre peut éventuellement conduire un lecteur à m'indiquer l'existence
d'une autre méthode dans laquelle tous ces problèmes disparaîtraient.

Mas bien sûr, il faut tout lire, tout comprendre, et cela prend beaucoup de
temps, j'en suis bien conscient.

A nouveau tous mes remerciements à ceux qui me consacreront ce temps, et
encore plus de remerciements à ceux, qui comme Géo, prendront encore un peu
plus de temps pour me conseiller.

Cordialement

Arbiel



J'ai créé des modèles de documents avec des signets destinés à contenir des
valeurs particulières, comme le nom de l'auteur, le domaine concerné par le
document, le type de document.

J'ai constaté que lors de la mise à jour de ces champs, je perdais les
signets.


Tu as bien fait de prévenir, on va y aller à petites doses et désolé si
tu as l'impression qu'on remet ton travail en cause :-)

Tu parles de signets et de champs et là je décroche déjà.
L'auteur, il est par défaut dans DocumentProperty("Author")
Il y a en standard des propriétés que tu peux utiliser plus ou moins à
ta guise par exemple :

Title
Subject
Author
Keywords
Comments ...
Si ça suffit pas tu peux en définir d'autres
Ca correspond à ce qu'on voit dans fichier propriétés.
Ca évite les signets.

J'essaie maintenant de créer des commandes dans les menus contextuels ("Text"
et "Table Text") pour faciliter la création des signets. L'utilisateur
pourrait sélectionner une zone de texte (libre ou dans une cellule de
tableau), cliquer droit, se voir présenter dans un Pop Up la liste des
signets possibles, choisir le signet qui correspond à la zone sélectionnée et
définir ainsi la position de chaque signet dans le texte.


[...]
Quand tu dis "pourrait", ça veut dire que s'il ne le fait pas c'est pas
gênant ? Si c'est obligatoire une autre solution serait de faire une
userform où l'utilisateur remplirait directement les champs nécessaires
qui pourraient même être préremplis avec les paramètres du poste comme
l'auteur par exemple.

[...]

Je n'ai pas bien compris la suite, en particulier de quelles commandes
tu parles. Si ce sont des sujets indépendants il vaudrait mieux séparer
les messages.
Pourrais-tu aussi préciser la version de word utilisée ?

--
A+






Avatar
Geo

Voilà quelques précisions :

1) Word utilisé

Word 2000 (9.0.3821 SR-1) au bureau ; chez moi, je pense qu'il s'agit de la
même version, mais je n'en suis pas certain (je travaille sur le sujet à mon
bureau et à mon domicile)
Cependant, je pense que mes difficultés ne sont pas directement liées à la
version de Word.


les difficultés : non, mais les solutions : peut-être.

2) Les propriétés du document

La mise à jour des propriétés nécessite un acte volontaire de la part de
l'utilisateur.


Pas toujours, l'auteur est repris par défaut de l'utilisateur dans les
options.

La commande Propriétés du menu Fichier répond à ce besoin.
Cependant, les utilisateurs utilisent rarement cette commande


On peut imposer l'affichage lors de l'enregistrement, mais ça devient
vite casse-pieds. Par contre vu ce que tu as écris plus loin on
pourrait imposer l'affichage dans le cas où des données obligatoires
seraient absentes.

, et lorsqu'ils le font, ils doivent recopier des informations déjà présentes dans le
texte. Double travail et risque d'erreurs, de fautes de frappe en particulier du fait
de l'exiguïté de la zone de saisie.


D'accord, ton idée de faire un menu contextuel est excellente, mais il
ne faut pas perdre de vue qu'un signet est soit un emplacement dans le
document soit une partie du document. Si l'utilisateur supprime le
texte il supprime aussi le signet.

L'idée de mon application est de garantir, autant que faire se puisse, la
cohérence entre le texte et ces propriétés.
D'où l'idée des signets. A la fermeture du document, il est très facile d'en
copier le contenu dans les propriétés.


Oui, mais si on peut s'en passer pourquoi pas ?
Si tu sais faire un menu contextuel qui déroule une macro, tu peux tout
aussi bien charger les propriétés par exemple.

[...]

5) Commandes
J'ai donc imaginé de m'appuyer sur des signets pour retrouver les éléments
caractéristiques des documents Word à partir de leur contenu. Il faut donc
que la création de ces signets ne soit pas trop contraignante. L'utilisation
des commandes de Word n'est absolument pas adaptée : trop lourde, et même
totalement illusoire car elle nécessite la mémorisation du nom des signets.


Je ne sais pas (encore) faire de menu contextuel, dans des menus (si
c'est bien cela dont tu parles) on écrit ce qu'on veut.
Tu peux faire un menu "Définir" (le CommandBar) et mettre dedans le
texte que tu veux pour des opérations particulières auxquelles
correspondent des macros.
Exemple :
Définir...
... le texte sélectionné comme titre
... le texte sélectionné comme Domaine
... le texte sélectionné comme auteur (auteuse)
... le texte sélectionné comme type de document

Je veux permettre aux utilisateurs de définir ces signets (en fait ils n'ont
pas conscience qu'il s'agit de signets) par le moyen des menus contextuels
qui leur présentent la liste des informations caractéristiques, avec des
indications supplémentaires sur le fait que l'information en question est
obligatoire ou facultative, déjà renseignée ou encore vide.


Bonne idée

J'ai appelé commandes ce que Microsoft appelle, je crois, ControlX (autant
que je comprenne) l'ensemble des objets qui permettent à l'utilisateur de
contrôler le fonctionnement de l'application.
J'ai donc dû pénétrer dans le domaines de barres de commandes, des menus
(Application.CommandBars) pour créer de nouveaux "ControlX", qui eux-mêmes
sont des "Butttons", des "PopUps" ou des choses de cette nature. Autant
d'objets que j'appelle, peut-être à tort, Commandes.

Sur ce point, j'ai bien du mal à comprendre comment Word gère ces objets.


Quand tu dis menu contextuel, tu parles bien du clic droit de la souris
?
Un exemple de menu ordinaire (la cantine quoi :-) ) je peux t'en
fournir.

En particulier, il existe, dans la commande de création de tels objets, un
paramètre "Temporary". J'avais compris qu'il permettait de rendre un tel
objet temporaire, oublié à la fermeture de Word. Ce ne semble pas être le cas.


Pas testé, mais s'il résiste on peut sûrement le détruire par la
manière forte à la fermeture de word.

6) Les événements

La liste des propriétés à renseigner à partir du contenu d'un document
dépend du type de ce document.


Ce type n'est-il pas lié au modèle qui a servi a créer le document ?
Ce serait plus facile à traiter

J'ai donc imaginer de modifier les menus
contextuels lorsque l'utilisateur change de fenêtre, pour que ne lui soit
proposé que les informations caractéristiques.

D'où mes questions sur la succession des événements.

7 L'indépendance des sujets

Je comprends parfaitement qu'il est nécessaire de simplifier les messages et
de les cadrer sur des points précis. Je sais que ce n'est pas le cas de mon
message. Cependant, tous les points que je présente sont liés.


D'accord, ça ne m'a pas paru évident la première fois.

Présenter plus globalement le problème, et toutes les difficultés que je
rencontre peut éventuellement conduire un lecteur à m'indiquer l'existence
d'une autre méthode dans laquelle tous ces problèmes disparaîtraient.


Re - d'accord, c'est un sujet abordé de temps en temps : bien décrire
le problème permet de trouver des pistes de solutions.


--
A+

Avatar
Anacoluthe
Bonjour !

'arbiel' nous a écrit ...
La mise à jour des propriétés nécessite un acte volontaire de la part de
l'utilisateur. La commande Propriétés du menu Fichier répond à ce besoin.
Cependant, les utilisateurs utilisent rarement cette commande


Pas si vous cochez
Outils / Options / Enregistrement / Demander les propriétés du document

Oui j'ai lu aussi et ce que vous demandez est sans doute bien bien bien
plus compliqué que ça. C'était juste une petite remarque en passant...
:-) ))

Anacoluthe
« Le plus compliqué c’est de faire simple. »
- Léonard de VINCI

Avatar
arbiel
Bonour Anacoluthe

Bien sûr cocher la case en question répond au problème, tout simplement.

Mais il se trouve que les utilisateurs, soit décochent la case (cas
maintenant général dans la société), soit ne mettent pas à jour les
propriétés lorsque la fenêtre leur est présentée (dans l'ancien temps, avant
de décocher la case).

Nous diffusons des documents dans lesquels ces informations sont
folkloriques, ce qui est pour le moins gênant si les destinataires s'en
aperçoivent. Je préfererais même que les propriétés n'existent pas, ce qui
serait beaucoup plus simple.

Mais elles existent, et je souhaite qu'elles soient cohérentes avec les
quelques parties du document qui leur correspondent, le nom de l'auteur,
l'objet du document, le nom de la société cliente, lorsque ces informations
sont présentes dans le texte.

Si vous avez une solution simple, non contraignante pour les utilisateurs et
qui permettent de garantir la cohérence entre le texte et les propriétés
concernées (elles-mêmes variables en fonction de la nature du document), je
vous remercie de m'en faire part.


Bonjour !

'arbiel' nous a écrit ...
La mise à jour des propriétés nécessite un acte volontaire de la part de
l'utilisateur. La commande Propriétés du menu Fichier répond à ce besoin.
Cependant, les utilisateurs utilisent rarement cette commande


Pas si vous cochez
Outils / Options / Enregistrement / Demander les propriétés du document

Oui j'ai lu aussi et ce que vous demandez est sans doute bien bien bien
plus compliqué que ça. C'était juste une petite remarque en passant...
:-) ))

Anacoluthe
« Le plus compliqué c’est de faire simple. »
- Léonard de VINCI