Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Défilement automatique pour positionner une cellule

9 réponses
Avatar
Apitos
Bonjour =C3=A0 tous,

Je voulais essayer de scroller la fen=C3=AAtre active pour positionner la c=
ellule s=C3=A9lectionn=C3=A9e juste par trois lignes au dessous de la limit=
e du volet fig=C3=A9.

J=E2=80=99ai test=C3=A9 avec le cas du choix "C4" et j'ai obtenu un scroll =
de 15 lignes en bas pour positionner la cellule "C4" en bas du volet fig=C3=
=A9 :

[code] 'Scroll de la fen=C3=AAtre active pour le cas du choix C4
ActiveWindow.SmallScroll Down:=3D15
[/code]

Qu'en est-il pour les autres cas ?

'----------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [H2]) Is Nothing Then
On Error Resume Next
Range("A" & WorksheetFunction.Match(Target, [A:A], 0)).Select

'Scroll de la fen=C3=AAtre active pour le cas du choix C4
ActiveWindow.SmallScroll Down:=3D15
End If
End Sub
'----------------------------

Merci d'avance.

9 réponses

Avatar
MichD
Bonjour,

Je ne comprends pas la question...

Cependant si tu veux utiliser la fonction "Match", fais comme ceci :

Application.Match(Target, [A:A], 0)

Lorsque cette fonction est jumelée à WorksheetFunction, un bogue est
généré...

Pourquoi utilises-tu "On error resume next"

Procède de cette manière :
'---------------------------------------------
Dim X as Variant
x = Application.Match(Target, [A:A], 0)

If IsNumeric(x) then
'X représente la ligne
ActiveWindow.SmallScroll Down:
Else
'Match n'a rien trouvé, on efface l'erreur
err.clear
end if
'---------------------------------------------

Pour t'en dire plus, il faudrait d'abord que je comprenne ce que tu veux
faire!

MichD
Avatar
isabelle
bonjour Apitos,

expression.Goto(Reference, Scroll)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [H2]) Is Nothing Then
On Error Resume Next
rw = WorksheetFunction.Match(Target, [A:A], 0)
Application.Goto Range("A" & rw), True
End If
End Sub

isabelle

Le 2016-05-25 16:24, Apitos a écrit :
Bonjour à tous,

Je voulais essayer de scroller la fenêtre active pour positionner la cellule sélectionnée juste par trois lignes au dessous de la limite du volet figé.

J’ai testé avec le cas du choix "C4" et j'ai obtenu un scroll de 15 lignes en bas pour positionner la cellule "C4" en bas du volet figé :

[code] 'Scroll de la fenêtre active pour le cas du choix C4
ActiveWindow.SmallScroll Down:
[/code]

Qu'en est-il pour les autres cas ?

'----------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [H2]) Is Nothing Then
On Error Resume Next
Range("A" & WorksheetFunction.Match(Target, [A:A], 0)).Select

'Scroll de la fenêtre active pour le cas du choix C4
ActiveWindow.SmallScroll Down:
End If
End Sub
'----------------------------

Merci d'avance.

Avatar
Apitos
Bonjour MichD, Isabelle,

Voila un exemple (A tester avec le choix C4) :

http://www.cjoint.com/c/FEzvqAs3SY2
Avatar
isabelle
si tu fait SmallScroll Down: avec le choix C1, la ligne de C1 sera cachée.
à combien de lignes C1 doit être par rapport à la ligne 3 ?
à combien de lignes C2 doit être par rapport à la ligne 3 ?
à combien de lignes C3 doit être par rapport à la ligne 3 ?
etc.
isabelle

Le 2016-05-25 17:17, Apitos a écrit :
Bonjour MichD, Isabelle,

Voila un exemple (A tester avec le choix C4) :

http://www.cjoint.com/c/FEzvqAs3SY2

Avatar
Apitos
Le SmallScroll Down: est propre au choix C4 seulement.

Il faudra un calcul pour positionner les autres choix
Avatar
LSteph
Bonjour,

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [H2]) Is Nothing Then

Application.EnableEvents = False
MyRow = Range("A" & WorksheetFunction.Match(Target, [A:A], 0)).Row - 1


With ActiveWindow
If .FreezePanes Then
Cells(.SplitRow + 1, ActiveCell.Column).Activate
.SmallScroll Down:=MyRow - .SplitRow
End If
End With
End If
Application.EnableEvents = True
End Sub

'LSteph





Le mercredi 25 mai 2016 22:24:30 UTC+2, Apitos a écrit :
Bonjour à tous,

Je voulais essayer de scroller la fenêtre active pour positionner la cellule sélectionnée juste par trois lignes au dessous de la lim ite du volet figé.

J’ai testé avec le cas du choix "C4" et j'ai obtenu un scrol l de 15 lignes en bas pour positionner la cellule "C4" en bas du volet fig é :

[code] 'Scroll de la fenêtre active pour le cas du choix C4
ActiveWindow.SmallScroll Down:
[/code]

Qu'en est-il pour les autres cas ?

'----------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [H2]) Is Nothing Then
On Error Resume Next
Range("A" & WorksheetFunction.Match(Target, [A:A], 0)).Select

'Scroll de la fenêtre active pour le cas du choix C4
ActiveWindow.SmallScroll Down:
End If
End Sub
'----------------------------

Merci d'avance.
Avatar
DanielCo
Bonjour,

Windows(2).Activate
ActiveWindow.ScrollRow = ActiveCell.Row - 3
Daniel

Le SmallScroll Down: est propre au choix C4 seulement.

Il faudra un calcul pour positionner les autres choix
Avatar
LSteph
... C'est valable pour tous tes cas en H2
et même si on change le niveau où c'est figé.

'LSteph


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [H2]) Is Nothing Then

Application.EnableEvents = False
MyRow = Range("A" & WorksheetFunction.Match(Target, [A:A], 0)).Row - 1


With ActiveWindow
If .FreezePanes Then
Cells(.SplitRow + 1, ActiveCell.Column).Activate
.SmallScroll Down:=MyRow - .SplitRow
End If
End With
End If
Application.EnableEvents = True
End Sub

'LSteph
Avatar
Apitos
Bonjour LSteph, Daniel,

Merci pour vos solutions.

Ça fonctionne très bien.

;)