IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Aller plus loin avec Word


précédentsommairesuivant

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.

Avec référence à l'objet application
Sélectionnez
01 Sub UtiliserActiveDoc()
02 	Application.ActiveDocument.Range.Select
03 End Sub

Peut également s'écrire :

Sans la référence à l'objet application
Sélectionnez
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"

Dans une autre application
Sélectionnez
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 :

Dès sa délaration
Sélectionnez
01 Sub TestWord()
02 Dim wApp as New Word.Application
03 
04 
05 End Sub

Mais encore :

Avec Get Objet
Sélectionnez
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.

Avec Word Visible
Sélectionnez
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é.

Libération des Objets
Sélectionnez
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.

Une autre méthode
Sélectionnez
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'.

ActiveDocument
Sélectionnez
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.

Fermer le document actif
Sélectionnez
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.

Imprimante Active
Sélectionnez
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.

ActiveWindow
Sélectionnez
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.

Addins
Sélectionnez
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.

AutoCaptions
Sélectionnez
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.

AutoCorrect Count
Sélectionnez
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.

AutoCorrect Ajout
Sélectionnez
Sub TestApplication()
AutoCorrect.Entries.Add Name:= "ho" , Value:= "Heureux-oli"
End Sub
Image non disponible

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.

BrowseExtraFileTypes
Sélectionnez
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.

Browse ou navigation
Sélectionnez
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.

Image non disponible
Image non disponible
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.

Version
Sélectionnez
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 !

En Majuscule ?
Sélectionnez
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.

Mon titre
Sélectionnez
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.

Barres d'outils
Sélectionnez
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".

 
Sélectionnez
01 Sub TestApplication()
02 Application.DefaultSaveFormat = "rtf"
03 End Sub
Image non disponible
Avec l'extension RTF

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.

Boîte de dialogue
Sélectionnez
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.

AutoComplétion
Sélectionnez
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.

Collection Documents
Sélectionnez
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.

Convertisseur de fichiers
Sélectionnez
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.

 
Sélectionnez
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 :

Autoriser les majuscules accentuées
Sélectionnez
Application.Options.AllowAccentedUppercase = True
Autoriser le glisser déposer
Sélectionnez
Application.Options.AllowDragAndDrop = True
Supprimer les sons
Sélectionnez
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".

Apperçu avant impression
Sélectionnez
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é.

Inhibition de la mise à jour de l'écran
Sélectionnez
Application.ScreenUpdating = False

Sera toujours suivie de la ligne ci-après.

Retour en mode normal de l'affichage
Sélectionnez
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, ....

Information Sytème
Sélectionnez
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.

Liste des modèles ouverts
Sélectionnez
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 :

 
Sélectionnez
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.

ChangeFileOpenDirectory
Sélectionnez
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.

Nettoyage
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
Application.OnTime When:="15:55:00", Name:="Macro1"

On peut aussi faire référence à un temp donné et ajouter une période.

 
Sélectionnez
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.

 
Sélectionnez
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.

Répéter
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

Afficher le volet presse papier
Sélectionnez
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.

Image non disponible
Insérer un module de classe

Renomer le module en EventClassModule

Image non disponible
Renomer le module

La première déclaration dans le module doit être la suivante :

 
Sélectionnez
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.

Image non disponible
Les Objets

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

Image non disponible
Liste Procédures

Ensuite, dans n'importe quel module de votre choix, vous devez déclarer la ligne suivante :

 
Sélectionnez
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.

 
Sélectionnez
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.

DocumentBeforeClose
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
Private Sub appWord_DocumentChange()
	MsgBox "Le document a changé !"

End Sub
2-A-3-e. DocumentOpen

Se produit à l'ouverture d'un document.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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.

 
Sélectionnez
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

précédentsommairesuivant

Copyright © 2007 Olivier Lebeau. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.