Un classeur Excel peut contenir n’importe quel nombre de feuilles de calcul individuelles. Lorsque vous vous déplacez dans les différentes feuilles de calcul, Excel garde une trace de quelle cellule est sélectionnée dans quelle feuille de calcul. Lorsque vous basculez vers une nouvelle feuille de calcul, Excel rend active la cellule qui était en dernier active dans cette feuille de calcul. Par conséquent, si vous avez sélectionné la dernière cellule F9 dans la feuille de calcul, c’est celui qui est sélectionné lorsque vous affichez à nouveau la feuille de calcul, indépendamment de ce qui a été sélectionné dans la feuille de calcul précédente.

Toutefois, pour certains classeurs, vous souhaiterez peut-être qu’Excel rend la cellule active de la feuille de calcul sélectionnée identique à la cellule active de la feuille de calcul précédente. Il n’y a pas de paramètre pour le faire automatiquement dans Excel, mais vous pouvez essayer plusieurs choses. Une chose est de suivre ces étapes:

  1. Maintenez la touche Ctrl enfoncée tout en cliquant sur l’onglet de la feuille de calcul dans laquelle vous souhaitez accéder. Deux onglets de feuille de calcul doivent maintenant être sélectionnés; celui avec le nom en gras est celui qui est réellement affiché à l’écran.

  2. Cliquez sur l’onglet de la feuille de calcul à laquelle vous souhaitez accéder. Les deux onglets doivent toujours être sélectionnés, mais seul celui sur lequel vous avez cliqué doit avoir son nom en gras.

  3. Maintenez la touche Ctrl enfoncée tout en cliquant sur l’onglet de la feuille de calcul que vous venez de quitter.

Ces étapes fonctionnent car vous «regroupez» des feuilles de calcul. Lorsque vous le faites, Excel rend les cellules sélectionnées identiques pour toutes les feuilles de calcul du groupe.

Se souvenir d’utiliser la séquence Ctrl-clic-clic-Ctrl peut être fastidieux, au mieux. C’est aussi une séquence qui peut être pleine de dangers, car si vous oubliez de faire l’étape 3, vous pourriez finir par apporter des modifications involontaires à vos feuilles de calcul. (Pendant que vous travaillez avec des feuilles de calcul groupées, toute modification apportée à une feuille est modifiée de la même manière sur toutes les feuilles du groupe.)

Ces trois étapes ne peuvent pas être automatisées avec des macros, mais vous pouvez adopter une approche différente avec une macro pour accomplir la même tâche. La première chose à faire est de déclarer une variable publique n’importe où dans un module du classeur, comme indiqué ici:

Public sAddress As String

Cette variable, sAddress, sera utilisée pour stocker l’adresse actuelle de la cellule active. Dans le module « ThisWorkbook » du classeur, ajoutez ces deux macros:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _   ByVal Target As Excel.Range)

sAddress = ActiveCell.Address End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

On Error Resume Next     If sAddress > "" Then Sh.Range(sAddress).Select End Sub

La première macro est exécutée automatiquement par Excel chaque fois que la cellule sélectionnée change. Tout ce qu’il fait est de récupérer l’adresse de la cellule active, puis de stocker cette adresse dans la variable sAddress.

La deuxième macro est automatiquement exécutée chaque fois qu’un classeur est activé.

Il vérifie si quelque chose est stocké dans sAddress. Si tel est le cas, il sélectionne l’adresse de cellule qui y est stockée. Le code d’erreur est nécessaire au cas où vous sélectionnez une feuille qui n’utilise pas de cellules, comme une feuille de graphique.

Cette approche macro fonctionne très bien si vous souhaitez uniquement effectuer cette modification de navigation dans un ou deux classeurs. Si vous préférez faire le changement « à l’échelle du système » (pour ainsi dire), vous devez être un peu plus complexe dans votre approche de la macro. Dans ce cas, vous devez placer votre code dans le classeur Personal.xls afin qu’il soit chargé chaque fois que vous démarrez Excel. Plus précisément, placez le code suivant dans un nouveau module de classe du classeur Personal.xls. Ce module de classe doit être nommé quelque chose de descriptif, tel que ClassXLApp:

Public WithEvents gobjXLApp As Excel.Application Private mstrAddress As String

Private Sub gobjXLApp_WorkbookActivate(ByVal Wb As Excel.Workbook)

On Error Resume Next     If mstrAddress > "" Then ActiveSheet.Range(mstrAddress).Select End Sub

Private Sub gobjXLApp_SheetActivate(ByVal Sh As Object)

On Error Resume Next     If mstrAddress > "" Then Sh.Range(mstrAddress).Select End Sub

Private Sub gobjXLApp_SheetSelectionChange(ByVal Sh As Object, _   ByVal Target As Excel.Range)

mstrAddress = Selection.Address End Sub

Ensuite, ouvrez le module « ThisWorkbook » de Personal.xls et copiez-y le code suivant:

Private mobjXLApp As New ClassXLApp

Private Sub Workbook_Open()

Set mobjXLApp.gobjXLApp = Excel.Application End Sub

Une fois que vous avez enregistré Personal.xls et redémarré Excel, la plage dans le premier classeur qui s’ouvre sera sélectionnée dans la feuille de calcul suivante qui est sélectionnée.

_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 (3205) 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:

lien: / excelribbon-Maintaining_the_Active_Cell [Maintenance de la cellule active].