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 travail 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.

Si la cellule ne peut pas être affichée au centre 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").

Fonction VBA pour centrer l'écran sur une cellule

Voici donc le code 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.

Public Function CentrerSurCellule(Cellule As Range)
'par: Excel-Malin.com ( http://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

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
 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 ce code fonctionne, vous devez copier dans votre projet les deux codes (celui de la fonction et celui de l'exemple).

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

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

Centrer = CentrerSurCellule(MaCellule)

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

 

Pour aller plus loin

 

17 0



Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.