Enregistrement des modifications inexistantes (Microsoft Excel)
Cela vous est probablement arrivé: vous ouvrez un classeur, examinez certaines des feuilles de calcul, puis fermez le classeur. Dans le cadre de la fermeture, Excel vous demande si vous souhaitez enregistrer vos modifications, mais vous n’avez apporté aucune modification – vous avez seulement regardé autour de vous. Ce qui donne?
En interne, Excel gère ce que l’on appelle communément un «indicateur sale». Cet indicateur est défini chaque fois que vous apportez une sorte de modification à un classeur.
Chaque fois que vous enregistrez le classeur, l’indicateur est effacé. Si l’indicateur est défini lorsque vous fermez le classeur, Excel vous demande si vous souhaitez enregistrer le classeur.
L’indicateur modifié peut évidemment être défini si vous apportez des modifications explicites à un classeur, telles que la modification d’une cellule ou la modification de la structure du classeur d’une manière ou d’une autre. Cependant, il peut également être défini même si vous ne faites rien d’explicite. Parfois, Excel fait quelque chose qui affecte le contenu du classeur simplement en raison du fait que vous l’avez ouvert. Cela définit le drapeau sale et déclenche ainsi la demande de sauvegarde.
Les fonctions de feuille de calcul AUJOURD’HUI et MAINTENANT sont deux grands coupables de ces changements automatiques. Ceux-ci renvoient respectivement la date et l’heure du système. Lorsque vous ouvrez un classeur pour la première fois, ils sont mis à jour dans le cours normal du recalcul. Puisqu’ils représentent un changement, Excel définit l’indicateur sale. Ce ne sont que deux coupables possibles; il y a d’autres fonctions qui peuvent avoir le même « ce classeur a été modifié »
effet. Une liste non exhaustive comprend INDIRECT, OFFSET, RAND et RANDBETWEEN.
L’indicateur modifié peut également être défini automatiquement si votre classeur comprend des liens vers des données sur d’autres feuilles de calcul. Excel récupère les données, ce qui représente une modification du classeur que vous venez d’ouvrir. Excel ne définit pas l’indicateur sale si vous naviguez simplement dans le classeur, en sélectionnant des cellules ou en passant à une autre feuille de calcul.
Une façon de contourner le problème consiste à supprimer tout ce qui provoque des modifications dans votre classeur. Pour la plupart des gens, ce n’est tout simplement pas pratique.
Vous pouvez également ajouter une macro automatique qui s’exécutera juste avant la fermeture du classeur, telle que la suivante, qui devrait faire partie de l’objet ThisWorkbook:
Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.Saved = True End Sub
Cette macro ne fait rien de plus que d’effacer l’indicateur sale (la propriété Saved). Bien que cette approche fonctionne, son utilisation comporte un risque énorme. Une fois la macro en place, Excel ne vous demandera jamais si vous souhaitez enregistrer les modifications à la sortie, même si des modifications légitimes ont été apportées au classeur. Par conséquent, vous devez vous rappeler d’enregistrer explicitement tout ce qui se trouve dans le classeur chaque fois que vous apportez des modifications. Sinon, vous risquez de perdre une partie de votre travail.
Une variante de cette approche – qui est moins impitoyable face aux modifications oubliées – consiste à intégrer la macro dans la procédure Workbook_Open pour l’objet ThisWorkbook:
Private Sub Workbook_Open() ActiveWorkbook.Saved = True End Sub
Maintenant, Excel ouvre le classeur, recalcule (y compris apporter des modifications en fonction de fonctions telles que AUJOURD’HUI et MAINTENANT), puis efface l’indicateur modifié. Si vous fermez immédiatement, vous n’êtes pas invité à enregistrer vos modifications. Il vous sera toutefois demandé si vous souhaitez enregistrer les modifications si vous effectuez des modifications après l’exécution de cette macro, c’est-à-dire après l’ouverture complète de la feuille de calcul.
Outre le recalcul automatique des fonctions qui définissent l’indicateur modifié, il est également possible que votre classeur contienne une macro ou deux qui s’exécutent automatiquement lorsque vous l’ouvrez. Si la macro apporte une sorte de modification dans le classeur, elle définira naturellement l’indicateur sale. Vous pouvez consulter l’éditeur VBA pour voir si tel est le cas.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (12352) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.
Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici: link: / excel-Saving_Non-Existent_Changes [Sauvegarde des modifications non existantes]
.