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 :

trouver les points x et y de la cellule "a1"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut trouver les points x et y de la cellule "a1"
    bonjour,

    le titre n est pas forcement très claire ....
    donc voici quelques explications.

    Dans le cadre d un projet je doit récupérer l evenement mouse_move sur une feuille de calcul pour afficher une boite de dialogue lors du survol de certaines cellules (non prédéfinie pour l instant)

    Je recupère les coordonnée de la souris avec l api
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ' Position de X et Y par rapport a l'écran
         Private Declare Function GetCursorPos Lib "user32" ( _
        lpPoint As POINTAPI) As Long
    je arrete et demarre ma procédure a l aide de l' evenement "Worksheet_BeforeDoubleClick" ce dernier étant directement disponible dans une feuille

    donc voici le code complet qui affiche la position de la souris dans un textbox (crée avec la boite outil)

    ***demmarrage et arret par dbl_click

    dans une feuille
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    Option Explicit
    Dim WinWnd As Long, Ret As String, RetVal As Long, lpClassName As String
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
    ' 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
    Dim stp As Boolean
     
    Private Sub Worksheet_Activate()
    Ret = "Microsoft Excel - evenement_mouse"
    'Search the window
    WinWnd = FindWindow(vbNullString, Ret)
    MsgBox WinWnd
    Call mouse_move
    End Sub
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim res As Integer
    res = IIf(stp = False, "1", "0")
    If res = "1" Then
    stp = True
    Else
    stp = False
    Call mouse_move
    End If
    End Sub
     
    Sub mouse_move()
    Dim pos As POINTAPI
    Do While stp = False
        GetCursorPos pos
        ScreenToClient WinWnd, pos  '......ne sert a rien dans ce cas
        Me.TextBox1 = "Position Horizontale X = : " & pos.X & vbCrLf & _
                "Position Verticale Y = : " & pos.Y
                DoEvents
                If stp = True Then Exit Sub
                GetCursorPos pos
                ScreenToClient WinWnd, pos
    Loop
    End Sub
    comme vous avez pu vous en apercevoir j ai essayé d utiliser l api "screentoclient" pensant pouvoir recupérer les point d origine x=0 et y=0 quant le pointeur est en haut à gauche de la cellule "a1"

    cette api fonctionne tres bien sur un objet "userform" par contre dans le cas
    d une feuille de calcul les coordonnées x=0 et y=0 renvoyé par la fonction correspondent au coin supérieur gauche de la feuille et non pas des cellules.

    Je pourrais palier ce décallage en ajoutant un offcet a cette fonction, mais en suivant de l affichage des feuilles (commandbar,option etc..) cette valeur
    ne sera pas la meme.

    d ou (si vous m avez suivi) ma question comment retrouver les coordonnées de la cellules "a1".


    merci



    l

  2. #2
    Membre Expert
    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
    Par défaut
    Salut
    pas réellement envie de décrypter les macros, donc j'ai pas suivi
    coordonnées de la cellule "D8" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x = Range("D8").Left
    y = Range("D8").Top
    A+

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonjour

    bien essayé

    mais la fonction screentoclient renvoie les coordonnée de la souris sur la feuille
    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    x = Range("a1").Left
    y = Range("a1").Top
    j ai peut etre une idéé

    les coordonnées x et y de la cellules "a1" =

    pour y = largeur intitulé feuille xl + hauteur 1 er commandbar + hauteur 2 eme commandbar ..... * le nb de commandbar

    donc en bouclant sur ttes les commandbar je recupère leur hauteur

    enfin si qqun a plus simple

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour,

    je n'ai pas bien compris ce que tu recherchais,

    la position de la souris mais par rapport à quoi.
    Si ça peut t'aider, tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.Height
    'et
    Application.UsableHeight
    , ainsi que le .top et .Left de ta cellule.

    cordialement

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonsoir fred

    je voudrais avoir la position de la souris par rapport au
    .top et .left de la cellule "a1"

    alors qu actuellement ma fonction me renvoie les point x et y par rapport
    au coin sup gauche de la feuille de calcul


    voir explication + haut

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    SAlut
    Ben je sirais un truc comme ca mais g pas le temps de le tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Souris.x -Application.Left - Cellule.x
    Souris.y -Application.Top - Cellule.y
    Y'aura peut etre une erreur au niveau de la barre de fenetre en haut qui est peut etre pas prise en compte dans x et y cellule ... a verifier, il me semble avoir eu un soucis comme ca mais peut etre etait ce avec un autre language.
    A++
    QWaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. Comment trouver les points intermédiaires entre deux points
    Par pyo666 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 19/04/2010, 16h05
  2. Comment trouver les points des inflections pour une courbe
    Par mihaispr dans le forum Mathématiques
    Réponses: 3
    Dernier message: 30/09/2009, 14h25
  3. Trouver les points d'inflexion d'une courbe lissajou
    Par Ballim dans le forum Mathématiques
    Réponses: 7
    Dernier message: 23/09/2009, 12h31
  4. Trouver les points à l'interieur d'un contour
    Par Niko_de_bordo dans le forum Traitement d'images
    Réponses: 14
    Dernier message: 01/07/2009, 21h20
  5. Trouver les deux points les plus éloignés
    Par giloutho dans le forum Algorithmes et structures de données
    Réponses: 24
    Dernier message: 13/04/2008, 01h48

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