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.
Vous pouvez donc, par exemple figer la première ligne de votre Feuille et y placer des boutons qui, lors du click, vous "transporteront" à la section souhaitée de votre Feuille…
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 Boolean
– True
si tout s'est bien passé, False
si la Feuille n'a pas pu être centrée sur la cellule souhaitée…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
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).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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é:
Pour aller plus loin en Excel et en VBA
Voici quelques articles supplémentaires qui pourraient vous être utiles…
- Savez-vous qu'en VBA, il est possible de trouver la résolution de l'écran?
- Et s'il vous arrive que la Feuille se déplace sur l'écran lorsque vous appuyez sur les touches de position (les flèches), voici comment rétablir la situation.
- Vous pouvez aussi consulter la Liste de toutes les fonctions VBA
- … ou encore la Liste de toutes les fonctions Excel
- Comment utiliser RECHERCHEV et autres fonctions Excel directement en VBA? (tutoriel)
- Tout sur les principales fonctions Excel: RECHERCHEV, RECHERCHEX, SI, NB.SI, SOMME.SI,…
- et pour finir – le maxi-tutoriel sur le Tableau croisé dynamique Excel
- Site de Charles Pearson contenant beaucoup d'informations utiles sur VBA (en anglais)