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 :

UserForm sans Focus


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut UserForm sans Focus
    Bonjour,

    Est-il possible d'avoir un UserForm qui ne conserve pas le focus ?

    Je souhaiterai que pendant que je travaille sur ma WorkSheet, le userform reste affiché. Et quand j'en ai besoin, je choisi un élément dans la ComboBox et quand je clique sur le bouton "Insérerer" de mon UserForm, le texte de l'élément s'insère dans l'ActiveCell et le UserForm reste affiché puis je peux continuer de travailler sur ma WorkSheet

    Tout a été codé, mon seul souci est que lorsque, j'affiche le Userform, le Focus reste dessus (pour l'instant je le "perd" que lorsque je clique sur le bouton "Insérer" et que le Userform disparait)

    Dans un autre projet j'avais fait la même chose avec une Shape qui suivait la position verticale de l'ActiveCell, mais est-ce possible avec un Userform ? ou dois-je intégrer un Combobox dans une cellule qui suivra la position verticale de l'ActiveCell ?
    Soyez ce que vous voudriez que le monde soit !

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Dans les propriétés du UserForm, dans "Comportement", à la ligne "ShowModal" mettre à false.
    ou en VBA à l'ouverture de l'UserForm, Cdlt

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 205
    Points : 234
    Points
    234
    Par défaut
    Bonjour,
    Si ton UserForm ne comprend qu'un Combo pas besoin de USerForm tu peux mettre directement le combo sur ta feuille et faire en sorte qu'il suive la cellule active (avec un léger décalage) et quand tu n'en as pas besoin tu l'envoies vers la droite :
    Dans cet exemple le combo est actif sur la colonne B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 2 Then
       ComboBox1.Left = Target.Offset(, 1).Left
       ComboBox1.Top = Target.Top
    Else
       ComboBox1.Left = 2000
    End If
    End Sub
    A+

  4. #4
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Merci pour vos réponses, malheureusement je ne pourrais tester vos propositions que dans 1 semaine, mais je vous tiendrai au courant
    Soyez ce que vous voudriez que le monde soit !

  5. #5
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    J'ai garder la proposition d' @ARTURO83 car plus esthétique sur ma page

    Par contre, auriez-vous une astuce pour que lorsque je clique sur le ComboBox, le chariot d'insertion de texte de l'activecell perde le Focus ?

    Si je n'ai pas été très clair :
    dans la cellule active je suis en train de rentrer du texte
    (maintenant je voudrais insérer un des noms compris dans ma ComboBox)
    donc je clique sur la Combobox pour choisir un nom
    puis sur "Insérer" pour insérer le nom de la ComboBox à la suite du texte que j'ai rentré

    Problème : impossible de cliquer sur la ComboBox ou le Userform car le chariot de Texte a pris le focus (il faut cliquer sur une autre cellule ou "Entrée")

    J'ai fait des essais avec "Sub ComboBox_click" ou "Sub UserForm_click" mais rien de concluant

    Avez-vous une idée ?
    Soyez ce que vous voudriez que le monde soit !

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,,

    Je vous propose ceci, l'userForm étant ouvert, saisissez votre texte puis au moment de l'insertion du nom, cliquez sur la cellule de droite, faite le choix du nom avec la combobox, cliquez sur le bouton pour rapatrier le nom à la suite de votre texte.

    Le principe, en sélectionnant la cellule de droite à côté de votre texte, vous désélectionnez la cellule, ce qui permet de choisir un nom avec la combobox, à la suite de la validation de ce nom lors du clic sur le bouton "Insérer", le nom est recopié à la suite du texte.Pièce jointe 576920

    Le code dans le module du UserForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton1_Click()
        CellActive = ActiveCell.Offset(0, -1).Address
        Range(CellActive).Value = Range(CellActive).Value & " " & ComboBox1.Text
        Range("J1").ClearContents
    End Sub
    le Fichier
    Pièce jointe 576921

    Si cela vous convient, à adapter à votre situation.

    Cdlt

  7. #7
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Merci pour votre réponse.
    C'est déjà ce que "fait" (avec mon intervention en cliquant) mon code
    Donc visiblement il n'est pas possible de sortir du mode édition de texte via un code

    -------- Edit --------
    En fait pour résoudre mon problème j'ai fait un mix de vos 2 solutions :

    j'ai créé un bouton "Insérerer" sur ma sheet qui suit la ligne en cours de saisie
    je tape mon texte puis je clique sur le bouton (qui sélectionne une cellule à coté)
    là mon userform apparait puis insert le nom choisi à la fin du texte que j'avais commencé à taper

    Merci pour vos aides qui m'ont aiguillé
    Soyez ce que vous voudriez que le monde soit !

Discussions similaires

  1. [Toutes versions] Userform visible mais sans focus
    Par ptitgoud dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/07/2017, 22h13
  2. [JTextArea] Selection visible sans focus ?
    Par Claythest dans le forum Composants
    Réponses: 2
    Dernier message: 20/07/2009, 17h18
  3. Afficher une fenêtre sans focus
    Par kmaniche dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/02/2007, 19h40
  4. VBA : ouverture d'un Userform sans passer par excel
    Par jemigo dans le forum Macros et VBA Excel
    Réponses: 28
    Dernier message: 23/11/2005, 16h28
  5. fenetre sans focus
    Par djdoublediams dans le forum MFC
    Réponses: 5
    Dernier message: 31/01/2005, 09h57

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