Accueil | Ce site | CV | Excel | Livre dor | Macros XL4 | Modèles | VBA
Lorsque lon essaye douvrir un classeur déjà ouvert, un message est affiché (Figure 1) si une modification quelconque est intervenue depuis le dernier enregistrement.

Fig. 1 - Message affiché si lon tente douvrir un classeur déjà ouvert,
qui a été modifié depuis le dernier enregistrement.
Comme indiqué dans le message affiché, le choix du bouton
, sélectionné par défaut, fait perdre toutes les modifications depuis le dernier enregistrement.
Si par programmation, on cherche à ouvrir un classeur sans vérifier sil lest déjà, lutilisateur risque dêtre confronté à un message de ce type, ce qui nest pas une bonne chose.
En effet, on ne peut préjuger de sa réaction, et il risque de choisir le bouton
parce que le message ne lui paraît pas clair, ou par maladresse ou distraction. Il y a alors perte de données, ce quil est impératif déviter.
La procédure AppelAutoDocument a pour rôle déviter que des données soient perdues. Elle tente dabord dactiver le classeur, ce qui équivaut à le choisir dans le menu Fenêtre (figure 2)

Fig. 2 - Choisir un document dand le menu Fenêtre
correspond à la methode Activate (activer) de VBA
Ce nest quen cas déchec de lactivation que le classeur est ouvert. Ainsi on supprime le risque de perdre les éventuelles modifications faites depuis le dernier enregistrement.
Voici son code :
Sub AppelAutoDocument(Doc As String) If Left(Application.OperatingSystem, 3) = "Win" Then If Left(Right(Doc, 4), 3) <> ".xl" Then Doc = Doc & ".xls" End If End If On Error GoTo Ouvre ' Différence de syntaxe : La méthode Activate s'applique à un Workbook, tandis que Open s'applique ' à la collection WorkBooks : Workbooks(Doc).Open serait incorrect Workbooks(Doc).Activate Exit Sub Ouvre: Workbooks.Open Doc End Sub