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 :

Conditions multiples pour dégriser un bouton [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Conditions multiples pour dégriser un bouton
    Bonjour à toutes et à tous.
    Je débute en formulaire VBA et je vous expose mon problème.
    Je souhaiterais dégriser un bouton de mon formulaire lorsque j'ai 2 champs particuliers de remplis.
    le bouton étant par défaut grisé

    J'ai donc fait ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub nomj_Change()
     
        If nomj <> "" Then
           bajouter.Enabled = True
        Else
           bajouter.Enabled = False
        End If
     
    End Sub
    pour le premier champs. Mais je ne sais pas comment y ajouter mon 2ème champs comme condition !

    Merci par avance de votre aide !

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bojour TheToto, bonjour le forum,

    Peut-être comme ça (à adapter) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub nomj_Change()
    If Autre_Controle.Value <> "" Then bajouter.Enabled = nomj.Value <> ""
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Autre_Controle_Change()
    If nomj <> "" Then bajouter.Enabled = Autre_Controle.Value <> ""
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    l'idée de tautheme n'est pas mauvaise
    je pense en avoir une meilleure a fin de ne pas etre pobligé de tester a chaque change de tout les champ

    tout simplement comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Bajouter_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim critere
    critere = champ_j <> "" And champ_x <> "" ' etc.....
    Bajouter.Enabled = critere
    End Sub
    des que tu va passer la souris dessus ;si champ_j et champ_x ne sont pas duement remplis bein walouhhh retourne au champ
    rien ne t'empeche d'ajouter des champ dans la ligne critere
    voila un seul evenement regle le probleme
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Merci !
    Merci de votre aide.
    J'ai retenu la solution de Thauteme qui assure mon besoin.
    Désolé Patrick, je n'ai pas réussi à faire fonctionner ta solution. Mais merci quand même de ton aide.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Citation Envoyé par patricktoulon Voir le message
    re
    l'idée de tautheme n'est pas mauvaise
    je pense en avoir une meilleure a fin de ne pas etre pobligé de tester a chaque change de tout les champ

    tout simplement comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Bajouter_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim critere
    critere = champ_j <> "" And champ_x <> "" ' etc.....
    Bajouter.Enabled = critere
    End Sub
    des que tu va passer la souris dessus ;si champ_j et champ_x ne sont pas duement remplis bein walouhhh retourne au champ
    rien ne t'empeche d'ajouter des champ dans la ligne critere
    voila un seul evenement regle le probleme
    tu a juste a mettre les bon nom de champ c'est tout j'ai mis champ_j et champ_x mais toi c'est peut etre pas pareil (voir les majuscule aussi la casse est importante)

    en l'occurence toi c'est nomj pour le premier donc il faut bien changer les noms

    le defaut de la methode de thautheme
    si tu a un champs c'est bon
    si tu a deux champs il te faut comparer les leux
    si tu a 3 champs il te faut comparer les 3
    etc....
    et ca represente selon son principe tester le nombre de champ global dans chaque evenement tel qu'il l a présenté
    autrement dit si tu en a 10 dans chaque champs_change tu devra tester les 10
    vue la ligne de code pour en tester deux dans le 2d de sa methode j'imagine la ligne pour les 10


    ma methode
    si tu a 10 champs se sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Bajouter_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
     Dim critere
     critere = champ <> "" And champ2 <> ""And champ3 <> ""And champ4 <> "" And champ5 <> ""And champ6 <> "" And champ7 <> "" And champ8 <> "" And champ9 <> ""And champ10 <> ""    
    Bajouter.Enabled = critere
     End Sub
    et c'est TOUT !!!
    pas d'evenement change ou quoi que se soit
    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    au mieux pour avoir l'aller et le retour avec les evenement change des textboxs
    il s'appellent nom1,nom2,nom3,etc........
    pour 10 champ
    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
     
     
     
    Private Sub enable_ajouter()
     Dim critere
     critere = nom1 <> "" And nom2 <> "" And nom3 <> "" And nom4 <> "" And nom5 <> "" And nom6 <> "" And nom7 <> "" And nom8 <> "" And nom9 <> "" And nom10 <> ""
    Bajouter.Enabled = critere
    End Sub
     
    Private Sub nom1_Change(): enable_ajouter: End Sub
    Private Sub nom2_Change(): enable_ajouter: End Sub
    Private Sub nom3_Change(): enable_ajouter: End Sub
    Private Sub nom4_Change(): enable_ajouter: End Sub
    Private Sub nom5_Change(): enable_ajouter: End Sub
    Private Sub nom6_Change(): enable_ajouter: End Sub
    Private Sub nom7_Change(): enable_ajouter: End Sub
    Private Sub nom8_Change(): enable_ajouter: End Sub
    Private Sub nom9_Change(): enable_ajouter: End Sub
    Private Sub nom10_Change(): enable_ajouter: End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut re
    merci pour toutes ces informations.
    Patrick, si j'ai bien compris, ta soluce permet de positionner le curseur sur les champs non remplis, alors que moi je cherche à dégriser le bouton quand les champs sont remplis.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    tu devrais tester avant de poser une question
    en aucun cas je donne le focus a un textbox dans mes exemples
    il sagit ici simplement de griser le bouton tant que les 10 textboxs ne sont pas remplie et l'inverse si ils le sont
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut re
    Désole Patrick, j'avais mal compris ton premier post, d'ou ma confusion.
    Ta version me tente bien dans le principe.
    Mais j'ai essayé le code de ton dernier post en l'adaptant aux nom de mes champs comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub enable_ajouter()
       Dim critere
       critere = nomj <> "" And prenomj <> ""
       bajouter.Enabled = critere
    End Sub
    Private Sub nomj_Change(): enable_ajouter: End Sub
    Private Sub prenom_Change(): enable_ajouter: End Sub
    et rien ne se passe.
    Donc 2 questions me viennent, dois je ajouter avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Bajouter_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim critere
    critere = nomj <> "" And prenomj <> "" 
    Bajouter.Enabled = critere
    End Sub
    Et là toujours aucune réaction du bouton qui reste désespérément gris et faut il que j'adapte la variable critere ?
    Et dans ce cas la je ne vois pas comment.
    Merci d'avance

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub nomj_Change(): enable_ajouter: End Sub
    Private Sub prenomj_Change(): enable_ajouter: End Sub
    Private Function enable_ajouter()
    Dim critere
    critere = nomj <> "" And prenomj <> ""
    Bajouter.Enabled = critere
    End Function
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Top

    Marche nickel
    Il me reste plus qu'a analyser ou j'ai merdu !
    Encore merci

  12. #12
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Bonjour,

    Désactiver un contrôle sur mousemove c'est la première fois que je vois ça.

    J'espère qu'on ne peut pas naviguer avec tabulation jusqu'au bouton.

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

Discussions similaires

  1. conditions multiples pour envoi de mail automatique
    Par molio dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/11/2015, 16h42
  2. [XL-2010] Activation d'un bouton - Conditions Multiples
    Par Zeff.G dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/12/2012, 15h29
  3. [XL-MAC 2011] Conditions multiples pour QCM
    Par zouzau dans le forum Excel
    Réponses: 2
    Dernier message: 28/10/2012, 13h51
  4. Meilleure méthode pour conditions multiples ?
    Par clickandgo dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/02/2011, 12h26
  5. Vérifier l'état de différentes fonction pour dégriser un bouton
    Par pilipi dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 07/06/2009, 21h37

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