VBA: Centrer l’écran sur la cellule spécifiée


Il peut être pratique de centrer la fenêtre de Excel sur une cellule particulière. Le code VBA suivant va afficher la cellule choisie au centre de l'écran. Surtout si on travaille avec des fichiers dont le contenu est "fort étalé" ou dans le cas où vous voulez attirer l'attention de l'utilisateur sur une partie précise de la Feuille de votre Classeur.

Remarque: Si la cellule ne peut pas être affichée au centre exact de la fenêtre, la macro va placer la cellule le plus au centre possible. Ceci peur arriver par exemple le ligne ou la colonne de la cellule spécifiée sont inférieurs à la moitié des lignes/colonnes qui peuvent s'afficher sur l'écran – par ex. les cellules "Z5" ou "B135").

L'avantage de cette fonction est également qu'elle est très rapide et ne ralentira pas particulièrement votre macro VBA.

Fonction VBA pour centrer l'écran sur une cellule

Voici donc le code VBA de la fonction avec des commentaires pour une meilleure compréhension. Cette fonction utilise un argument du type Range: la cellule qui doit se trouver au milieu de l'écran. La fonction retourne un BooleanTrue si tout s'est bien passé, False si la Feuille n'a pas pu être centrée sur la cellule souhaitée…

Public Function CentrerSurCellule(Cellule As Range) As Boolean
'par: Excel-Malin.com ( https://excel-malin.com )
'sur base de: www.cpearson.com/Excel/MainPage.aspx Copyright 2014, Charles H. Pearson

Dim LignesVisibles As Integer
Dim ColonnesVisibles As Integer

Application.ScreenUpdating = False
CentrerSurCellule = False

Cellule.Parent.Parent.Activate
Cellule.Parent.Activate
 
' Extraire le nombre de lignes et de colonnes visibles dans la fenêtre active
 With ActiveWindow.VisibleRange
     LignesVisibles = .Rows.Count
     ColonnesVisibles = .Columns.Count
End With

'Déterminer quelle cellule sera dans le coin supérieur gauche
 With Application
     .Goto reference:=Cellule.Parent.Cells( _
         .WorksheetFunction.Max(1, Cellule.Row + _
         (Cellule.Rows.Count / 2) - (LignesVisibles / 2)), _
         .WorksheetFunction.Max(1, Cellule.Column + _
         (Cellule.Columns.Count / 2) - _
         .WorksheetFunction.RoundDown((ColonnesVisibles / 2), 0))), _
      scroll:=True
 End With

 Cellule.Select
 
 CentrerSurCellule = True
 
 Application.ScreenUpdating = True
 End Function

Exemple d’utilisation de centrage de l'écran en VBA en Excel

L'exemple qui suit va centrer l'écran sur la cellule "AC251″… N'oubliez pas que pour que le code de cet exemple fonctionne, vous devez copier dans votre projet les deux codes (celui de la fonction plus haut et celui de l'exemple qui suit).

Sub CentrerLaFeuille()
'par: Excel-Malin.com ( https://excel-malin.com )
Application.ScreenUpdating = False
On Error GoTo ProcedureErreur

Dim Center As Boolean
Dim MaCellule As Range
Set MaCellule = ActiveSheet.Range("AC251")

Center = CentrerSurCellule(MaCellule)

Application.ScreenUpdating = True
Exit Sub
ProcedureErreur:
    MsgBox "Une erreur s'est produite..."
    Application.ScreenUpdating = True
End Sub

 

Et voici à quoi ressemblera la fenêtre une fois le code exécuté:

Excel/VBA: centrer l'écran sur une cellule (exemple)

Pour aller plus loin en Excel et en VBA

Voici quelques articles supplémentaires qui pourraient vous être utiles…

 

33 0

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.