Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Forme, VBA et fermeture du document Word

3 réponses
Avatar
Patrick_67
Bonjour à toutes et à tous,

Dans un document Word, j'ai créé une forme de type "Flèche" (via la barre
d'outils "Dessin"). Le type de la forme n'a pas d'importance.

J'enregistre ensuite le document Word.

Si je sélectionne ensuite la flèche en cliquant dessus puis ferme le
document Word, le document se ferme bien sans la question "Voulez-vous
enregistrer les modifications ?"; ceci est normal puisque aucune
modification n'a été apportée au document.

Si par contre je lance une macro qui sélectionne la même flèche par VBA
(cf ActiveDocument.Shapes("Flèche").Select , "Flèche" étant le
nom de la forme, la sélection de la flèche se fait bien.
Par contre si je ferme le document Word dans la foulée, apparaît le message
"Voulez-vous enregistrer les modifications ?" alors qu'aucune modification
du document n'a été effectuée.

Comment se fait-il que le fait d'uniquement sélectionner une forme via VBA
fasse croire à Word qu'une modification a été effectuée dans le document
Word, alors que cela n'a pas été le cas ?

Merci d'avance de vos réponses...

Patrick

3 réponses

Avatar
Anacoluthe
Bonjour !

'Patrick_67' nous a écrit ...
Comment se fait-il que le fait d'uniquement sélectionner une forme via VBA
fasse croire à Word qu'une modification a été effectuée dans le document
Word, alors que cela n'a pas été le cas ?


Tiens oui c'est drôle. Je ne l'avais jamais remarqué !

Encore une bizarrerie de vba (on ne va pas appeler ça un beug !)
qui s'explique peut-être par l'idée du concepteur de word-vba
que si on sélectionne un objet, c'est pour faire qqch avec ;-)
Comme ce n'est pas toujours simple avec les shapes, il s'est
dit qu'en forçant .Saved à False dès la sélection ça irait
plus vite !

En pratique, je ne vois rien de bien gênant dans cette
curiosité. Si votre code peut être amené à sélectionner
une forme sans rien faire avec (??) et que cette pseudo
modification dérange, enregistrez avant la Shape.Select
la valeur du Document.Saved et rétablissez-la après.

Rappelons enfin qu'un bon code vba ne sélectionne pas... ;-)
(C'est l'enregistreur de macros qui sélectionne)

Anacoluthe
« La vraie question est : pourquoi sélectionner?
Et je ne connais pas la réponse. »
- Albert JACQUARD

Avatar
Anacoluthe
Re !

Si votre code peut être amené à sélectionner
une forme sans rien faire avec (??)


Ah pardon, je n'avais pas pensé au cas où on sélectionne
pour copier dans le presse-papiers. Effectivement dans ce
cas on sélectionne sans rien modifier ensuite...

Anacoluthe
« La vraie question est : pourquoi sélectionner?
Et je ne connais pas la réponse. »
- Albert JACQUARD

Avatar
Patrick_67
Merci Anacoluthe pour tes interventions.

Voici quelques explications complémentaires liées à mon besoin.

J'ai deux documents Word. Un document Word principal (disons Principal.doc)
et un autre qui contient quelques formes prédéfinies (disons Formes.doc).

Une fois dans Principal.doc, je lance une macro qui :
1. ouvre Formes.doc
2. sélectionne une forme puis la copie
3. colle la forme sélectionnée dans Principal.doc
4. referme Formes.doc

Le problème cité plus haut apparait donc au moment de la fermeture de
Formes.doc.

Pour l'instant, j'ai effectivement ajouté une instruction de type
"Saved=True" pour Formes.doc juste avant de fermer Formes.doc et bien
évidemment il n'y a plus de message.

Voici donc une question complémentaire :
* ActiveDocument.Shapes("Flèches").Select
* Selection.Copy
Est-il possible de regrouper ces 2 instructions en une seule du type :
* ActiveDocument.Shapes("Flèches").Copy
ce qui éviterait le "Select" et contournerait éventuellement le problème
cité + haut ?

J'ai essayé mais le "Copy" direct provoque étonnemment un message d'erreur.

Merci pour d'autres idées à ce sujet.

Patrick.

"Anacoluthe" a écrit dans le message de news:
eCo2$
Re !

Si votre code peut être amené à sélectionner
une forme sans rien faire avec (??)


Ah pardon, je n'avais pas pensé au cas où on sélectionne
pour copier dans le presse-papiers. Effectivement dans ce
cas on sélectionne sans rien modifier ensuite...

Anacoluthe
« La vraie question est : pourquoi sélectionner?
Et je ne connais pas la réponse. »
- Albert JACQUARD