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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26399569
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
isabelle
Le #26399568
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.

Apitos
Le #26399572
Bonjour MichD, Isabelle,

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

http://www.cjoint.com/c/FEzvqAs3SY2
isabelle
Le #26399571
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

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

Il faudra un calcul pour positionner les autres choix
LSteph
Le #26399596
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.
DanielCo
Le #26399605
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
LSteph
Le #26399609
... 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
Apitos
Le #26399627
Bonjour LSteph, Daniel,

Merci pour vos solutions.

Ça fonctionne très bien.

;)
Publicité
Poster une réponse
Anonyme