Centrer une cellule, explication

Fermé
simonsimon1 Messages postés 8 Date d'inscription mardi 29 mai 2018 Statut Membre Dernière intervention 15 juin 2018 - Modifié le 7 juin 2018 à 16:38
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 - 11 juin 2018 à 11:54
Bonjour,

J'ai ce premier code :

Private Sub CommandButton1_Click()


Sheets("feuil2").Select
Range("B4").Select

Set rcible = Range("B4")
Run ("CentrerCellule")

End Sub


Et celui là :


Sub CentrerCellule()


Dim iRow As Integer
Dim iCol As Integer

iRow = rcible.Row - ActiveWindow.VisibleRange.Rows.Count / 2
If iRow < 1 Then iRow = 1
iCol = rcible.Column - ActiveWindow.VisibleRange.Columns.Count / 2
If iCol < 1 Then iCol = 1
ActiveWindow.ScrollColumn = iCol
ActiveWindow.ScrollRow = iRow
End Sub


Je comprends ce que fais le code à la fin (centrer sur B4) mais j'aurais aimé savoir si il était possible de m'expliquer exactement ce que fais exactement cette ligne : ActiveWindow.VisibleRange.Rows.Count / 2
(et les autres au passage, notamment ActiveWindow.ScrollColumn)
Ils entendent quoi exactement par cellules visibles car si c'était toutes les cellules de la feuille, ça me renverrai à chaque fois 1 et donc pas la cellule B4 au final..


Voilà, j'espère que quelqu'un pourra m'éclairer

Merci!!

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

4 réponses

bonjour
pour centrer ses tout simple

Sub Macro1()
Sheets("Feuil2").Range("B4").HorizontalAlignment = xlCenter
End Sub


A+
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié le 10 juin 2018 à 15:20
Bonjour

Dim rcible As Range

Sub CentrerCellule()
Dim iRow As Integer
Dim iCol As Integer
Set rcible = Range("H20")
iRow = rcible.Row - ActiveWindow.VisibleRange.Rows.Count \ 2
If iRow < 1 Then iRow = 1
iCol = rcible.Column - ActiveWindow.VisibleRange.Columns.Count \ 2
If iCol < 1 Then iCol = 1
ActiveWindow.ScrollColumn = iCol
ActiveWindow.ScrollRow = iRow
End Sub


Cette procédure centre la cellule rcible dans la feuille (visible)

Exemple

En supposant qu'au départ
- la 1° cellule visible est A1
- les colonnes visibles vont de A à K (11 colonnes)
- les lignes visibles vont de 1 à 31 (31 lignes)
- la cellule rcible a pour adresse H20

iRow et iCol seront calculées comme les coordonnées de la 1° cellule (en haut à gauche) de fenêtre visible centrée sur rcible

rcible.Row renvoie le numéro de ligne de rcible (20)
ActiveWindow.VisibleRange.Rows.Count : renvoie le nombre de lignes visibles dans la feuille (31)
ActiveWindow.VisibleRange.Rows.Count \ 2 renvoie donc 15
rcible.row est le numéro de ligne de la cellule rcible
iRow = rcible.Row - ActiveWindow.VisibleRange.Rows.Count \ 2 donnera 5 (1° ligne de la fenêtre vivible)

idem pour le calcul de iCol qui vaudra 8-11\2 = 3 (colonne C)

ActiveWindow.ScrollRow : définit le numéro de la 1° ligne de la fenêtre visible

idem pour ActiveWindow.ScrollColumn = iCol

et la 1° cellule (en haut à gauche) de la fenêtre sera C5

Cdlmnt
0
simonsimon1 Messages postés 8 Date d'inscription mardi 29 mai 2018 Statut Membre Dernière intervention 15 juin 2018
11 juin 2018 à 10:50
Ah d'accord merci pour l'explication!!
0
simonsimon1 Messages postés 8 Date d'inscription mardi 29 mai 2018 Statut Membre Dernière intervention 15 juin 2018
11 juin 2018 à 11:06
moi ca me place B4 en premiere cellule, une histoire d'arrondi?
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
11 juin 2018 à 11:27
Une ligne/colonne ne peut pas être "partagée"
Vérifies combien tu as de lignes/colonnes visibles (même à peine) avant et après la cellule cible.

Cdlmnt
0
simonsimon1 Messages postés 8 Date d'inscription mardi 29 mai 2018 Statut Membre Dernière intervention 15 juin 2018
11 juin 2018 à 11:35
Ah c'est bon ca marche, merci!!

Cordialement.
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
11 juin 2018 à 11:54
De rien

Si c'est fini, peux tu mettre le sujet à résolu (en haut à droite, la roue dentée)

Bonne journée
0