|
|
|
|
Bonjour,
Je cherche à faire une macro, pour que la barre de défilement verticale (à droite donc) s'ajuste automatiquement au nombre de lignes non vides.
Par exemple j'ai une base de donnée d'un milliers de lignes, par défaut ma barre verticale est bien ajustée, c'est à dire lorsque je la selectionne et la descend au plus bas, elle se retrouvera à la hauteur de ma 1000ème ligne. Mais si je fais une mauvaise manipulation (un "CTRL" + "Shift" + "Fleche en bas" sur une cellule vide), je me retrouve avec une sélection allant jusqu'à la ligne 65536. Dans ce cas, la barre verticale est ajutée en fonction et c'est assez compliqué de retrouver ma 1000ème ligne en passant par la barre de défilement verticale...
En cherchant un peu sur internet j'ai trouvé le code : scrollbar1.max=range("cellule").value sauf que chez moi ça ne marche pas, erreur : "Object required". Et puis rien ne garantit que c'est le bon code pour mon problème. D'autant plus que j'ai aussi trouvé la dénomination : "verticalscrollbar" qui à mon avis correspond plus à la barre de défilement verticale, mais comment lui associer une valeur?
Quelqu'un aurait-il une idée?
PS: je suis plutot nul en VBA, donc excusez-moi si j'ai fais des erreurs.
Merci par avance.
Si tu ne sais pas demande, si tu sais partage.Configuration: Windows XP
Internet Explorer 6.0
Excel 2002 SP3
Bonjour lermite222,
|
Hm....je ne peux pas modifier mes post (enfin le premier). Tant pis.
|
Répondre à lermite222
|
Peut-être que cela sera mieux si tu met la dernière formule dans l'événement Change de la feuille, mais pour laisser une place pour d'éventuelle ajout...
|
Bonjour,
|
Pour terminer l'exposer de eric,
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Col as long
Dim Lig as long
col = Range("A1").SpecialCells(xlCellTypeLastCell).column +2
Lig = Range("A1").SpecialCells(xlCellTypeLastCell).Rows + 2
Me.ScrollArea = Range(Cells(1,1),Cells(Lig,Col))
End Sub
J'espère que c'est asser clair, sinon tu dit... A+ L'expérience instruit plus sûrement que le conseil. (André Gide) |
Ok, merci pour toutes ces précisions.
|
Excuse, j'ai cru que c'érait simple mais en fait c'est un peu plus compliqué...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Col As Long, A
Dim Lig As Long
Application.EnableEvents = False 'Quand définit A, tourne en rond...
Me.ScrollArea = "" 'si pas libérer plante quand ont définit plus grand.
A = Range("A1").SpecialCells(xlCellTypeLastCell).Address
Col = Range(A).Column + 2
Lig = Range(A).Row + 2 n'Pas de 'S' à Row
Me.ScrollArea = Range(Cells(1, 1), Cells(Lig, Col)).Address
Application.EnableEvents = True
End Sub
Maintenant j'ai testé et ca fonctionne comme dit... A+ L'expérience instruit plus sûrement que le conseil. (André Gide) |
Ok, le code marche cette fois, je pensais que j'étais vraiment de main gauche sur le coup :)
|
Bonjour à tous,
|