2. L'objet Application▲
Le premier objet que nous allons aborder est l'objet Application. Il est le plus important, sans lui, pas de logiciel.
L'objet Application est présent par défaut pour Word, il n'est pas utile de l'appeler.
01
Sub
UtiliserActiveDoc
(
)
02
Application.ActiveDocument.Range.Select
03
End
Sub
Peut également s'écrire :
01
Sub
UtiliserActiveDoc
(
)
02
ActiveDocument.Range.Select
03
End
Sub
Par contre, lors de l'utilisation de l'objet Word dans une autre application, il est impératif d'y faire appel et de référencer sa bibliothèque dans votre projet. Si vous omettez de référencer la bibliothèque, vous lèverez une erreur : "Type défini par l'utilisateur non défini"
01
Sub
TestWord
(
)
02
Dim
wApp as
Word.Application
03
Set
wApp =
CreateObject
(
"Word.Application"
)
04
05
End
Sub
Ou encore dès la déclaration de l'objet :
01
Sub
TestWord
(
)
02
Dim
wApp as
New
Word.Application
03
04
05
End
Sub
Mais encore :
01
Sub
TestWord
(
)
02
Dim
wApp as
Object
03
Set
wApp =
GetObject
(
,"Word.Application"
)
04
05
End
Sub
Dans ce dernier exemple, il n'est pas nécessaire de référencer la bibliothèque de Word.
L'objet ainsi crée n'est pas visible, pour le rendre visible, vous devez le spécifier. Si c'est pour le traitement de fichiers ou de données, il n'est parfois pas utile de le rendre visible.
01
Sub
TestWord
(
)
02
Dim
wApp as
New
Word.Application
03
wApp.Visible
=
True
04
05
End
Sub
Dans les exemples que nous avons vus jusqu'à présent, l'objet apllication existe même s'il n'est pas visible, il se trouve en mémoire. Il est donc impératif, lorsque nous n'avons plus besoin de l'objet, de le fermer pour libérer les ressources qu'il utilise. Le plus radical est d'utiliser la méthode "Quit", mais avec l'inconvénient que Word sera complètement fermé.
01
Sub
TestWord
(
)
02
Dim
wApp as
New
Word.Application
03
04
wApp.Quit
05
End
Sub
La ligne 04 de notre code va simplement fermer l'application.
01
Sub
TestWord
(
)
02
Dim
wApp as
Word.Application
03
Set
wApp =
GetObject
(
,"Word.Application"
)
04
05
Set
wApp =
Nothing
06
End
Sub
La méthode ci-dessus n'est utilisable que si Word est déjà ouvert, on ne crée pas de nouvelle instance de Word, mais on utilise l'instance existante. Si aucune instance de Word n'est ouverte, vous recevez un message "Un composant ActiveX ne peut créer d'objet" La ligne 05 va libérer les objets.
2-A. Évènements, Méthodes et Propriétés▲
L'objet application possède des Évènements, des Méthodes et des Propriétés.
Certains Évènements sont détectés et gérés par Word. Il est à noter que chaque application Office gère
les évènements de façon différente. Un évènement détecté par Access ne l sera p s nécessairement par Word.
Word possède des Propriétés qui peuvent être en lecture seule ou modifiable.
Finalement Word possède des Méthodes.
Je ne ferai pas une liste exhaustives. J'aborderai les Évènements, Méthodes et Propriétés qui
me semblent les plus importantes et utiles.
2-A-1. Les Propriétés▲
Nous allons parcourir quelques propriétés, mais la liste n'est en rien exhaustive.
2-A-1-a. ActiveDocument▲
La première propriété que nous alons aborder est la propriété ActiveDocument, en plus d'être la première
par ordre alphabétique, je pense que c'est la plus importante.
Cette propriété est en lecture seule et renvoie le document actif.
Si aucun document n'est actif, une erreur est renvoyée '4248'.
01
Sub
TestActiveDocument
(
)
02
Debug.Print
ActiveDocument.Name
03
ActiveDocument.Range.
(
_
Start:=
ActiveDocument.Paragraphs
(
2
).Range.Start
, _
End
:=
ActiveDocument.Paragraphs
(
4
).Range.End
)Select
04
End
Sub
La ligne 02 du code va simplement afficher le nom du document actif dans la fenêtre Exécution , et la ligne 03 va sélectionner le range situé entre le seconde et le quatrième paragraphe du document.
01
ActiveDocument.Close
On peut également fermer le document actif, mais la condition ReadOnly empêche l'affectation d'un document à cette propriété.
2-A-1-b. ActivePrinter▲
Cette propriété renvoie le nom de l'imprimante active, il provient du système d'exploitation.
Cette propriété est modifiable, elle est intéressante lorsque pour un document
précis ou une tâche particulière, on est tenu de changer l'imprimante active.
L'exemple le plus courrant est l'impression d'un document en PDF.
01
Sub
ImprimerPDF
(
)
02
Dim
OldPrinter As
String
03
OldPrinter =
Application.ActivePrinter
04
ActivePrinter =
"PDF Creator"
05
ActiveDocument.PrintOut
06
DoEvents
07
ActivePrinter =
OldPrinter
08
End
Sub
La ligne 02 déclare la variable Texte OldPrinter, qui va servir à "Stocker" le nom de l'imprimante active.
La ligne 03 va "remplir" la variable avec le nom de l'imprimante active, ce nom pourras être réutilisé.
La ligne 04 va définir une nouvelle imprimante.
Les lignes 05 et 06 vont servir à imprimer et attendre la fin de l'impression.
La ligne 07 va utiliser la variable OldPrinter pour remettre Word dans l'état où il se trouvait. Sans cette ligne,
PDF Creator resterait l'imprimante par defaut.
On pourrait envisager l'utilisation de cette méthode pour l'impression de listings sur une imprimante réseau particulière.
2-A-1-c. ActiveWindow▲
Cette propriété en lecture seule va renvoyer la fenêtre active, dans l'exemple, son index.
C'est intéressant lorsque les documents n'ont pas encore été suvegardés.
01
Debug.Print
ActiveWindow.Index
2-A-1-d. AddIns▲
Addins représente la collections des compléments disponibles. Cette propriété est en lecture seule.
01
Sub
TestApplication
(
)
02
Dim
oadd As
AddIn
03
Debug.Print
AddIns.Count
04
For
Each
oadd In
AddIns
05
Debug.Print
oadd.Name
06
Next
oadd
07
End
Sub
La ligne 03 va compter le nombre de compléments installés La boucle de 04 à 06 va renvoyer dans la fenêtre Exécution le nom des différents compléments intallés.
2-A-1-e. Assistant▲
Ce bon vieil assistant qui manque à très peu de gens. Introduit avec Office 97, cet assistant n'est plus
affiché actuellement.
Personnellement, il ne me manque pas.
2-A-1-f. Autocaptions▲
En fançais, on traduit cette propriété par légendes automatiques.
Ce sont les légendes qui sont insérées par Word de façon automatique pour les différents
objets graphiques d'un document.
Le code ci-dessous va lister les différents types de légendes diponibles dans Word.
01
Sub
TestApplication
(
)
02
Dim
au As
AutoCaption
03
For
Each
au In
AutoCaptions
04
Debug.Print
au.Name
05
Next
au
06
End
Sub
2-A-1-g. AutoCorrect▲
L'objet AutoCorrect contient les corrections automatiques. Cette propriété est modifiable.
01
Sub
TestApplication
(
)
02
Debug.Print
AutoCorrect.Entries.Count
03
End
Sub
Après l'exécution de ce code, j'ai été surpris du nombre de corrections automatiques contenues dans Word.
Je vous conseille de faire le test même si compter les entrées est sans grand intérêt.
Le code qui suit vous permet d'ajouter de nouvelles entrées à la liste.
Sub
TestApplication
(
)
AutoCorrect.Entries.Add
Name:=
"ho"
, Value:=
"Heureux-oli"
End
Sub
Image à l'appui, la nouvelle entrée est bien présente dans la liste.
2-A-1-h. BrowseExtraFileTypes▲
Affectez la valeur « text/html » à cette propriété pour pouvoir ouvrir des fichiers HTML
contenant des liens hypertexte
dans Microsoft Word (et non dans l'explorateur Internet par défaut).
Type de données texte en lecture-écriture.
01
Sub
TestBrowseExtra
(
)
02
Application.BrowseExtraFileTypes
=
"text/html"
03
End
Sub
Le rendu n'est pas exceptionnel, pour ne pas dire médiocre. Mais peut avoir une certaine utilité.
2-A-1-i. Browser▲
Rien à voir avec un quelconque browser internet.
Cette propriété va indiquer à Word la méthode qui sera utilisée pour les déplacemens
dans le document.
Cette propriété possède une propriété importante : Traget
La propriété target va indiquer le type de cible pour la navigation dans le document.
Voici la liste des cibles que l'ont peut atteindre.
- wdBrowseComment
- wdBrowseEdit
- wdBrowseEndnote
- wdBrowseField
- wdBrowseFind
- wdBrowseFootnote
- wdBrowseGoTo
- wdBrowseGraphic
- wdBrowseHeading
- wdBrowsePage
- wdBrowseSection
- wdBrowseTable
La navigatiion peut être définie à suivant (Next) ou précédent (Previous). Une fois atteinte, la cible est sélectionnée.
01
Sub
Navigation
(
)
02
With
Application.Browser
03
.Target
=
wdBrowseSection
04
.Next
05
End
With
06
End
Sub
Le code ci-dessus va déplacer la sélection de section en section.
L'utilisation de ce code provoque la même action que le bouton situé au bas de l'ascenseur vertical.


2-A-1-j. Build▲
Cette propriété en lecture seule permet de récupérer le Build (numéro de version et de compilation ) de la version de Word utilisée.
Très intéressant si vous distribuez vos documents contenant des fonctionnalités propres
à certaines versions du logiciel.
01
Sub
TestVersion
(
)
02
MsgBox
Prompt:=
Application.Build
, Title:=
"Microsoft Word Version"
03
End
Sub
Pour info, la version renvoyée par Word 2007 que j'utilise est "12.0.6015".
2-A-1-k. CapsLock▲
Propriété en lecture seule, permet de savoir si les majuscules sont verouillées.
Si vous tenter de modifier cette propriété, Word vous signale que vous ne pouvez pas !
01
Sub
TestMajuscule
(
)
02
If
Application.CapsLock
Then
MsgBox
"Les majuscules sont verouillées !"
03
End
Sub
Propriété intéressante si l'on désire contrôler la frappe de l'utilisateur.
2-A-1-l. Caption▲
Propriété en lecture écriture qui permet de lire le titre de l'application, ou de le modifier.
01
Sub
TitreApplication
(
)
02
Application.Caption
=
"Mon Word à Moi"
03
End
Sub
Simple, la ligne 02 va modifier le titre de l'application.
2-A-1-m. CommandBars▲
Prorpiété qui représente la collection de toutes les barres d'outils de Word. Je ne vais pas vous donner la liste, elle est longue, le code ci-dessous va afficher les 176 barres d'outils qui se trouvent dans Word, du moins sur mon PC. C'est cette collection qui contient également vos barres d'outils.
01
Sub
ListeBarreDOutils
(
)
02
Dim
cmd As
CommandBar
03
For
Each
cmd In
Application.CommandBars
04
Debug.Print
cmd.Name
05
Next
cmd
06
End
Sub
2-A-1-n. DefaultSaveFormat▲
Propriété qui renvoie le format de sauvegarde par défaut du document.
La modification de cette propriété va change le type de fichier dans la boîte de
dialogue "Enregister Sous".
01
Sub
TestApplication
(
)
02
Application.DefaultSaveFormat
=
"rtf"
03
End
Sub
Si vous désirez changer l'extension par défaut, prévoyez de la restaurer pour éviter
toute surprise.
2-A-1-o. Dialogs▲
Propriété qui permet de choisir la boîte de dialogue, dans la collection, qui sera affichée.
01
Sub
TestApplication
(
)
02
Application.Dialogs
(
wdDialogCSSLinks).Show
03
End
Sub
En fonction de la boîte de dialogue choisie, il est possible de lui passer certains paramètres par le code.
2-A-1-p. DisplayAutoCompleteTips▲
Propriété intéressante si on peut la désactiver. En effet, le but la fonctionalité liée à cette proprité est de vous proposer un complétion automatique de certains mots. C'est le cas des dates. Quel bonheur de pourvoir désactiver temporairement cette fonction.
01
Sub
AutoCompletion
(
)
02
Application.DisplayAutoCompleteTips
=
True
03
End
Sub
2-A-1-q. Documents▲
Certainement la collection la plus importante de l'application Word. Cette collection représente les documents ouverts dans l'application. C'est à cette collection que nous allons ajouter un document.
01
Sub
AjoutDocument
(
)
02
Application.Documents.Add
03
End
Sub
Cette collection a droit à un chapitre entier dans ce tutoriel.
2-A-1-r. FilesConverters▲
Pourquoi je ne parviens pas à ouvrir un document sauvegardé dans une version antérieure de Word.
Probablement que le convertisseur adéquat n'est pas installé sur votre machine.
Le code suivant va vous donner la liste des convertisseurs installés et le type de fichier qu'il sont capable de convertir.
01
Sub
Convertisseurs
(
)
02
Dim
flC As
FileConverter
03
04
For
Each
flC In
Application.FileConverters
05
Debug.Print
flC.Name
; "; "
; flC.Path
; "; "
; flC.FormatName
06
Next
flC
07
08
End
Sub
La ligne 05 va vous donner le nom du convertisseur, son chemin sur le pc ainsi que sa fonction.
2-A-1-s. FileDialog▲
Représente la boîte de dialogue liée aux fichiers.
01
Sub
ShowSaveAsDialog
(
)
02
Dim
dlgSaveAs As
FileDialog
03
Set
dlgSaveAs =
Application.FileDialog
(
FileDialogType:=
msoFileDialogSaveAs)
04
dlgSaveAs.InitialFileName
=
"Moi"
05
dlgSaveAs.Show
06
End
Sub
Avec pour la ligne 03 "Filedialogtype les valeurs suivantes :
Nom | Valeur | Description |
---|---|---|
msoFileDialogFilePicker | 3 | Boîte de dialogue de sélection de fichier |
msoFileDialogFolderPicker | 4 | Boîte de dialogue de sélection de dossier |
msoFileDialogOpen | 1 | Boîte de dialogue Ouvrir |
msoFileDialogSaveAs | 2 | Boîte de dialogue Enregistrer sous |
La ligne 05 permet de suggérer un nom pour le fichier qui sera dans ce cas sauvegardé.
2-A-1-t. Options▲
La propriété Options permet d'utiliser les options disponibles pour l'application.
Quelques Exemples :
Application.Options.AllowAccentedUppercase
=
True
Application.Options.AllowDragAndDrop
=
True
Application.Options.EnableSound
=
False
On peut accéder à toutes les options de Word.
2-A-1-u. PrintPreview▲
Permet de passer en mode "Apperçu Avant Impression".
01
Sub
AppercuAvantImpression
(
)
02
Application.PrintPreview
=
True
03
End
Sub
Son utilisation va basculer le mode d'affichage.
2-A-1-v. ScreenUpdating▲
Il n'est pas toujours très agréable de voir les modifications d'un texte à l'écran.
La propriété ScreenUpdating va inhiber l'affichage et figer ce dernier.
Ne pas oublier de remettre l'affichage normal après l'avoir désactivé.
Application.ScreenUpdating
=
False
Sera toujours suivie de la ligne ci-après.
Application.ScreenUpdating
=
True
2-A-1-w. Selection▲
Propriété important en soi. C'est sur les selection que nous allons pourvoir agir
pour modifier notre document.
La propriété selection s'applique à bon nombre d'objets.
Nous aurons de meilleures occasions dans ce document pour utiliser la propriété sélection.
2-A-1-x. System▲
La propriété System permet de renvoyer différentes information sur le Système, comme l'espace disque restant, ....
01
Sub
InformationSysteme
(
)
02
With
Application.System
03
Debug.Print
.CountryRegion
04
Debug.Print
.FreeDiskSpace
05
Debug.Print
.HorizontalResolution
06
Debug.Print
.VerticalResolution
07
End
With
08
End
Sub
La ligne 03 va renvoyer le code pays, 33 pour la France.
La ligne 04 va renvoyer l'espace disque disponible.
La ligne 05 va renvoyer la résolution horizontale de votre affichage.
La ligne 06 va renvoyer la résolution verticale de votre affichage.
2-A-1-y. Templates▲
Propriété qui renvoie la collection des templates pour les documents ouverts.
Sub
ListeModele
(
)
Dim
model As
Template
Debug.Print
Application.Templates.Count
For
Each
model In
Application.Templates
Debug.Print
model.Path
Next
model
End
Sub
2-A-2. Les Méthodes▲
En VBA word, les méthodes possèdent une particularité par rapport aux méthodes Access. En Access, lors de l'utilisation de paramètres
dans les méthodes, il est importnat de repérer la position du paramètre et d'insérer le nombre se séparateurs exacts pour
que les paramètres soient correctement passés. En VBA Word, on peut nommer les paramètres lors de leur utilisation.
On obtient par exemple :
String
:=
Selection.Texte
'****************************
Alignment
:=
wdAlignTabCenter
2-A-2-a. ChangeFileOpenDirectory▲
Change le répertoire d'ouverture des documents, mais contrairement à "DefaultFilePath", cette modification n'est effective que pour la session en cours de Word. Lors de la fermeture de l'application, cette donnée est éliminée.
01
Sub
testOpen
(
)
02
ChangeFileOpenDirectory "D:\temp"
03
Dialogs
(
wdDialogFileOpen).Show
04
End
Sub
Effet immédiat, la boîte de dialogue s'ouvre sur le répertoire spécifié à la ligne 02.
2-A-2-b. CleanString▲
Méthode intéressante, elle permet de nettoyer une chaîne de certains caractères non-imprimables qu'elle contient.
On peut de cette façon éliminer les retours à la ligne et ils seront remplacés par des espaces.
Les espaces insécables seront convertis en espaces. L'aide donne la liste des caractères affectés et le résultat obtenu.
01
Sub
testClean
(
)
02
Dim
myText As
String
03
myText =
Application.CleanString
(
Selection)
04
Documents.Add
05
Selection.TypeText
myText
06
End
Sub
La ligne 02 sert à déclarer ma variable.
La ligne 03 à affecter à ma variable la selection à nettoyer
La ligne 04 à ajouter un nouveau document pour vérifier le résultat.
La ligne 05 à insérer notre texte nettoyé dan sle nouveau document.
2-A-2-c. CompareDocuments▲
Cette méthode permet de comparer deux documents. Il existe une multitude d'options facultatives pour les résultats désirés. Le résultat sera intégré dans un document.
01
Sub
testComparaison
(
)
02
Dim
OriDocument As
Document
03
Dim
RevDocument As
Document
04
Dim
finalDoc As
Document
05
06
Set
OriDocument =
CreateObject
(
"c:\temp\Doc4.docm"
)
07
Set
RevDocument =
CreateObject
(
"c:\temp\doc5.docm"
)
08
Set
finalDoc =
Application.CompareDocuments
(
OriDocument, RevDocument)
09
10End Sub
02 -> 04 Déclaration des variables qui doivent être des documents
06 -> 07 Affectation des objets documents aux variables
08 Nouveau document contenant les marques de révision suite à la comparaison.
2-A-2-d. GoBack et GoForward▲
Surprenant !
Ces fonctions ne sont plus disponibles si vous utilisez le format de fichier Office Open XLM.
Lorsque Word utilise le format propriétaire *.doc, ces actions sont disponibles, elles permettent
deplacer le curseur aux trois derniers endroits d'édition avant sauvegarde du document.
Si vous n'avez pas fermé le document, ces onctions sont opérationnelles.
La combinaison de touches Shift + F5 produit le même résultat.
2-A-2-e. MergeDocuments▲
Cette méthode est identique à la méthode CompareDocuments mis à part quelques options.
L'utilisation se fait de la même manière.
2-A-2-f. NewWindow▲
Permet d'ouvrir une nouvelle fenêtre Word avec le document en cours. Une fois ouverte, la seconde fenêtre peut être combinées aux autres avec un arrangement horizontal ou vertical.
Sub
TestWindows
(
)
MsgBox
Windows.Count
&
" fenêtre(s) ouverte(s)"
Windows
(
1
).NewWindow
MsgBox
Windows.Count
&
" fenêtres ouvertes"
End
Sub
2-A-2-g. OnTime▲
Cette méthode permet l'exécution d'une action à une heure définie.
Application.OnTime
When:=
"15:55:00"
, Name:=
"Macro1"
On peut aussi faire référence à un temp donné et ajouter une période.
Application.OnTime
When:=
Now
+
TimeValue
(
"00:00:15"
), _
Name:=
"Macro1"
Si vous voulez que le code soit éxécuté, il est préférable de le mettre sur un évènement de l'application
2-A-2-h. Quit▲
Méthode qui permet de quitter l'application.
Application.Quit
SaveChanges:=
True
, OriginalFormat:=
wdWordDocument
Cette méthode requiert trois paramètres qui sont facultatifs. SaveChanges -> Enregistrer les changements OriginalFormat -> Format d'enregistrement RouteDocument -> N'est pris en compte que lorsque le document à subit ou va subir un routage.
2-A-2-i. Repeat▲
Méthode qui permet de répéter une action ou serie d'action un certain nombre de fois. Attention, seule la dernière action est répétée.
01
Sub
TestRepeat
(
)
02
Selection.TypeText
"Première ligne"
&
vbCrLf
03
Selection.TypeText
"Seconde ligne"
&
vbCrLf
04
Application.Repeat
05
06
With
Selection
07
.TypeText
"Texte 1"
08
.TypeParagraph
09
.TypeText
"Texte 2"
10
End
With
11
Repeat
12
13
14
End
Sub
Seules les lignes 03 et 09 sont répétées, même les actions dans le With sont séparées, et l'action de répétition ne s'effectue que sur la dernière ligne.
2-A-2-j. ResetIgnoreAll▲
Méthode simple, elle effece le contenu de la liste des mots précédemment ignorés lors d'une correction
orthographique du document.
Associée à une bouton on peu tfaire des merveille.
01
Sub
ResetMots
(
)
02
Application.ResetIgnoreAll
03
ActiveDocument.SpellingChecked
=
False
04
ActiveDocument.CheckSpelling
05
End
Sub
On va effacer le contenu de la liste des mots ignorés 02, signifier que la correction n'a pas eu lieu 03 et finalement recommencer la vérification 04.
2-A-2-k. ScreenRefresh▲
Associée à la propriété ScreenUpdating cette méthode permet de faire une mise à jour de l'affichage et ce même avant de remettre la propriété ScrenUpdating à True.
01
Sub
OuvrirEtFermer
(
)
02
Application.ScreenUpdating
=
False
03
Application.Documents.Add
04
Selection.TypeText
"Bonjour"
05
Application.ScreenRefresh
06
ActiveDocument.SaveAs
FileName:=
"MonDoc.docx"
07
ActiveDocument.Close
08
Application.ScreenUpdating
=
True
09
End
Sub
On fige l'écran 02, on ajoute un document 03, on y place le texte Bonjour 04, on raffraîchit l'écran 05, on sauve le document et on le ferme 06 et 07 pour réactiver l'affichage 08.
2-A-2-l. ShowClipboard▲
Permet d'afficher le volet presse papier.
Application.ShowClipboard
2-A-3. Les Évènements▲
Word ne détecte pas beaucoup dévènements comparé aux autres applications de la suite Office. La méthode pour permettre à Word de détecter certains évènement est la suivante :
Il faut insérer un module de classe.

Renomer le module en EventClassModule
La première déclaration dans le module doit être la suivante :
Public
WithEvents appWord As
Word.Application
Cette ligne de code sert à déclarer un objet Application et dans notre cas, une objet Application Word. L'objet est immédiatement disponible pour utilisation. Dans la liste déroulante permettant de choisir un objet, vous avez maintenant l'objet appWord qui est disponible.

La liste déroulante procédure permet de choisir la procédure qui sera ajoutée dans le module de classe.

Ensuite, dans n'importe quel module de votre choix, vous devez déclarer la ligne suivante :
Dim
X As
New
EventClassModule
Avec cette ligne de code, vous allez pouvoir initialiser un objet application et le faire réagir aux évènement du module de classe. Il ne reste plus qu'à initialiser l'objet.
Sub
Register_Event_Handler
(
)
Set
X.appWord
=
Word.Application
End
Sub
Vous pouvez faire appel à cette procédure dans votre procédure et Word réagira aux évènements.
2-A-3-a. DocumentBeforeClose▲
Évènement qui se produit avant la fermeture d'un document.
Private
Sub
appWord_DocumentBeforeClose (
ByVal
Doc As
Document, Cancel As
Boolean
)
Dim
intReponse As
Integer
intReponse =
MsgBox
(
"Voulez-vous "
_
&
"fermer le document?"
, _
vbYesNo
)
If
intReponse =
vbNo
Then
Cancel =
True
End
Sub
La déclaration WithEvents est important si l'on veut détecter certains évènement. Le code ci-dessus est tiré de l'aide de Word.
2-A-3-b. DocumentBeforePrint▲
Se produit avant impression.
Private
Sub
appWord_DocumentBeforePrint
(
ByVal
Doc As
Document, Cancel As
Boolean
)
Dim
intResponse As
Integer
Dim
stPrinter As
String
stPrinter =
Application.ActivePrinter
intResponse =
MsgBox
(
"Vos allez imprimer sur "
&
stPrinter, vbYesNo
)
If
intResponse =
vbNo
Then
Cancel =
True
End
Sub
2-A-3-c. DocumentBeforeSave▲
Évènement qui se produit juste avant la sauvegarde du document.
Private
Sub
appWord_DocumentBeforeSave
(
ByVal
Doc As
Document, SaveAsUI As
Boolean
, Cancel As
Boolean
)
Dim
intResponse As
Integer
Dim
stDefault As
String
stDefault =
Application.DefaultSaveFormat
intResponse =
MsgBox
(
"Voulez vous sauver votre document en '"
&
stDefault &
"'"
, vbYesNo
)
If
intResponse =
vbNo
Then
Cancel =
True
End
Sub
2-A-3-d. DocumentChange▲
Se produit lors de la création d'un nouveau document, de l'ouverture d'un document existant ou de la sélection d'un autre document comme document actif.
Private
Sub
appWord_DocumentChange
(
)
MsgBox
"Le document a changé !"
End
Sub
2-A-3-e. DocumentOpen▲
Se produit à l'ouverture d'un document.
Private
Sub
appWord_DocumentOpen
(
ByVal
Doc As
Document)
MsgBox
"Un document vient d'être ouvert !"
MsgBox
Application.ActiveDocument.Name
End
Sub
2-A-3-f. DocumentSync▲
Se produit lorsque la copie locale d'un document faisant partie d'un espace de travail de document est synchronisée avec la copie sur le serveur.
Private
Sub
app_DocumentSync
(
ByVal
Doc As
Document, ByVal
SyncEventType As
Office.MsoSyncEventType
)
End
Sub
Je n'ai pu tester cet évènement, n'aynat pas d'espace de travail.
2-A-3-g. Serie d'évènement MailMerge▲
Pour la fusion et le publipostage, il existe plusieurs évènements :
Évènement | Quand |
---|---|
MailMergeAfterMerge | Se produit après que tous les enregistrements d'une fusion ont été correctement fusionnés. |
MailMergeAfterRecordMerge | Se produit après la fusion des différents enregistrements de la source de données dans une opération de publipostage. |
MailMergeBeforeMerge | Se produit lorsqu'une fusion est exécutée avant qu'un enregistrement quelconque ait été fusionné. |
MailMergeBeforeRecordMerge | Se produit lorsque la fusion d'un enregistrement particulier du publipostage est exécutée. |
MailMergeDataSourceLoad | Se produit lorsque la source de données est chargée en vue d'une opération de publipostage. |
MailMergeDataSourceValidate | Se produit lorsqu'un utilisateur valide des destinataires de publipostage en cliquant sur Valider dans la boîte de dialogue Destinataires du publipostage. |
MailMergeDataSourceValidate2 | Survient lorsqu'un utilisateur valide les destinataires du publipostage en cliquant sur le bouton de lien Valider les adresses dans la boîte de dialogue Destinataires du publipostage. |
MailMergeWizardSendToCustom | Se produit lorsque vous cliquez sur le bouton personnalisé à l'étape six de l'Assistant Fusion et publipostage. |
MailMergeWizardStateChange | Se produit lorsqu'un utilisateur passe d'une étape spécifiée de l'Assistant Fusion et publipostage à une autre. |
2-A-3-h. NewDocument▲
Se produit lors de la création d'un document.
Private
Sub
appWord_NewDocument
(
ByVal
Doc As
Document)
MsgBox
"Avec ce document, vous avez : "
&
Application.Documents.Count
&
" ouverts !"
End
Sub
2-A-3-i. Quit▲
Se produit lorsque l'utilisateur quitte Microsoft Office Word.
Je pense qu'il n'est pas utile d'en dire plus.
2-A-3-j. WindowActivate▲
Se produit lors de l'activation d'une fenêtre de document.
Private
Sub
appWord_WindowActivate _
(
ByVal
Wn As
Word.Window
)
Wn.WindowState
=
wdWindowStateMaximize
End
Sub
2-A-3-k. WindowBeforeDoubleClick▲
Se produit lorsqu'un utilisateur double-clique dans la zone d'édition d'une fenêtre de document avant le double-clic par défaut.
Private
Sub
appWord_WindowBeforeDoubleClick
(
ByVal
Sel As
Selection, Cancel As
Boolean
)
End
Sub
2-A-3-l. WindowBeforeRightClick▲
Se produit lorsqu'un utilisateur clique avec le bouton droit dans la zone d'édition d'une fenêtre de document avant le clic droit par défaut.
Private
Sub
appWord_WindowBeforeRightClick
(
ByVal
Sel As
Selection, Cancel As
Boolean
)
Dim
intResponse As
Integer
intResponse =
MsgBox
(
"Sélection = "
&
Sel &
vbLf
&
vbLf
_
&
"Continuer avec cette sélection ?"
, _
vbYesNo
)
If
intResponse =
vbNo
Then
Cancel =
True
End
Sub