Identification de la dernière cellule modifiée dans une feuille de calcul (Microsoft Excel)
John se demande s’il existe un moyen dans VBA d’identifier la dernière cellule qui a été modifiée par un utilisateur. Il ne veut pas savoir si la cellule a été modifiée par une macro, mais spécifiquement par un utilisateur.
La réponse est oui – en quelque sorte. Vous pouvez utiliser l’événement Worksheet_Change pour écrire un gestionnaire qui enregistrera lorsqu’une cellule particulière dans une feuille de calcul est modifiée. Une macro qui fait cela pourrait être assez simple, comme celle-ci:
Private Sub Worksheet_Change(ByVal Target As Range) Application.StatusBar = Target.Address End Sub
La macro met simplement l’adresse de la dernière modification dans la barre d’état. Vous pouvez modifier la macro pour qu’elle conserve l’adresse dans une variable globale (déclarée en dehors du gestionnaire d’événements) de cette manière:
Dim sAddr As String Private Sub Worksheet_Change(ByVal Target As Range) sAddr = Target.Address(False, False) End Sub
Vous pouvez alors utiliser une macro ordinaire pour récupérer l’adresse stockée dans la variable sAddr et en faire ce que vous voulez.
Pour vous assurer que le gestionnaire d’événements n’enregistre aucune modification effectuée par les macros, la seule façon de le faire est de désactiver la gestion des événements avant d’exécuter une commande de macro qui modifiera la feuille de calcul. Par exemple, le changement de propriété EnableEvents suivant peut être utilisé avant et après une commande qui change le contenu de la cellule A1:
Application.EnableEvents = False Range("A1") = "Hello" Application.EnableEvents = True
Lorsque la gestion des événements est désactivée, le gestionnaire d’événements Worksheet_Change ne sera pas déclenché et l’adresse «dernière modification» ne sera pas mise à jour. Le résultat est que vous finissez par suivre uniquement les modifications effectuées par les utilisateurs, et non les modifications effectuées par les macros.
_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 (3819) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:
link: / excelribbon-Identifying_the_Last_Cell_Changed_in_a_Worksheet [Identifier la dernière cellule modifiée dans une feuille de travail]
.