A nouveau,
Donc rajouter au .TOP une valeur pour le zoom de 90% et une autre valeur si le zoom est à 80%?
Vu que ton Top dépend de la ligne active, et que la fenêtre Window est correcte quand le zoom est en modulo 50 (Reliquat = 0).
C'est à dire que le zoom divisé par 50 donne un nombre entier (aucun reliquat). Sinon le rapport serait un nombre décimal. Exemple: pour 90 -> 1,80
Même si cela pourrait être réalisable quelque soit le niveau de zoom, cela va dépendre du nombre de lignes que ton tableau pourra atteindre.
Car il faudra actualiser la formule en fonction de la valeur (en milliers) de la ligne active et du pourcentage zoom (> ou < à 100%).
Donc il est préférable comme dit dans mon dernier message d'utiliser la forme en zoom 100%.
Bien sur cela peut se faire par macro pour éviter les manipulations manuelles de zoom.
Donc en Selection_Change, ajouter après le Rows.count. Aussi il serait préférable que celui-ci soit actif uniquement sur la colonne B et non tout le tableau.
Range("B1").Value = Target.Rows.Count
Range("C1").Value = ActiveWindow.Zoom
Au début du code de
Sub Heures_DisplayButtons()
ActiveWindow.Zoom = 100
Enfin rétablir le niveau de zoom au lancement de l'opération effacer ou copier.
Sub Heures_Effacer_ligne()
Dim Mi As Integer
ActiveWindow.Zoom = [C1]
........
Sub Heures_Copier_ligne()
ActiveWindow.Zoom = [C1]