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 :

[VBA-E] Coordonnées de la souris


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Par défaut [VBA-E] Coordonnées de la souris
    Bonjour,

    J'ai un petit soucis pour recuperer les coordonnées de la souris sur une frame. Logiquement, j'ai utilisé la fonction:
    Frame2_MouseMove(...)
    Seulement, lorsque la souris passe sur un label, une image,... se trouvant sur ma frame, je n'obtient plus les coordonnées.

    Comment proceder pour les obtenir correctement ?

    ps: j'ai essayé en supperposant un label transparent sur la frame et en utilisant le même procédé ( Label5_MouseMove(...) ) seulement, sa me bloque l'accés a d'autre objets situé sous le label :s

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Par défaut
    Il me semble me souvenir avoir trouvé dans la FAQ un code qui récupère les coordonnées de la souris
    mais je sais pas si ça marche en VBA Excel

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Par défaut
    oui, dans la FAQ VB, moi je travaille en VBA

    j'ai essayé quand meme et j'ai une erreur sur la ligne:
    ScreenToClient Me.hwnd, pos
    erreur: "Membre de methode ou de donnée introuvable"

    le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    ' Position de X et Y par rapport a l'écran
    Private Declare Function GetCursorPos Lib "user32" ( _
        lpPoint As POINTAPI) As Long
     
    ' Position de X et Y par rapport a la fenètre et a GetCursorPos
    Private Declare Function ScreenToClient Lib "user32" ( _
        ByVal hwnd As Long, _
        lpPoint As POINTAPI) As Long
     
    Private Type POINTAPI
        X As Long
        Y As Long
    End Type
     
    ' Affiche un point sous le curseur quand on clique sur la feuille
    Private Sub UserForm_Click()
    Dim pos As POINTAPI
    GetCursorPos pos
    ScreenToClient Me.hwnd, pos
    TextBox7.Text = pos.X
    TextBox8.Text = pos.Y
    End Sub
    Ensuite, je ne pense que sa resolve mon probleme, puisque la fonction s'execute lors d'un clic sur Userform et si j'ai un bouton, une image ou autre sur ma form, la fonction ne se lance pas, du coup je n'obtient toujours pas la position.

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Essaye avec 0 à la place de Me.hwnd.

    SGDG...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    OUI, Alain !
    C'est ce qui convient avec VBA (0 par défaut). J'approuve sans réserve

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    ' Position de X et Y par rapport a l'écran
    Private Declare Function GetCursorPos Lib "user32" ( _
        lpPoint As POINTAPI) As Long
    ' Position de X et Y par rapport a la fenètre et a GetCursorPos
    Private Declare Function ScreenToClient Lib "user32" ( _
        ByVal hwnd As Long, _
        lpPoint As POINTAPI) As Long
     
    Private Type POINTAPI
        X As Long
        Y As Long
    End Type
     
     
    Private Sub Frame2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Dim pos As POINTAPI
        GetCursorPos pos
        ScreenToClient 0, pos '?
        TextBox7.Text = pos.X
        TextBox8.Text = pos.Y
    End Sub

    En effet, il fallait bien mettre 0 a la place de me.hwnd.
    Seulement, comme je det plus haut, cette fonction ne resoud pas mon problême.
    Lorsque je suis sur la frame avec mon curseur, aucun problême, seulement lorsqu'il y a un label ou une image sur ma frame la fonction: Frame2_MouseMove ne s'applique plus donc je n'obtient plus mes coordonnées.

    ps: Et pour un autre problême, je ne peut pas appliquer cette fonction sur tous les controles situés dans la frame...

Discussions similaires

  1. Coordonnées de la souris sur une image
    Par renaud26 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2006, 21h11
  2. [VBA-E]coordonnées de la derniere cellule marqué sur excel
    Par amelhog dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/02/2006, 19h39
  3. Réponses: 6
    Dernier message: 04/12/2005, 15h34
  4. bouger une div selon les coordonnées de la souris
    Par 10-nice dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 21/09/2005, 15h31
  5. Réponses: 2
    Dernier message: 14/09/2005, 18h09

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