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 :

Donner le focus à la feuille après un clic sur UserForm [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    ec
    ec est déconnecté
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2005
    Messages : 238
    Par défaut Donner le focus à la feuille après un clic sur UserForm
    Bonjour, J'ai lu cette discussion. Je rencontre un problème analogue.

    J'ai un panneau de commandes avec un Userform et par exemple un bouton qui me permet de sélectionner par un événement Click automatiquement dans une liste la ligne la plus proche de la date actuelle. Cela fonctionne très bien, la cellule est trouvée et sélectionnée, encadrée du cadre de sélection classique, mais si je veux saisir directement un texte dans la cellule ainsi sélectionnée, je m'aperçois que le focus est toujours sur le Userform et n'est pas resté sur la Sheet ou feuille du classeur. Voici le code du bouton du Userform

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub BtEcrituresActuelles_Click()
        PrRechercheJoursEnCours
    End Sub
    A la fin de la procédure PrRechercheJoursEnCours j'ai tout essayé... sauf la bonne solution! Du genre ActiveSheet, ActiveCell combinés à Activate ou à Select, etc. Quand on réfléchit un peu... on constate que lorsqu'on relâche la souris, le focus est nécessairement sur le bouton du Userform. Comment faire en sorte pour que le focus bascule effectivement après relâchement de la souris sur la cellule parfaitement sélectionnée ?

    J'ai cherché à plusieurs reprise depuis un an sur internet je ne trouve aucune solution. La solution proposée dans cette discussion est inapplicable ici car la procédure événementielle Click ne comporte pas de variable Cancel.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste que je viens de tester en utilisant un subterfuge, tu déclare une variable publique dans le module de ta Form et pas dans un module standard (de cette façon, quand la Form est déchargée la variable prend la valeur False) pour connaître l'état d'affichage de cette dernière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public Cache As Boolean
    Le code du bouton pour mon test, la Form est cachée ce qui donne d'office le focus à la feuille et la saisie de valeurs au clavier entre directement dans la cellule sélectionnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub CommandButton1_Click()
     
        Range("B10").Select
        Me.Hide
        Cache = True
     
    End Sub
    et dans le module de la feuille une fois la saisie validée par Entrée ou autres, la Form est à nouveau affichée :
    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
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        With UserForm1
     
            If .Cache = True Then
     
                    .Cache = False
                    .Show
     
            End If
     
        End With
     
    End Sub
    Attention, j'ai bien dis que c'était une piste donc, à creuser !

    Hervé.

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bien que je ne l'ai jamais utilisé, je me lance sur cette suggestion peut être inadaptée ?

    L'évènement "Mouse_up" ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Salut joe.levrai,

    Chez moi ça ne marche pas avec l'évènement "Mouse_up" tant que la Form est affichée, ça marche chez toi ?

    Hervé.

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Difficile, sans voir le code de sa procédure PrRechercheJoursEnCours, de dire si j'ai réussi ce qu'il souhaite faire.


    J'ai crée un Usf bidon avec juste un bouton.
    J'ai mis la propriété ShowModal à False


    et j'ai géré l'évènement Mouse_Up ainsi, avec un code tout aussi bidon, qu'il faut adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub CommandButton1_Mouseup(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim Reponse As String
     
    ' vu que j'ai pas la procédure qui selectionne la cellule que tu souhaites ...
    ThisWorkbook.Worksheets("Feuil1").Range("A2").Select
     
    Reponse = InputBox("Entre ton texte")
    Selection = Reponse
     
    End Sub


    EDIT : Et si tu dois impérativement travailler sur un formulaire modal

    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
     
    Private Sub CommandButton1_Mouseup(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim Reponse As String
     
    ' vu que j'ai pas la procédure qui selectionne la cellule que tu souhaites ...
    ThisWorkbook.Worksheets("Feuil1").Range("A2").Select
     
    ' on cache le formulaire
    Me.Hide
     
    ' on le rend non modal
    Me.Show vbModeless
     
    ' on récup l'input pour l'écrire
    Reponse = InputBox("Entre ton texte")
    Selection = Reponse
     
    ' on remet le formulaire en modal
    Me.Hide
    Me.Show vbModal
     
    End Sub

    Tout ceci étant à adapter bien entendu ... je n'ai pas la moindre idée de ce que tu souhaites faire sur la feuille Excel

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour

    AppActivate fonctionne à partir de la propriété Caption des fenêtres ouvertes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub tt()
     
    UserForm1.Show 0
    AppActivate Application.Caption
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Donner le focus à la feuille après un clic sur UserForm
    Par ESVBA dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 28/06/2017, 10h47
  2. Réponses: 17
    Dernier message: 05/09/2007, 16h24
  3. Déroulement d'un liste après un clic sur un lien
    Par mullger dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 21/08/2007, 13h33
  4. Créer une zone visible qu'après un clic sur une zone
    Par spec10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/11/2006, 04h00
  5. Réponses: 11
    Dernier message: 11/08/2006, 16h52

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