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 :

Ouverture userform au passage de la souris sur cellule A1 et fermeture lorsque souris hors USF


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut Ouverture userform au passage de la souris sur cellule A1 et fermeture lorsque souris hors USF
    Bonjour et bonne année le forum,

    J'aimerai ouvrir un Userform au passage de la souris sur la cellule A1 de ma feuille.
    De plus j'aimerai obtenir : le USF est ouvert, je sélectionne différents éléments dedans (qui vont mettre à jour un tableau et/ou TCD) et lorsque je déplace ma souris hors du USF, il se ferme automatiquement....

    Merci pour votre aide,

  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 : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Bonjour
    Et qu'as-tu au moins tenté d'écrire pour parvenir à cette fin (cf règles de ce forum) ?
    Sache que le jeu (finalité pour le moins ludique) n'en vaut pas la chandelle. Il te faudrait mettre en place beaucoup de choses alourdissantes pour y parvenir.
    Je ne vois pas pourquoi tu ne contenterais pas (c'est ainsi que Microsoft a en tout état de cause construit son application), de sages et orthodoxes clics (cela ne fatigue pas le poignet, d'une part, et ne risque par ailleurs pas de provoquer des réactions inattendues et pouvant pour le moins être indésirables).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci unparia,

    J'ai trouvé grâce au forum des petits bouts de codes pour l'utilisation de la souris plutôt que le clic et...je me disais que ça pourrait amener un petit plus...maintenant si ça amène de la lourdeur/lenteur, effectivement autant rester sur le bon vieux clic....mais comme j'avais vu 2-3 trucs sur les possibilités mouse à l'intérieur d'un USF (cf Silkyroad), je pensais qu'il y avait une possibilité....

    Merci pour votre aide,

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    La "possibilité" existe, certes, mais :
    1) en s'éloignant considérablement des connaissances VBA (vocation de ce forum)
    2) en s'exposant (si la moindre erreur de code, le moindre oubli de cas particuliers, la moindre imprécision, la moindre non prise en compte des gestes inattendus que fera un utilisateur) à des risques d'instabilité, voire carrément de plantage de Excel.
    Je ne serais pas étonné de ce qu'un forumeur vienne ici proposer impulsivement un "truc" de ce genre, sans prendre en compte ces considérations primordiales. J'interviendrai alors avec la plus grande sévérité si j'y décèle une faille (surtout si de surcroît dangereuse).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci pour ces conseils avisés unparia,

    Je comprends le message que tu veux me faire passer.....

    En fait, le but que je recherchais était de reproduire des segments de TCD....Les segments sont très pratiques et utiles (notamment pour des utilisateurs débutants et/ou non familiarisés avec les TCD....
    Mon souci est le format des segment, la police et la taille que l'on ne peut pas réduire comme on veut et dans mon cas, j'utilise 5 segments et donc ma feuille est bien remplie....d'où cette idée de passer en USF.....et de reproduire la facilité d'utilisation du segment... : je sélectionne et lorsque je "lache", le TCD se met automatiquement à jour, d'où cette "idée" de fermeture lorsqu'on sort du USF....C'étaitt un essai de reproduction motivé par le problème de format et de taille des segments....

    merci pour tes conseils,

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Je comprends le message que tu veux me faire passer.....
    Et je "vois" la "chose" arriver. Elle est maintenant très proche.

    EDIT : ah ben non, finalement. Il y a eu velléité (suivie d'abandon). La sagesse s'installe. C'est un progrès; c'est bien.

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir
    il n'existe pas d'evement mouseover our des cellule en vba ,il existes des possibilités avec les api mais c'est tres lourd en terme de code(pas enfonctionnement) et si tu n'a pas le niveau requis tu peux laisser tomber tout de suite

    tu n'a plus que select change ou le beforerightclick dans le quel tu pourais ajouter un item au menu contextuel des cellules du genre"afficher form1"

    code tres court et pas compliqué a mettre en place

    si cette optique t'interesse fait moi signe

    un exemple comme ca vite fait qui manque un peu de precision de placement de l'userform
    code tres leger de l'evenement dans la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    'modifier le menu au click droit sur  sheet
    With CommandBars("cell")
    .Reset
    With .Controls.Add(msoControlButton, , , 1, True): .Caption = "afficher mon userform": .OnAction = "affiche": .Tag = Target.Address: End With
    End With
    End Sub
    et la sub dans un module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub affiche()
    cible = CommandBars.ActionControl.Tag
       With UserForm1
    .Show 0
    ' ici le code pour placer ton userform au niveau de ta cellule
    'un exemple
    With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With
    .Top = ActiveWindow.ActivePane.PointsToScreenPixelsY(Range(cible).Top) / ppx
    .Left = ActiveWindow.ActivePane.PointsToScreenPixelsX(Range(cible).Left) / ppx
    End With
    CommandBars("cell").Reset
    End Sub
    demo
    Nom : demo2.gif
Affichages : 1345
Taille : 377,8 Ko

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci pour cette dose d'humour unparia

    Perso j'avais compris que ton message était qu'il fallait rester sur la simplification pour les utilisateurs futurs, sans plantage.....

    J'espère que tu as compris que je cherche à me perfectionner et/ou explorer les possibilités VBA....tu m'as déjà plusieurs fois aidé/guidé et grâce à toi et au forum, j'ai pu développer mes très faibles connaissances....J'ai juste expliqué l'objectif recherché....qui permettrait de reproduire sauce VBA des possibilités Excel 2010...Je travaille en parallèle sur des ToogleButton qui permettraient d'obtenir le résultat escompté (mais en cliquant dessus, pas en survol)....

    Merci pour tes conseils et avis....

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci patricktoulon,

    Merci pour cet exemple,
    Mais comme indiqué à unparia, en fait, je cherche à "reproduire" le phénomène segment que l'on a dans les TCD 2010.... : Je pensais qu'en utilisant un USF, on pouvait "reproduire" un segment de TCD, mais je n'y suis pas arrivé, j'essaye de voir avec des Togglebutton, mais c'est en clic, pas en survol....

    Merci pour ton aide,

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    ....J'ai juste expliqué l'objectif recherché....qui permettrait de reproduire sauce VBA des possibilités Excel 2010...Je travaille en parallèle sur des ToogleButton qui permettraient d'obtenir le résultat escompté (mais en cliquant dessus, pas en survol)....
    le mousemouve il l'ont ces controls pas besoins de click

    tu peut me montrer une capture de l'effet recherché?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Points : 378
    Points
    378
    Par défaut
    Bonjour,

    une petite question : il y a quoi dans la cellule qui doit déclencher l'ouverture du UserForm ?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci Phil Free,
    Rien de spécial dans cette cellule : j'ai mis "Menu". et en suivant les conseils de unparia, j'ai mis un commandbutton qui déclenche l'ouverture du USF.

    Merci patricktoulon,
    dur-dur pour moi de faire un visuel...puisque je n'arrive pas à obtenir ce que je veux...
    Le visuel que je cherche à avoir, c'est le même fonctionnement que les segments des TCD, mais dans un USF..... le principe de fonctionnement : affichage des champs, survol souris qui sélectionne les champs et mis à jour automatique du TCD....je mets un classeur test en PJ, très très light...c'est juste histoire de voir le type de segment...et le type de USF, ce serait un truc dans ce genre...:
    Nom : fichiertest.png
Affichages : 1212
Taille : 44,1 Ko
    Merci pour ton aide,
    Fichiers attachés Fichiers attachés

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Points : 378
    Points
    378
    Par défaut
    Bon alors comme c'est une valeur fixe on peu sans problème faire une petite bidouille pour faire ce que tu souhaites.

    Les feuilles non nativement pas l'evenement MouseMove mais les objets OLE si ! donc l'idée c'est de superposer à ta Cellule A1 un Label.

    Pour être certain que tu ajoutes le bon objet voici un bout de code que tu ne devras utiliser qu'une fois !

    Petit code sur base d'un code trouver dans l’excellent tutos de SilkyRoad ici

    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
    Sub AjouterUnLabel()
     
    Dim Obj As OLEObject
    Dim Hauteur As Long, Largeur As Long
     
        With Worksheets("Feuil1")
            Set Obj = .OLEObjects.Add("Forms.Label.1")
            With .Range("A1")
                longueur = Columns(.Column).Width
                Hauteur = Rows(.Row).Height
            End With
        End With
        With Obj
            .Top = 0
            .Left = 0
            .Width = longueur
            .Height = Hauteur
            .Object.Caption = "Menu" 'le label peut être porteur de ce texte mais comme il est transparent cela peut aussi être la valeur de la cellule. Dans ce cas enlevé cette ligne
            .Object.BackStyle = 0
            .Object.TextAlign = fmTextAlignCenter
            .ShapeRange.Fill.Transparency = 1#
            Worksheets("Feuil1").Shapes(.ShapeRange.Name).Placement = xlMoveAndSize
        End With
    End Sub
    Une fois le label en place, tu ajoutes dans le code de la feuille qui contient ce label tu ajoutes le code qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        UserForm1.Show
    End Sub
    Note que pour modifier ou supprimer ton Label il te faudra passer en mode création

    /!\ Un avertissement sur ce type de bidouille :
    dans excel quand on lance une macro il n'est plus possible de revenir en arrière pour rattraper le coup ! autrement dit, si l'utilisateur fait une erreur et passe sont pointeur de souris sur le label cela déclenchera
    automatiquement la macro associée du coup plus de retour en arrière pour lui.

    Philippe

  14. #14
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Bonjour,

    ce n'est pas plus simple de leur apprendre à mettre un segment ?
    2 captures écran et c'est fait. Quant à ceux qui ne veulent pas faire l'effort (minime) d'essayer et bien ils font comme ils veulent (peuvent).
    eric

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci Phil Free,

    Oui, c'est effectivement une bonne bidouille....mais après quelques tests, cela représente un petit"danger" (qu'avait souligné unparia et que tu mets aussi dans ton NB...."l'erreur" de survol déclenche la macro....donc ce que je pensais simple, s'avère compliqué.....et je pense que je vais rester avec mon commandbutton qui va limiter la casse.....mais merci pour ta bidouille qui me donne des idées de ré-utilisation pour certaines de mes macros.....

    Merci eriiic,
    Le problème vient aussi du format des segments...on peut jouer sur la taille du champ, mais pas sur la police...et j'ai 4-5 segments qui agissent sur mon TCD et ils prennent "beaucoup" de place sur la feuille....d'où l'idée de passer par un USF où je suis "maitre" de la taille et de la police et me permet de "tout mettre sur 1 seul panneaux de contrôle"....

    Merci pour votre aide,

Discussions similaires

  1. Message en bougeant la souris sur cellule
    Par COCONUT2 dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/07/2009, 16h15
  2. appliquer une couleur au passage souris sur grpe de cellules
    Par mathieu_r dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/01/2006, 15h20
  3. Réponses: 2
    Dernier message: 23/10/2005, 20h00
  4. passage souris sur 1 petite image --> affichage ds table
    Par nico_web dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/10/2005, 15h33
  5. Changer la couleur du texte lors passage souris sur un TD !
    Par Kokito dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/01/2005, 16h40

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