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 :

Validation des données d'une texte Box


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut Validation des données d'une texte Box
    Bonjour,
    Dans mon projet j'ai un Userform avec plusieurs TextBox dans lesquelles l'utilisateur devra entrer des dates au format jj/mm/aaaa.
    Si la date entrée est supérieure à la date du jour je souhaite afficher un MsgBox pour l'avertir, voici le code que j'ai intégré dans ma macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If Milestone_Edit.TextBox1.Enabled = True And Milestone_Edit.TextBox1.Value <> "" Then
                        If Milestone_Edit.TextBox1.Value <> ""  And Milestone_Edit.TextBox1.Value > Act.Range("C1").Value Then
                                MsgBox " Invalid Date " & vbCr & "Date must be lower than the Current Data Date", , "WARNING"
                                Milestone_Edit.TextBox1.SetFocus
                        End If
                        ACVAL.Offset(i, 3).Value = CDate(Milestone_Edit.TextBox1.Value) ' Les données issues d'une TextBox sont au format String il faut donc spécifier le format désiré ici CDate
                        ACVAL.Offset(i, 3).NumberFormat = "[$-410]dd-mmm-yy;@"
                        Milestone_Edit.TextBox1.Value = ACVAL(i, 3).Value
                        Milestone_Edit.TextBox1.Enabled = False
    End If
    Le problème c'est que dès qu'un chiffre est entré ma MsgBox apparaît, donc avant d'avoir saisi la date complète.

    J'ai donc essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Milestone_Edit.TextBox1.Value <> "" And Milestone_Edit.NumberFormat = "[$-410]dd-mmm-yy;@" And Milestone_Edit.TextBox1.Value > Act.Range("C1").Value Then
                        MsgBox " Invalid Date " & vbCr & "Date must be lower than the Current Data Date", , "WARNING"
                        Milestone_Edit.TextBox1.SetFocus
    End If
    Dans ce cas de figure j'ai un message d'erreur VBA qui s'affiche

    Erreur de Compilation
    Membre de méthode ou de données introuvable
    D'après l'aide cela peut venir du nom de l'objet ou du membre mal orthographié ou d'un index de collection hors limite.
    Pour l’orthographe, j'ai vérifié et ce n'est pas cela, reste l'index de collection ... ???

    Une idée, un conseil seront les bienvenus

    merci pour votre aide et votre collaboration
    Eric

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je te renvois à ce que j'ai dis là : http://www.developpez.net/forums/d14...x/#post8035712

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 181
    Points : 377
    Points
    377
    Par défaut
    Bonjour à tous,

    Il faut voir dans quelle procédure se trouve le code fourni ?

    Pour vérifier la validité d'une saisie dans un Control TextBox, il faudrait utiliser son événement BeforeUpdate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    ' ... code de contrôle
    End Sub

  4. #4
    Invité
    Invité(e)
    Par défaut
    c'est une absurdité de valider sur envenimement d'un contrôle! il faut intervenir sur tous les contrôles à valider!!!! alors qu'a la validation générale...

    c'est peut dire que c'est risque d'erreur.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 181
    Points : 377
    Points
    377
    Par défaut
    @ rdurupt,
    Je suis d'accord avec toi.
    Mais dans l'explication fournie par Eric, il précise que son message de vérification s'affiche dès qu'il entre un caractère. Je suppose donc qu'il n'a pas encore validé sa saisie de date par la touche "Enter", et que dès lors son code se trouve dans une procédure événementielle de ce TextBox, peut-être la "Change"

    Après, évidemment que s'il y a beaucoup de dates à saisir , ce contrôle doit être général.

  6. #6
    Invité
    Invité(e)
    Par défaut
    bonjour HopPopPop,
    oui je suis arrivé a la même conclusion que toi d'ou mes 2 réponse un TextBox1_Change() ou autre comme tu la fait remarqué!

  7. #7
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    Bonjour,
    je te renvois à ce que j'ai dis là : http://www.developpez.net/forums/d14...x/#post8035712
    Merci Robert,
    Cela fonctionne parfaitement
    Eric

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

Discussions similaires

  1. Récupération des données d'une combo box
    Par shalfat dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/07/2014, 19h18
  2. Validation des données d'une Map
    Par thewarlock dans le forum Struts 2
    Réponses: 1
    Dernier message: 03/09/2010, 08h50
  3. Réponses: 4
    Dernier message: 07/02/2009, 14h47
  4. recuperation des données d'une combo box
    Par Kevin.Perez dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 25/04/2008, 12h29
  5. [MySQL] comment insérer des données d'une liste déroulante dans un champ texte
    Par berti dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/01/2008, 09h12

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