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

Access Discussion :

[Résolu] Activé bouton lorsque la zone de texte indique "Disponible" [AC-2016]


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ergothérapeute
    Inscrit en
    Novembre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Ergothérapeute
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2020
    Messages : 9
    Points : 8
    Points
    8
    Par défaut [Résolu] Activé bouton lorsque la zone de texte indique "Disponible"
    Bonjour à tous,

    Je suis débutant dans Access.
    J'ai commencé à créer un petit programme pour gérer le prêt de matériel dans la structure où je travaille. Après plusieurs recherches je reste bloqué sur un point..
    J'aimerai que le bouton s'affiche lorsque dans la zone de texte il est affiché "Disponible" sinon s'il est affiché "Prêté(e)" je voudrais que le bouton se désactive.

    Alors mon début de code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub txtStock_BeforeUpdate(Cancel As Integer)
    If (Me.txtStock) Then
        Me.btnEnregistrerPret.Enabled = True
        Cancel = False
    Else
        Me.btnEnregistrerPret.Enabled = False
        Cancel = True
    End If
    End Sub
    Je pense qu'il faudrait que je rajoute quelque chose au niveau des ???, mais je ne sais pas quoi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub txtStock_BeforeUpdate(Cancel As Integer)
    If (Me.txtStock ???) Then
        Me.btnEnregistrerPret.Enabled = True
        Cancel = False
    Else
        Me.btnEnregistrerPret.Enabled = False
        Cancel = True
    End If
    End Sub
    Si vous pouviez m'éclairer je serai ravi, car je tourne en rond et ce coup si je n'arrive pas à trouver de solution..
    Merci d'avance, bonne soirée à vous

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 793
    Points
    14 793
    Par défaut
    bonsoir,
    attention, à l'instruction Cancel = True car elle empêche de sortir du champ tant qu'il ne correspond pas à la valeur correcte (c'est à dire Me.txtStock ="Disponible") je pense plutôt qu'il faut le faire après mise à jour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub txtStock_AfterUpdate()
    If Me.txtStock ="Disponible" Then
        Me.btnEnregistrerPret.Enabled = True  
    Else
        Me.btnEnregistrerPret.Enabled = False
    End If
    End Sub
    et sur l'évènement "Sur activation" du formulaire pour remettre la valeur par défaut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Current()
    Me.btnEnregistrerPret.Enabled = False
    End Sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ergothérapeute
    Inscrit en
    Novembre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Ergothérapeute
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2020
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Bonjour, merci beaucoup de votre réponse.
    C'est vrai que c'est plus pertinent du faire comme vous me conseillez.

    Je viens d'essayer mais le bouton reste désactivé que ce soit indiqué "Prêté(e)" ou "Disponible".


    Alors voilà je vais essayer de mieux exposer mon problème.

    J'ai une liste si rien n'est sélectionné j'aimerai bien que mon bouton soit désactivé.


    Ensuite lorsque je sélectionne un fauteuil roulant qui est déjà prêté, je voudrais que le bouton reste désactivé.


    Et pour finir lorsque le fauteuil sélectionné est disponible, je voudrais que le bouton soit actif.


    Si besoin voici mon code entier :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    '-----------------------------------------------------------------------------------------------------------------------------
    '------------------------------------------------Partie pour l'Aide Technique-------------------------------------------------
    '-----------------------------------------------------------------------------------------------------------------------------
     
    Private Sub txtCritereAT_AfterUpdate()
    Dim req As String
    req = "SELECT  Aides_Techniques.idAideTechnique, '[' & [RefAideTechnique] & ']' & ' ' & [Designation] & ' (' & [LibTaille] & ')' AS [AT], * FROM Stock INNER JOIN (Taille INNER JOIN Aides_Techniques ON Taille.Taille = Aides_Techniques.Taille) ON Stock.idStock = Aides_Techniques.idStock WHERE [RefAideTechnique] & ' ' & [Designation] & ' ' & [LibTaille] like '*" & Me.txtCritereAT & "*'"
        Me.txtListeAT.RowSource = req
        Me.txtListeAT.Requery
    End Sub
     
    Private Sub btnChercherAT_Click()
    txtCritereAT_AfterUpdate
    End Sub
     
    Private Sub txtListeAT_AfterUpdate()
    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
     
    Set rs = db.OpenRecordset("SELECT Aides_Techniques.idAideTechnique, [LibCategorie] & ' ' & [Designation] & ' ' & [LibTaille] & ' ' & [LibEtat] & ' ' & [LibStock] AS [AT2], * FROM Etat INNER JOIN (Categories INNER JOIN (Taille INNER JOIN (Stock INNER JOIN Aides_Techniques ON Stock.idStock = Aides_Techniques.idStock) ON Taille.Taille = Aides_Techniques.Taille) ON Categories.idCategorie = Aides_Techniques.idCategorie) ON Etat.idEtat = Aides_Techniques.idEtat WHERE idAideTechnique = " & Me.txtListeAT.Value, dbOpenDynaset)
    If Not rs.EOF Then rs.MoveFirst
        Me.txtCategorie = rs("LibCategorie")
        Me.txtDesignation = rs("Designation")
        Me.txtTaille = rs("LibTaille")
        Me.txtEtat = rs("LibEtat")
        Me.txtStock = rs("LibStock")
    rs.Close
    Set rs = Nothing
    db.Close
    Set db = Nothing
    End Sub
     
    Private Sub btnEnregistrerPret_Click()
    Me.txtListeATDemandesPret.AddItem Me.txtListeAT.Value & ";" & _
    Me.txtDesignation & ";" & _
    Me.txtTaille
    End Sub
     
    Private Sub Form_Current()
    Me.btnEnregistrerPret.Enabled = False
    End Sub
     
    Private Sub txtStock_AfterUpdate()
    If (Me.txtStock = "Disponible") Then
        Me.btnEnregistrerPret.Enabled = True
    Else
        Me.btnEnregistrerPret.Enabled = False
    End If
    End Sub
    Voilà une explication un peu plus claire.

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonjour,

    Avec un évènement update, l'état du bouton ne change que si le texte est changé. Il faut donc aussi modifier l'état chaque fois qu'on change de ligne, donc par exemple dans form_current

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 793
    Points
    14 793
    Par défaut
    bonjour,
    je comprend mieux: les zones de texte situées à droite sont des contrôles indépendants et c'est à partir de la zone de liste qu'elles sont chargées.
    Dans ce cas, il faut faire le test après mise à jour de la zone de liste:

    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
    20
    21
    22
    23
    24
    Private Sub txtListeAT_AfterUpdate()
    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
     
    Set rs = db.OpenRecordset("SELECT Aides_Techniques.idAideTechnique, [LibCategorie] & ' ' & [Designation] & ' ' & [LibTaille] & ' ' & [LibEtat] & ' ' & [LibStock] AS [AT2], * FROM Etat INNER JOIN (Categories INNER JOIN (Taille INNER JOIN (Stock INNER JOIN Aides_Techniques ON Stock.idStock = Aides_Techniques.idStock) ON Taille.Taille = Aides_Techniques.Taille) ON Categories.idCategorie = Aides_Techniques.idCategorie) ON Etat.idEtat = Aides_Techniques.idEtat WHERE idAideTechnique = " & Me.txtListeAT.Value, dbOpenDynaset)
    If Not rs.EOF Then rs.MoveFirst
        Me.txtCategorie = rs("LibCategorie")
        Me.txtDesignation = rs("Designation")
        Me.txtTaille = rs("LibTaille")
        Me.txtEtat = rs("LibEtat")
        Me.txtStock = rs("LibStock")
     
    If (Me.txtStock = "Disponible") Then
        Me.btnEnregistrerPret.Enabled = True
    Else
        Me.btnEnregistrerPret.Enabled = False
    End If
     
    	rs.Close
    Set rs = Nothing
    db.Close
    Set db = Nothing
    End Sub
    PS: l'option dbOpenDynaset est réservée pour les requêtes de mise à jour, ici dbOpenSnapshot suffit car le Recordset est une requête de sélection: = " & Me.txtListeAT.Value, dbOpenSnapshot)

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ergothérapeute
    Inscrit en
    Novembre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Ergothérapeute
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2020
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Super, merci beaucoup.

    J'ai apporté vos corrections et ça fonctionne encore merci !

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

Discussions similaires

  1. Créer un bouton recherche et zone de texte pour une base de données excel
    Par Jeremy2109 dans le forum Macros et VBA Excel
    Réponses: 37
    Dernier message: 13/03/2015, 09h12
  2. activer par défaut une zone de texte
    Par yoann53 dans le forum Tcl/Tk
    Réponses: 5
    Dernier message: 22/04/2013, 07h55
  3. Réponses: 4
    Dernier message: 26/01/2009, 14h56
  4. remplacer un bouton par une zone de texte
    Par jawed84 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/02/2008, 11h56
  5. bouton radio et zone de texte
    Par manu80000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/03/2007, 09h14

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