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 :

Eviter le code de TextBox1_Exit


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Par défaut Eviter le code de TextBox1_Exit
    Bonsoir à toutes et tous

    Dans l'USF, j'ai TextBox 1, TextBox 2 et CommandButton1 avec les codes suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
    Unload Me
    End Sub
     
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     '   "If CommandButton1 cliqué then Exit Sub"
    MsgBox "coucou"
    End Sub
    j'ai le focus sur TextBox 1.
    Je tape "1234". Je m'aperçois que je n'ai pas besoin de saisir quoique ce soit dans l'USF, je veux donc fermer l'USF. je clique sur le CommandButton1. Mon problème est que, au lieu de sortir, j'ai le "coucou" du TextBox1_Exit qui apparaît. Comment peut-on fermer l'USF sans passer par le TextBox1_Exit ? étant entendu qu'il y a forcément du code dans TextBox1_Exit. Je tourne en rond
    J'espère avoir été clair.
    Merci par avance
    Eric

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Pas testé, mais tu pourrais essayer cela

    Tu ajoutes, ou tu utilises un module standard. Et tu mets dans l'entête du module et en dehors des procédures:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public sortie as boolean
    Puis tu changes un peu tes procédures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
       sortie = true
       Unload Me
    End Sub
     
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If sortie = true then 
          Exit Sub
       else
          MsgBox "coucou"
       end if
    End Sub

  3. #3
    Membre émérite
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Par défaut
    Bonjour à toutes et tous
    Bonjour Clement

    Merci pour ta réponse qui a été plus rapide que la mienne en retour (WE chargé)
    Ta proposition ne fonctionne malheureusement pas, car le premier évènement, quand l'on clique sur le CommandButton, est la sortie du TextBox.

    Eric

  4. #4
    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
    Bonjour,

    à toi d'insérer les bonnes instructions maintenant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        If Me.TextBox1.Text <> "1234" Then MsgBox "ok on continue" Else MsgBox "1234 : on sort"
    End Sub

  5. #5
    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.

    D'abord. pour ne pas declancher TextBox1_Exit , s'assurer, avec CommandButton1.TakeFocusOnClick = False, que CommandButton1 ne prenne pas le focus :

    Ensuite, grace a UserForm_QueryClose, aviser TextBox1_Exit que la fermeture du Userform est en cours.

    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
    Dim usrUnload As Boolean
     
    Private Sub UserForm_Initialize()
     CommandButton1.TakeFocusOnClick = False
    End Sub
     
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     usrUnload = True
    End Sub
     
    Private Sub CommandButton1_Click()
     Unload Me
    End Sub
     
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     If usrUnload = False Then
      MsgBox "coucou exit"
     End If
    End Sub

  6. #6
    Membre émérite
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Par défaut
    Bonsoir à toutes et tous

    - Joe.levrai : j'avais écris "1234", c'était un exemple, le problème reste le même si TextBox1 est vide.
    - Docmarti : c'est juste ce que j'avais espéré. Je vais tester en profondeur, mais cela répond à ma question. Comme j'ai d'autres TextBox, je pourrai appliquer à certain la même méthode.

    Merci à vous tous
    Cordialement
    Eric

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

Discussions similaires

  1. [XL-2010] Eviter répétition code
    Par zycomatic dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/07/2012, 10h06
  2. amelioration de code pour eviter select
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/07/2009, 20h26
  3. Eviter du code redondant
    Par yarf dans le forum Langage
    Réponses: 4
    Dernier message: 20/11/2008, 17h13
  4. [HTML]Eviter les redondances de code
    Par Pfeffer dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 30/12/2005, 09h13
  5. Réponses: 2
    Dernier message: 05/07/2005, 14h46

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