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 :

Définir la Position du Pointeur de la Souris à l'ouverture d'un UserForm [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai Avatar de Zygomatic
    Homme Profil pro
    Salarié
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Salarié

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Définir la Position du Pointeur de la Souris à l'ouverture d'un UserForm
    Bonjour,

    Comme l'indique le titre du Topic,

    Je recherche une procédure me permettant de déplacer le Pointeur de la Souris vers un bouton spécifique de mon UserForm dès son ouverture.

    Malgré plusieurs recherches sur ce forum et d'autres, les solutions que je trouve consistent en fait à mettre le focus sur un bouton ou une TextBox
    (MonBouton.SetFocus)
    Cette ligne est déjà présente dans mon code, ce qui me permet de pouvoir directement activer la fonction liée par appui sur "Entréé",
    mais je souhaiterais en plus, que le pointeur (la flèche) de la souris soit au-dessus de ce bouton, à l'instar de ce qui se fait automatiquement pour une MsgBox par défaut.

    Je pourrais calculer la position de la souris avant l'ouverture de l'usf, Définir, l'emplacement de l'usf, calculer l'écart entre le centre du bouton et le coin superieur gauche de mon usf et ainsi determiner les coordonnées du pointeur de ma souris, mais cela me semble un peu capilo-tracté.

    Donc si quelqu'un a une solution plus simple type
    MonBouton.SetMousse, je suis grandement preneur !

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Je ne vois vraiment pas ce que pourrait être l'utilité d'une telle démarche.
    Si tu y tiens toutefois, sache qu'il te faudra :
    1) transposer en pixels les coordonnées du contrôle concerné
    2) utiliser une fonction de l'Api de Windows (SetCursorpos) pour placer ton curseur aux coordonnées ainsi définies.
    On s'écarte là de VBA (à ce point que je ne t'indiquerais personnellement ce code que lorsque tu m'auras exposé très précisément et très clairement le but exact de ce "tsoin-tsoin ).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Zygomatic Voir le message
    Bonjour,

    Salut Jacques.

    Avant de faire cela, avez-vous réglé l'ordre des tabulations dans votre Userform ?

    Sinon Clic droit sur le userform, sélectionner Ordre de tabulation et mettre votre contrôle en tête.

  4. #4
    Membre à l'essai Avatar de Zygomatic
    Homme Profil pro
    Salarié
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Salarié

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par unparia Voir le message
    Je ne vois vraiment pas ce que pourrait être l'utilité d'une telle démarche.
    Lorsqu'un MsgBox vbYesNo s'ouvre, chez moi, le pointeur de la Souris se positionne directement sur le bouton Oui. Il me semble que c'est une option de pointage de Windows (paramètre souris) et j'aurais espéré qu'elle puisse être récupérable dans une fonction ou procédure VBA.

    Est-ce que c'est essentiel ? NON
    C'est juste à mon sens un confort d'utilisation lorsque tu interagis sur un usf avec plusieurs choix cliquables. Le pointeur se positionne sur le choix par défaut, mais le déplacement est raccourcis pour les autres choix.

    Certes il y a la possibilité d'utiliser les touches tabulation pour se déplacer plus rapidement, mais, pour être le "référent informatique" de mon établissement, je me rends bien compte qu'une très faible majorité utilisent les raccourcis clavier (y compris les plus connus ctrl+c et ctrl+v) alors la touche Tab ... Même la validation par "Entrée" du bouton sur lequel le focus aura été mis, est loin d'être connu et utilisé par tous.

    Si cela ne prends pas beaucoup de temps avec la souris de parcourir ces distances, lorsqu'on utilise un TouchPad ou un TrackPad auquel on est pas habitué, ou sur des portables durcis type PANASONIC ThoughtBook, tout déplacement est une vraie galère.

    Voilà donc le pourquoi de mon souhait, mais ce n'est en rien indispensable.

    En résumé, si ça tient en 3 lignes, je l'intègre, si ça part en cacahuète comme ça a l'air d'être le cas, cela n'a que peu d’intérêt

    @+

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Hé bé !
    Si ce n'est qu'avec cette finalité, Eric KERGRESSE, que je salue, t'a donné la solution, SANS LA MOINDRE LIGNE DE CODE ....
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    rien de bien compliqué en soit
    exemple
    le curseur se pose sur le coin haut/gauche du checkbox1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
     
    Private Sub UserForm_Activate()
    With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With
     x = (Me.Left + 3 + CheckBox1.Left) * ppx
    y = (Me.Top + (Me.Height - Me.InsideHeight) + 3 + CheckBox1.Top) * ppx
    SetCursorPos x, y
    End Sub
    le 3 chez moi c'est l'épaisseur du cadre de l'userform il te faudra adapter
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Patrick
    Pourquoi faire simple lorsque l'on peut faire compliqué, hein ...
    La réponse de Eric est on ne peut plus simple ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    la réponse d'Eric n'a rien a voir avec le curseur elle donne le focus au premier control (index 0)

    le demandeur a posé une question ,je répond exactement a sa demande ,je me garderais bien de commenter sur une quelconque utilité ou quoi que se soit

    je ne vois aucune raison vu la simplicité du code de s'abstenir

    a bon entendeur

    edit:
    et au cas ou le control visé ne serait pas enfant direct du userform

    voila cette version j'en ai même fait une toute petite fonction

    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
    Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
    Private Sub UserForm_Activate()
        pose_cursor_on_conbtrol_form Frame1.CheckBox1
    End Sub
     
     
    Function pose_cursor_on_conbtrol_form(ctrl)
        With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With
        If ctrl.Parent.Name <> Me.Name Then
            Set par = ctrl.Parent
            x = x + par.Left: y = y + par.Top:
            Do: DoEvents:  Set par = par.Parent: x = x + par.Left: y = y + par.Top: Loop While par.Name <> Me.Name
        Else: x = Me.Left: y = Me.Top
        End If
        x = (x + ctrl.Left + 3) * ppx: y = (y + (Me.Height - Me.InsideHeight) + 9 + ctrl.Top) * ppx
        SetCursorPos x, y
    End Function
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre à l'essai Avatar de Zygomatic
    Homme Profil pro
    Salarié
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Salarié

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par unparia Voir le message
    Hé bé !
    Si ce n'est qu'avec cette finalité, Eric KERGRESSE, que je salue, t'a donné la solution, SANS LA MOINDRE LIGNE DE CODE ....
    Alors Messieurs, soit je n'est pas compris la procédure d'Eric, j'ai pourtant , bien qu'étant septique sur le résultat, essayé de changer l'ordre de tabulation de mon userform en passant mon bouton en tête de liste, soit c'est vous qui n'avais pas compris mon besoin.

    Je pencherais sur la 2ème possibilité.
    Là encore 2 possibilité : soit je me suis mal exprimé, soit vous lisez trop vite.
    Là encore, vu que Patrick a su comprendre mon besoin, j'opterais aussi pour la 2ème solution.

    Je ne discute en rien vos compétences dans le domaine, mais je ne comprend pas pourquoi bon nombre de Dr comme vous s’évertuent à dénigrer, le besoin du demandeur sous prétexte ou non qu'il soit certainement profane.
    Le mot dénigrer est peut être un peu fort mais c'est ce que ma susceptibilité m'indique lorsque je lis "Si ce n'est QU'avec cette finalité,...", et que je vois que vous répondez à côté de ma demande alors que je l'ai à 2x explicitée

    Je comprendrais, si mon besoin n'était pas expliqué, si j'écrivais en langage SMS, si j'étais incorrect, mais je ne pense pas que ce soit le cas.

    A moins que je ne me fourvoie complètement, que vous m'ayez trouvé la solution recherchée et que je m'y prenne comme un manche pour l'appliquer.
    Merci quand même pour avoir essayé de m'aider

    @Patricktoulon
    Merci d'avoir lu attentivement ma requête et d'y avoir répondu.

    Ton code est un peu plus long que ce que j'aurais espéré (dans la mesure ou je pensais que c'était une fonction intégrée comme pour le focus), mais ça reste très raisonnable.
    Je vais donc l'essayer sur la version N+1 du fichier (je suis pour l'instant en vN sur une autre procédure qui me donne du fil à retordre).
    Je ne manquerai pas de revenir ici dire si cela correspond à mes attentes et ainsi marquer ce Topic comme résolu.

    Merci encore,

    Zygo

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    de rien
    j'ai le même soucis que toi perso avec mon portable et mes gros doigts sur le touchpad une vrai galère ce machin
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    A zygomatic :
    Je ne te comprends vraiment pas :
    relisons ce que tu as écris, à savoir :
    Lorsqu'un MsgBox vbYesNo s'ouvre, chez moi, le pointeur de la Souris se positionne directement sur le bouton Oui. Il me semble que c'est une option de pointage de Windows (paramètre souris) et j'aurais espéré qu'elle puisse être récupérable dans une fonction ou procédure VBA.
    Cela ne déplace pas le curseur ni ne le positionne, le "oui" a simplement le focus en 1er, sans que le curseur ne se déplace à l'écran.
    Et c'est très exactement le résultat que tu obtiendrais avec ce que t'a indiqué Eric KeRGRESSE !
    Donne donc la valeur 0 à la propriété TabIndex du contrôle de ton choix, ouvre le userform et constate.
    A Patrick :
    Le demandeur a posé une question ,je répond exactement a sa demande
    Je ne le crois pas. Et c'est encore moins vrai lorsque tu ajoutes :
    et au cas ou le control visé ne serait pas enfant direct du userform
    qui va au-delà de la demande.



    De plus, Patrick : ton code ne fait que positionner le curseur sur le contrôle.
    Fais donc au moins un essai, avec deux boutons de commande :
    Imagine que le bouton de tabindex 0 soit le commandbutton1 et place avec ton code le curseur sur le bouton Commandbutton2 puis appuie sur la touche ENTER (geste et/ou comportement plutôt fréquents, hein ..) . Ce qui s'exécutera ne sera pas le code de commandbutton2, mais celui de commandbutton1 (et pour cause). Tout cela me parait plutôt fantaisiste ... et n'est pas du tout l'équivalent de l'exemple msgbox évoqué et que le demandeur prend comme modèle.

    Maintenant, Zygomatic, prends la décision que tu voudras, mais ce sera au moins en parfaite connaissance de cause (et des aléas éventuels et indésirables induits).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  12. #12
    Membre à l'essai Avatar de Zygomatic
    Homme Profil pro
    Salarié
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Salarié

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par unparia Voir le message
    ...Cela ne déplace pas le curseur ni ne le positionne, le "oui" a simplement le focus en 1er, sans que le curseur ne se déplace à l'écran
    Voici une capture d'écran de ma MsgBox, et je t'assure que ce n'est pas moi qui ai déplacer le pointeur et que le bouton déclencheur ne se trouve pas du tout dessous cette fenêtre. Il y a bien un déplacement.
    Nom : rGtx4Nj.png
Affichages : 2894
Taille : 13,9 Ko
    Depuis le début, je parle de pointeur de souris, et vous vous me parlez de Focus ou de TabIndex.
    Sommes-nous d'accord qu'il s'agit de 2 choses différentes ou c'est moi qui confond ?

    Citation Envoyé par unparia Voir le message
    Et c'est très exactement le résultat que tu obtiendrais avec ce que t'a indiqué Eric KeRGRESSE !
    Donne donc la valeur 0 à la propriété TabIndex du contrôle de ton choix, ouvre le userform et constate.
    Chez moi ça ne déplace pas le pointeur de la souris comme ce que j'aurais souhaité avoir.

    Je n'ai pas encore testé le code de Patrick, mais il semble même s'il n'est pas parfait, qu'il se rapproche de ma demande, non ?

    Vous semblez être dubitatif quant à la pertinence de ma requête. Cette fonction existe sous Windows, et ce n'est pas moi qui l'ai créer, c'est donc que des utilisateurs autres que moi y trouvent un intêret.Nom : 6058Fkf.png
Affichages : 3043
Taille : 34,0 Ko

    Edit : désolé, les images sont un peu trop grosses mais je ne sais pas comment les réduire

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Zygomatic Voir le message
    Je recherche une procédure me permettant de déplacer le Pointeur de la Souris vers un bouton spécifique de mon UserForm dès son ouverture.
    Dans ton message d'origine, tu parles de Userform, je t'ai donc répondu par rapport à ce qu'on ferait pour pointer sur le contrôle que tu veux utiliser en premier.

    D'après ce que je vois, tu utilises un Msgbox, où est-ce moi qui me trompe ? Si c'est cela, c'est sûr qu'on ne peut pas se comprendre.

    Comme tu parles de Userform, la réaction de ceux qui t'ont lu à sans doute été comme la mienne. Maintenant désolé, si ma réponse est complètement à côté de la plaque, y compris celle-ci.

    Bon courage.

    Bravo Patrick, j'apprends toujours des trucs nouveaux.

  14. #14
    Membre à l'essai Avatar de Zygomatic
    Homme Profil pro
    Salarié
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Salarié

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Dans ton message d'origine, tu parles de Userform, je t'ai donc répondu par rapport à ce qu'on ferait pour pointer sur le contrôle que tu veux utiliser en premier.
    Sauf que tu ne pointe pas, tu mets un focus. Pointer c'est mettre le pointeur de la souris dessus. c'est pour cela que j'avais écris Pointer en gras. Et dès le début je dis bien que ce n'est pas le focus qui m'interesse.



    ...D'après ce que je vois, tu utilises un Msgbox, où est-ce moi qui me trompe ? Si c'est cela, c'est sûr qu'on ne peut pas se comprendre...
    Pour illustrer mon propos, j'ai utilisé l'exemple de ce qui se produit avec ma MsgBox. J'ai bien écris "...à l'instar de ce qu'il se passe avec ma MsgBox..."



    ...Comme tu parles de Userform, la réaction de ceux qui t'ont lu à sans doute été comme la mienne...
    Oui ma requête concernait bien un userform et plus précisement un control d'un userform



    ...Maintenant désolé, si ma réponse est complètement à côté de la plaque, y compris celle-ci...
    Ne sois pas désolé, ça arrive souvent les dialogues de sourd. Tu as voulu m'aider et nous n'étions tout simplement pas sur la même longueur d'onde .

    Merci quand même

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour jacques


    Je ne le crois pas. Et c'est encore moins vrai lorsque tu ajoutes :

    et au cas ou le control visé ne serait pas enfant direct du userform


    qui va au-delà de la demande.
    il n'y a rien de plus faux que ce que tu dis

    le demandeur c'est exprimé avec "pointer" il aurait du dire curseur
    voila
    en ce qui concerne les control enfant non direct la encore tu te méprends ca ne va pas au delà de la demande
    afin de placer le curseur sur le control on est obligé de prendre le "offsetleft" de toute la hiérarchie, tu es obligé pour avoir le vrai left et top du control par rapport a l'userform si c'est pas un enfant direct
    un roman pas possible parce que vous avez pas compris sa demande
    certains emploieront un expression et d'autre une autre c'est tout
    rien ne l'empêche ensuite de mettre le focus sur le control visé ou de lui donner le premier tabindex

    pour info je cite la demande
    [Je recherche une procédure me permettant de déplacer le Pointeur de la Souris vers un bouton spécifique de mon UserForm dès son ouverture.
    il est facile de comprendre qu'il parle du curseur et non de pointer un control

    après on dit que c'est moi qui polémique

    bref zigomatic a tu testé ? cela te convient il ?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    C'est vrai : je l'avais oubliée, cette option Windows (volontaire et non par défaut) de curseur placé automatiquement lors de l'ouverture de boîtes de dialogue. Il faut dire que non seulement je me garde bien de la cocher (elle a été à l'origine de dégâts importants causés il y a une vingtaine d'années à cause d'une simple araignée qui a effrayé une collaboratrice, déjà distraite au téléphone. Elle n'avait pas encore lâché la souris alors qu'une boîte de dialogue était déjà affichée. A la vue de l'araignée, elle s'est crispée et a appuyé dans la foulée sur le bouton de la souris ...)
    J'ai appris à cet époque que je n'étais pas le seul à avoir "pâti" de ce genre de mésaventure et que la grande majorité des responsables informatiques évitaient cette option comme la peste.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    y en a qui l'ont au plafond l'araignée
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  18. #18
    Invité
    Invité(e)
    Par défaut
    Bonjour à tous,

    Dans la continuité du message de Patrick, histoire de dérider.... Tout le monde :

    Pièce jointe 302887

    Je me suis désabonné de cette discussion.
    Dernière modification par Invité ; 14/08/2017 à 17h16.

  19. #19
    Membre à l'essai Avatar de Zygomatic
    Homme Profil pro
    Salarié
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Salarié

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Bonjour à tous,

    @Patrick
    Je viens de coller ton code dans mon fichier.

    Je ne sais pas si j'ai bien fait, j'ai mis la fonction dans un module (en public function ?)
    J'ai ensuite copié la Private Sub UserForm_Activate dans le code de mon UserForm
    Puis j'ai recopié en haut du module dans lequel j'ai copié la fonction, la déclaration "Private Declare Function....."user32"...."
    Comme tu peux t'en douter, c'est là que ça coince car je suis en 64bits et non en 32 !

    J'obtiens alors une MsgBox (la souris n'est pas venue se positionner toute seule sur l'un des 2 boutons :p ), avec le message suivant
    Erreur de compilation:
    Le code contenu dans ce projet doit être mis à jour pour pouvoir être utilisé sur les systèmes 64 bits. Vérifiez et mettez à jour les instructions Declare, puis marquez-les avec l'attribut PtrSafe.

    Et là, .... , moi pas tout comprendre

    Edit : entre les public et les private je ne suis pas sûr de bien saisir la nuance
    pour moi Private, ça reste dans le module voir dans la sub ou la fonction, et Public, ça peut en sortir et donc être utilisé ailleurs. Partant de ce principe, j'aurais mis la déclaration en public et non en Private. Quoiqu'il en soit, je n'ai pas cherché à interpreter et j'ai bien écris en private comme s'était marqué

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    non!! tout le code doit être dans le userform
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Définir la position de la souris
    Par joKED dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 29/01/2007, 08h42
  2. [MFC] Changer la forme du pointeur de la souris
    Par Philippe320 dans le forum MFC
    Réponses: 2
    Dernier message: 03/12/2005, 11h30
  3. Réponses: 5
    Dernier message: 23/08/2005, 12h08
  4. modifier pointeur de la souris au survol d'une case
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/06/2005, 17h54
  5. comment afficher la position (x,y) de la souris
    Par brian79 dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/04/2004, 16h56

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