IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[E-00] Detection scrolling vertical sur la fenetre principale


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [E-00] Detection scrolling vertical sur la fenetre principale
    Bonjour

    Afin de réaliser un bouton suiveur en haut à droite de ma fenêtre principale, je cherche à capter un évènement du type "scrolling vertical" de la fenêtre principale.
    Mon idée est "d'accrocher" l'emplacement du bouton avec la ligne affichée en haut de l'écran.

    Visiblement en VBA on ne peut qu'afficher ou cacher cette barre vertical avec la propriété "DisplayVerticalScrollBar"

    Est ce possible ? ou doit on utilser les fonctions d'API ?

    Dans le cas d'utilisation d'API, quelle fonction détecte ce genre d'évènement ?

    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour tijuma le forum une approche de solution tu cree un bouton dans ta feuille en haut a droite des que tu clic dans une cellule le bouton suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveSheet.CommandButton1.Select
        With Worksheets(1)
          .CommandButton1.Top = .Rows(Target.Row).Top
        End With
            Target.Select
    End Sub

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour Laetitia.

    Merci pour l'idée, cela résout en partie mon problème.

    Il faut quand même cliquer dans une cellule.

    Est il possible de faire la même chose en récupérant par ex l'adresse de la cellule se retrouvant en haut de la fenêtre après une action sur l'ascenseur vertical ?

    Merci

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonsoir,

    la seule méthode orthodoxe que je connaisse en la matière (de détection d'utilisation de l'ascenseur par l'utilisateur final... et ce : quelle que soit la fenêtre - Excel ou non - utilisée) passe par le sous-classement (subclassing) et l'interception du message Windows WM_VSCROLL (pour l'ascenseur vertical) ou WM_HSCROLL (pour l'ascenseur horizontal).
    La technique du sous-classement n'est jamais une affaire simple et ne supporte auucune faille. Elle n'est par ailleurs pas sans risques (notamment si on la pratique mal).
    Si tu y tiens vraiment, je t'enverrai vers un peu de lecture (elle sera alors vraisemblablement en anglais...).

    Re...

    Mais je vois qu'au bout du compte, tout ce que tu cherches à faire est de garder sans cesse à la vue ton bouton.
    Pourquoi ne pas alors :
    - "geler" le 1er rang (sélection de la cellule A1 ==>>Window->Freeze panels)
    - ancrer (anchor) ton bouton à l'une des cellules de ton choix, sur le 1er rang)

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut à tous
    La solution d'ucfoutu ne semble meilleure, sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If ActiveWindow.ScrollRow <> 1 Then ActiveWindow.ScrollRow = 1
    If ActiveWindow.ScrollColumn <> 1 Then ActiveWindow.ScrollColumn = 1
    End Sub
    A+

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour ces réponses rapides

    Pas le temps ce Week-end d'essayer, je m'y intéresse la semaine prochaine.

    @+

Discussions similaires

  1. Rester sur la fenetre principale
    Par mizow dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 20/04/2012, 14h13
  2. Réponses: 1
    Dernier message: 16/11/2010, 11h07
  3. N'avoir qu'un scroll vertical sur mon iframe
    Par ikramta dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 24/10/2009, 00h25
  4. Problème scroll vertical sur IE
    Par xtope dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 10/07/2009, 15h49
  5. Désactiver le scroll vertical sur la balise div
    Par wajdopovitch dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 02/03/2009, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo