Défilement automatique pour positionner une cellule
Le
Apitos

Bonjour à tous,
Je voulais essayer de scroller la fenêtre active pour positionner la c=
ellule sélectionnée juste par trois lignes au dessous de la limit=
e 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:=15
[/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:=15
End If
End Sub
'-
Merci d'avance.
Je voulais essayer de scroller la fenêtre active pour positionner la c=
ellule sélectionnée juste par trois lignes au dessous de la limit=
e 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:=15
[/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:=15
End If
End Sub
'-
Merci d'avance.
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
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 :
Voila un exemple (A tester avec le choix C4) :
http://www.cjoint.com/c/FEzvqAs3SY2
à 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 :
Il faudra un calcul pour positionner les autres choix
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 :
Windows(2).Activate
ActiveWindow.ScrollRow = ActiveCell.Row - 3
Daniel
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
Merci pour vos solutions.
Ça fonctionne très bien.
;)