Utilisation de ScrollRow avec des lignes cachées

white-spirit

XLDnaute Occasionnel
Bonsoir Le Forum,

après avoir fouillé le web qq temps, je viens soumettre à vos avis le problème suivant:

- Scroller une feuille Excel (en VBA) en ignorant les lignes qui sont cachées.... comme avec la souris, en faite.

Sur le fichier joint, j'ai créé une petite macro d'essai.

Ctrl+h permet de cacher les lignes 22 à 36
Ctrl+d permet de faire défiler le focus, avec un pas de 5 lignes.

Et le problème est que qd le focus atteint une ligne entre 22 et 36, la zone 1-22 réapparait jusqu'à avoir dépassé la ligne 36, alors la feuille revient au Scroll normal...

Si j'essaie avec le Scroll de la souris (ou la flèche Bas), la zone masquée est sautée automatiquement, comme je le souhaite !

Auriez-vous une idée de code pour y arriver ?

Merci d'avance

Cordialement

WS
 

Pièces jointes

  • test-scroll.xls
    23 KB · Affichages: 25

PMO2

XLDnaute Accro
Re : Utilisation de ScrollRow avec des lignes cachées

Bonjour,

Essayez avec votre code modifié
Code:
Sub dfil()
Dim R As Range
'---
Set R = ActiveCell
ActiveWindow.ScrollRow = R.Row + 5
Set R = R.Offset(5, 0)
Do Until R.EntireRow.Hidden = False
  Set R = R.Offset(1, 0)
Loop
R.Select
End Sub
 

white-spirit

XLDnaute Occasionnel
Re : Utilisation de ScrollRow avec des lignes cachées

Bonsoir,

merci d'avoir répondu...

J'ai essayé avec votre suggestion de code, ça s"améliore, mais ce n'est pas encore la bonne solution...

Je m'explique:

avec ce code, dès que l'on rencontre un nbre de lignes masquées < au pas (ici 5), le résultat est le même qu'un ScrollRow tout simple (les lignes cachées sont comptées) ; si le nbre de lignes cachées est >= au pas, le focus se met a la 1ere suivante non cachée ( ce qui veut dire que je ne me déplace qq fois que de 2 lignes....

Je vais essayer de travailler l'idée du comptage en boucle avec le test de ligne cachée (ou non).

Merci encore d'avoir essayé, à plus tard pour la solution, je l'espère.

Cordialement,

WS
 

PMO2

XLDnaute Accro
Re : Utilisation de ScrollRow avec des lignes cachées

OK.
Essayez ce nouveau code.
D'autre part, ne pas assigner une touche de raccourci par le biais des Options de macro de la boîte de dialogue "Macro". Ceci affecte toutes les feuilles du classeur OU celles de tous autres classeurs ouverts dans la même instance d'Excel.
Pour éviter cela, il faut gérer les raccourcis clavier par programme.

1) copiez le code suivant dans un module Standard
Code:
Public Const MA_FEUILLE As String = "Feuil1"  'constante à adapter

Sub dfil()
Const PAS As Long = 5 'constante à adpter
Dim R As Range
Dim cpt&
'---
Set R = ActiveCell
If R.Row = 1 Then cpt& = 1  'pour omettre la 1ére ligne et aller de 5 en 5 (1,5,10,15, etc)
Do
  Set R = R.Offset(1, 0)
  If R.EntireRow.Hidden = False Then
    cpt& = cpt& + 1
  End If
Loop Until cpt& = PAS
'---
R.Select
End Sub

Sub ActiveOnKeyCtrlD(Optional dummy As Byte)
Application.OnKey "^d", "dfil"
End Sub

Sub DesactiveOnKeyCtrlD(Optional dummy As Byte)
Application.OnKey "^d", ""
End Sub

2) copiez le code suivant dans la fenêtre de code de la feuille concernée
Code:
Private Sub Worksheet_Activate()
Call ActiveOnKeyCtrlD
End Sub

Private Sub Worksheet_Deactivate()
Call DesactiveOnKeyCtrlD
End Sub

3) copiez le code suivant dans la fenêtre de code de ThisWorkbook
Code:
Private Sub Workbook_Activate()
If ActiveSheet.Name = MA_FEUILLE Then Call ActiveOnKeyCtrlD
End Sub

Private Sub Workbook_Deactivate()
Call DesactiveOnKeyCtrlD
End Sub
 

Pièces jointes

  • test-scroll_pmo.xls
    34.5 KB · Affichages: 23

white-spirit

XLDnaute Occasionnel
Re : Utilisation de ScrollRow avec des lignes cachées

Bonjour PMO2, bonjour le Fil,

Eh bien BRAVO! c'est exactement ce que je voulais avoir !

Merci infiniment de vous être intéressé à ce sujet,mon applicatif y gagnera visuellement.

Merci également pour les conseils de gestion des raccourcis clavier, c'est effectivement du bon sens si l'on veut
traiter rigoureusement les commandes délivrées par l'opérateur. J'appliquerais cela systématiquement.

Le sujet est donc maintenant RESOLU.

A bientôt, sur d'autres questions ....

Bien cordialement

WS
 

Discussions similaires

Statistiques des forums

Discussions
312 391
Messages
2 087 940
Membres
103 679
dernier inscrit
yprivey3