Bill a une macro « avant sauvegarde » qui teste trois cellules. Si les cellules sont vides, la macro arrête l’enregistrement de l’utilisateur. En d’autres termes, ils doivent remplir les cellules avant de pouvoir enregistrer le classeur.

Bill aimerait enregistrer ce classeur en tant que modèle, mais lorsqu’il efface les trois cellules, la macro l’empêche également d’enregistrer en tant que modèle. Il aimerait que le modèle soit «propre», avec un défaut des trois cellules étant vides. Les utilisateurs créeraient un nouveau classeur basé sur le modèle et ne pourraient (correctement) pas enregistrer à moins que les cellules ne soient remplies.

Bill se demande comment il peut enregistrer le classeur en tant que modèle, avec les trois cellules vides.

Il existe en fait un certain nombre d’approches différentes que vous pouvez adopter pour enregistrer votre modèle.

La première consiste à changer le nom de votre classeur en quelque chose de plutôt ésotérique, tel que X27TT3W.xlsm. Ensuite, ajoutez une logique à votre macro «avant l’enregistrement» qui vérifie si le nom du classeur de base est X27TT3W. Si tel est le cas, autorisez l’enregistrement du classeur (ou du modèle) quelle que soit la condition des trois cellules. Une fois le modèle enregistré, vous pouvez le renommer dans Windows avec le nom souhaité et il peut être partagé avec vos utilisateurs. À moins qu’ils ne devinent le nom ésotérique que vous avez choisi, ils ne pourront pas enregistrer le classeur sans s’assurer que les trois cellules sont remplies.

Une autre approche consiste simplement à ajouter un autre gestionnaire d’événements à votre classeur, celui qui s’exécute lorsque vous ouvrez le classeur pour la première fois, pour effacer le contenu des trois cellules. Cela pourrait être quelque chose de simple, comme ceci:

Private Sub Workbook_Open()

Sheet1.Cells(1,1).Clear     Sheet1.Cells(2,1).Clear     Sheet1.Cells(3,1).Clear End Sub

Cette macro efface les cellules en A1: A3. Si vous souhaitez effacer une plage différente, modifiez simplement les trois lignes pour refléter les cellules que vous souhaitez effacer. Ensuite, placez quelque chose dans les trois cellules (pour qu’il réussisse vos tests dans la macro «avant d’enregistrer») et enregistrez-le en tant que modèle.

Une autre approche très simple à mettre en œuvre consiste simplement à désactiver les événements avant d’enregistrer le modèle. Cela ne se fait pas dans une macro, mais dans la fenêtre Exécution dans Visual Basic Editor. Tout ce que vous avez à faire est d’entrer cette seule ligne:

Application.EnableEvents = False

Enregistrez immédiatement votre classeur en tant que modèle, puis entrez la ligne suivante dans la fenêtre Exécution de Visual Basic Editor:

Application.EnableEvents = True

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (13547) s’applique à Microsoft Excel 2007, 2013, 2016, 2019 et Excel dans Office 365.