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 :

[VBA E]problème sur procedure Exit d'un textbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut [VBA E]problème sur procedure Exit d'un textbox
    Bonjour à tous

    J'ai une userform avec 4 frame et dans chaque frame 10 textbox jusque la tout va bien.
    Chaque textbox a une procedure textbox_Exit du type:




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        If TextBox1.Value <> "" Then
     
            If (IsDate(TextBox1)) = True Then
                h1 = Replace(TextBox1.Value, ".", ":")
                TextBox1 = Format(TextBox1.Value, "hh\H mm")
            Else
                MsgBox "Entrez une valeur valide !!": _
                    Cancel = True: Exit Sub
            End If
        End If
        TextBox1.BackColor = RGB(255, 255, 255)
    End Sub
    Donc mon problème et que quand je passe d'un textbox a un autre tout va bien, meme quand il sont dans des frame diffèrentes.

    Mais quand je clic sur le bouton Ok de la userform la procedure exit du textbox actif à ce moment là ne fonctionne pas.

    Quelqu'un pourrait me dire pourquoi et comment palier à ce phénomène.

    Merci d'avance

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Essaie de mettre ton code dans l'événement AfterUpdate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub TextBox1_AfterUpdate()

  3. #3
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Merci ouskel'n'or

    A priori ça à l'air de mieux fonctionner mais je terminerai les essaies demain car je n'ai plus les idées tout à fait clair, il me faut un peu de repos.

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Je n'aurais pas du tout procédé ainsi mais autrement :

    une sous-routine de contrôle (appelons-là ici controlesaisie, à laquelle j'aurais passé comme paramètre la textbox).
    Cette sous-routine aurait été appelée ;
    - à chaque événement exit d'une textbox concernée par ce contrôle
    - à l'événement click de mon bouton de command en ne lançant alors que le contrôle concernant la dernière textbox saisie (ce qui se gère parfaitement par une vairiable ad hoc qui se met à jour à l'entrée dans une textbox)

    Cette méthode allège de surcroît considérablement le code.

    Je précise que si le contrôle peut différer entre une textbox et l'autre, il suffit de passer comme 2ème paramètre un n° identificateur du type de contrôle à effectuer, à gérer alors aved des If Then... ou avec Select Case.

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello jemefe,
    Je suis d'accord avec toi, et c'est d'ailleurs ce que j'aurais fait. Je me contentais là de répondre à la question.
    Cette procédure unique serait sans doute à appeler dans les mêmes conditions, cad dans AfterUpdate.
    Quant à la méthode, l'avantage du select case sur le nom du textbox servant d'index de contrôle, par rapport au "if... then", serait de simplifier la relecture.
    Auquel cas il ne serait même pas utile "de passer comme 2ème paramètre un n° identificateur du type de contrôle à effectuer"
    A noter qu'on peut également identifier le typeName du contrôle et ne retenir que les textbox dans le test effectué par Select Case

  6. #6
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Bonsoir jmfmarques et ouskel'n'or

    J'ai pas exactement le resultat recherché avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub TextBox1_AfterUpdate()
    Si je suis bien ce qui ce passe, j'ai l'impression que la procedure AfterUpdate est lu deux fois Quand je click sur le bouton Ok, elle est lu une premiere fois.
    Et tout s'arrete je suis obligé de reclicker sur le bouton ok, pour quelle se termine.

    Donc si vous avez quelque cose que je pourrait exploiter je vous en remercie.

    Mais j'ai besoins d'un peu d'explication car votre niveau d'explication et difficile à comprendre pour moi

    Merci

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

Discussions similaires

  1. [XL-2003] VBA excel problème sur contrôle statusbar
    Par wolop dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/08/2009, 15h07
  2. [VBA] Problème sur les dates
    Par Herman dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 11/04/2007, 11h37
  3. [VBA - Excel] Problème de deux cellules sur l'evenement OnChange
    Par champmart dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/01/2007, 17h06
  4. [VBA-E]Problème de triet effacement de doublon sur boucle
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/09/2006, 11h06
  5. [VBA-E]Problème sur la façon d'écrire un programme...
    Par olosta dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/04/2006, 22h57

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