Affichage des mêmes cellules sur différentes feuilles de calcul (Microsoft Excel)
Lors de l’utilisation de plusieurs feuilles de calcul, Chris se demande s’il existe un moyen de «verrouiller» le défilement de toutes les feuilles de calcul. Par exemple, s’il fait défiler vers le bas et sur la feuille Sheet1 jusqu’à ce que les lignes 100 à 140 et les colonnes G à P soient visibles, alors quand il passe à Sheet2 (ou à toute autre feuille de calcul), il aimerait que les mêmes lignes et colonnes soient affichées sur ces feuilles de travail.
La seule façon d’accomplir cette tâche consiste à utiliser des macros. Ce qui doit se passer, c’est que la macro doit déterminer quelles lignes et colonnes sont visibles lorsqu’une feuille est désactivée (à gauche), puis définir l’affichage de la feuille activée (celle que vous allez) sur les mêmes lignes et colonnes. Les macros suivantes, ajoutées au module ThisWorkbook, exécutent exactement cette tâche.
Dim grngSelection As Range Dim gintScrollColumn As Integer Dim glngScrollRow As Long Private Sub Workbook_SheetActivate(ByVal Sh As Object) If TypeName(ActiveSheet) = "Worksheet" Then On Error Resume Next With ActiveWindow Sh.Range(grngSelection.Address).Select .ScrollColumn = gintScrollColumn .ScrollRow = glngScrollRow End With End If End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) Dim oSheet As Object If TypeName(Sh) = "Worksheet" Then Set oSheet = ActiveSheet Application.EnableEvents = False Sh.Activate With ActiveWindow gintScrollColumn = .ScrollColumn glngScrollRow = .ScrollRow Set grngSelection = .RangeSelection End With oSheet.Activate Application.EnableEvents = True End If End Sub
Notez l’utilisation des variables en dehors des gestionnaires d’événements. Ces variables sont utilisées pour transmettre les valeurs de la colonne, de la ligne et de la zone sélectionnée du gestionnaire SheetDeactivate au gestionnaire SheetActivate.
Bien sûr, vous ne voudrez peut-être pas une solution automatique. Au lieu de cela, vous souhaiterez peut-être que l’utilisateur effectue une étape spécifique pour déterminer si les feuilles de calcul sont synchronisées. Cela peut être fait en ajoutant la macro suivante à un module normal de votre classeur:
Global WindowScrollRow Global WindowScrollCol Global WindowSyncOn As Boolean Public Sub WindowLock() If Not WindowSyncOn Then WindowScrollRow = ActiveWindow.VisibleRange.Row WindowScrollCol = ActiveWindow.VisibleRange.Column Application.StatusBar = "WindowSync: ON" Else Application.StatusBar = "" End If WindowSyncOn = Not WindowSyncOn End Sub
Tout ce que fait cette macro est de vérifier l’état de la variable globale WindowSyncOn. Si la valeur est False, les paramètres actuels de la ligne visible supérieure et de la colonne visible la plus à gauche sont stockés dans des variables globales. Le paramétrage de ces variables est ensuite utilisé par le gestionnaire d’événements suivant, ajouté au module ThisWorkbook:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) If WindowSyncOn Then If Not ActiveWindow Is Nothing Then ActiveWindow.ScrollRow = WindowScrollRow ActiveWindow.ScrollColumn = WindowScrollCol End If End If End Sub
La macro vérifie simplement le réglage de la variable WindowSyncOn, et si elle est True (elle a été définie), alors la macro définit quelle ligne et colonne se trouvent en haut et à gauche de la fenêtre active.
_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 (3860) s’applique à Microsoft Excel 97, 2000, 2002 et 2003.