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 :

un "SI conditionnel" qui ne donne pas le resultat que je veux


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2012
    Messages : 320
    Par défaut un "SI conditionnel" qui ne donne pas le resultat que je veux
    bonjour,

    je reste bloquer.

    Dans mon code (donc dans mon formulaire : "Formulaire_Saisie_Equipe") ,j'ai deux Combox (ComboDefiler_PRENOM1 et ComboDefiler_PRENOM2 et les 2 zone de text Saisie_NOM1 et Saisie_NOM2) mais le bouton Cmd_SaisirEquipene s'active pas après avoir remplis les 4 champs.

    Les 4 champs dans le Formulaire_Saisie_Equipe :
    -les 2 zones de text Saisie_NOM1 et Saisie_NOM2)
    -les 2 combox ComboDefiler_PRENOM1 et ComboDefiler_PRENOM2


    Voici le formulaire:
    Nom : formulaire SAISIE EQUIPE.jpg
Affichages : 265
Taille : 182,4 Ko

    voici le code (de mon bouton : Cmd_SaisirEquipe) :

    Private Sub Saisie_NOM1_Change()
    If (Saisie_NOM1 <> "" And ComboDefiler_PRENOM1 <> "" And Saisie_NOM2 <> "" And ComboDefiler_PRENOM2 <> "") Then
    Cmd_SaisirEquipe.Enabled = True 'Active le bouton "Saisir Equipe à ajouter dans la base de données"
    Else
    Cmd_SaisirEquipe.Enabled = False 'Desactive le bouton "Saisir Equipe à ajouter dans la base de données"
    End If
    End Sub

    Avez-vous une solution pour m'aider ?

    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 175
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    A la lecture rapide de ton code,il faudrait que les deux contrôles TextBox soit remplis et que l'on ait sélectionné un élément dans les deux ComboBox pour que le contrôle CommandButton soit Actif
    Mais je suppose que si on sélectionne un prénom dans une des listes le nom dans le TextBox est rempli donc je m'interroge sur la raison de contrôler si le TextBox est rempli et si un élément de la liste a été sélectionné.

    De plus la propriété Enabled devant contenir une valeur booléenne et un test logique renvoyant également une valeur booléenne il est parfaitement inutile de passer par une structure décisionnelle telle qu'un IF. Soit PropriétéLogique = RésultatTestLogique

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub TextBox4_Change()
     With Me
     .CommandButton1.Enabled = .TextBox1 <> "" And .ListBox1 <> ""
     End With
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre chevronné
    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
    Par défaut
    Bonjour à tous et bon dimanche,

    Ta méthode comme dit Philippe oblige que tous les champs soient renseignés et celui du Nom1 en dernier.
    Le mieux est de mettre la condition dans la Sub du Bouton Valider avec l'exemple suivant à adapter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton1_Click()
     
    If TextBox1 = "" Or ComboBox1 = "" Or TextBox2 = "" Or ComboBox2 = "" Then
       MsgBox "Validation refusée :" & Chr(10) & "Tous les champs ne sont pas renseignés.", vbOKOnly + vbCritical, "Validation - saisie équipe"
        Exit Sub
    End If
     
    ' ... Code de validation ...
     
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Ou encore du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CommandButton1.Enabled = Len(TextBox1.Text) And Len(TextBox2.Text) And Len(ComboBox1.Text)

  5. #5
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2012
    Messages : 320
    Par défaut
    Ma reponse va vers HopPopPop:

    Pourquoi que la TextBoxSaisie_Nom1 doit etre rempli en dernier ?

    J'ai testé avec la TextBox Saisie_Nom1 en premier, aussitot le MsgBox s'ouvre.

    Puis j'ai testé avec la TextBox Saisie_Nom1 en dernier, le MsgBox ne s'ouvre pas puisque les 4 champs sont remplis. mais, pour moi ce n'est pas normal, illogique. Pourquoi que la TextBox Saisie_nom1 doit etre rempli en dernier ?????

    Je reste perplexe....

  6. #6
    Membre chevronné
    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
    Par défaut
    Quand je disais que le champs du Nom1 devait être saisi en dernier, c'était par rapport à ton code fourni et présent dans la Sub Change du Nom1 ; et non dans celui que j'ai mis en exemple.

    Dans l'exemple fourni, le bouton Valider n'est pas Enabled. Tu peux cliquer dessus à tout moment, mais il vérifiera si les 4 conditions sont remplies.
    On ne sait jamais comment l'utilisateur rempli un Formulaire et ce qu'il met dans le champs, le mieux est de vérifier à la fin lorsqu'il valide le Formulaire. Et s'il y a là lors de la vérification une erreur de saisie, un MsgBox informe l'utilisateur et annule la validation.

    Dans ton code, pour qu'il fonctionne il faut que ton champs Nom1 soit saisi en dernier sinon la commande Valider restera inaccessible.

  7. #7
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2012
    Messages : 320
    Par défaut
    A l'intention de unparia :

    Citation Envoyé par unparia Voir le message
    Bonjour
    Ou encore du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CommandButton1.Enabled = Len(TextBox1.Text) And Len(TextBox2.Text) And Len(ComboBox1.Text)

    J'ai deux questions :
    1) pourquoi ne pas ajouter au code "and Len(ComboBox2.Text)".

    2) une explication au code que tu m'as donné, ca serait sympa...........succinte mais clair. S'il te plait. Merci


    Je peux dire qu'avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CommandButton1.Enabled = Len(TextBox1.Text) And Len(TextBox2.Text) And Len(ComboBox1.Text)
    ça fonctionne à merveille.

    REMARQUE : En effet, des que que le troisième champ est rempli, le bouton s'active. J'aurai préféré que les 4 soient remplis puis que le bouton s'active....C'est possible ou non ?

Discussions similaires

  1. comptage ou somme qui ne donne pas le resultat attendu
    Par JeAn-PhI dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/02/2010, 14h47
  2. [XSLT][PHP] Transformation qui ne donne pas du xml conforme
    Par Floyd dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 15/06/2007, 15h11
  3. [MySQL] requete sql qui ne donne pas le bon array
    Par easyjava dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/11/2006, 14h41
  4. Rnd qui ne donne pas que des bonnes valeurs
    Par kubito dans le forum Access
    Réponses: 2
    Dernier message: 08/10/2004, 18h00

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