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 :

bouton visible / invisible joueur


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Employé administratif entreprise de services
    Inscrit en
    Mai 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employé administratif entreprise de services

    Informations forums :
    Inscription : Mai 2008
    Messages : 68
    Points : 34
    Points
    34
    Par défaut bouton visible / invisible joueur
    Bonjour

    je viens de constater une bizarrerie sur une base access et n'arrive pas à savoir ce qui bloque.

    Dans un formulaire j'ai une case à cocher qui me permet d'afficher un bouton la propriété du bouton est non pour visible

    le code de la case à cocher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub BON_RECURRENT_Click()
    If BON_RECURRENT = True Then
    Commande126.Visible = True
    Else
    Commande126.Visible = False
    End If
    End Sub
    ça fonctionne pile poil....

    même chose pour un autre contrôle zone de liste qui m'affiche ou non une zone de texte et une étiquette.... le tout créée sous 2003....


    Le temps aidant nous sommes passés sous 2010 et tout fonctionne à merveille, si ce n'est une une autre commande que je viens de rajouter, par simple copier coller et changement de nom des contrôles et boutons...

    cette boite à cocher doit me faire apparaitre un bouton ( qui lui même ouvrira un formulaire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub REDIGER_DEVIS_DETAILLE_Click()
    If REDIGER_DEVIS_DETAILLE = True Then
    Commande267.Visible = True
    Else
    Commande267.Visible = False
    End If
    End Sub

    Sauf que la rien à faire d'un enregistrement à l'autre il me garde la valeur précédente, bref case cochée bouton visble et/ou invisible et l'inverse...

    Je pars pourtant avec le même code, les mêmes propriétés, dans le formulaire et les mêmes propriétés dans le champs de la table oû sont stockées les valeurs

    Y a'til une subtilité dans cette version ou ai je raté quelque chose ( le plus vraisemblable)?


    Par avance merci

  2. #2
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Curieux.

    La propriété Triple état de ta case à cocher est bien à Non ?

    Domi2

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Employé administratif entreprise de services
    Inscrit en
    Mai 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employé administratif entreprise de services

    Informations forums :
    Inscription : Mai 2008
    Messages : 68
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Merci pour ton aide

    Oui pour le moins curieux

    Triple état est bien sur "non"
    Les boutons sont bien actifs et invisibles.
    Les cases à cocher actives et non verrouillées, leur valeurs par défaut "vides".

    @+

  4. #4
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Essaie de mettre un point d'arrêt sur ton code, puis d'exécuter la procédure pas à pas.

    Cela te donnera peut-être une indication.

    Domi2

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Employé administratif entreprise de services
    Inscrit en
    Mai 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employé administratif entreprise de services

    Informations forums :
    Inscription : Mai 2008
    Messages : 68
    Points : 34
    Points
    34
    Par défaut
    Bonjour

    Je vais tenter de placer un point d'arrêt et de voir ce que cela donne par contre il faut que je me renseigne d'abord sur le fonctionnement de cela. Car mes premières tentatives sont infructueuses.

  6. #6
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Tu ouvres simplement l'éditeur VBA, tu affiches ton module et dans la procédure, tu cliques simplement sur la barre à gauche à la hauteur du premier If.

    Un point brun doit apparaître et la ligne mise en surbrillance. Tu fermes et tu lances ton application.

    Au moment ou le code va devoir s'exécuter, tu vas repasser dans l'éditeur.

    Menu Débogage ==> Pas à pas détaillé ou touche de raccourci F8.

    Là, tu vas voir le déroulement de ta procédure. Egalement, si tu places le curseur sur des variables, par exemple, tu verras apparaître leur valeur.

    Cela permet de vérifier le bon déroulement des procédures ou fonctions de manière assez simple.

    Domi2

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Employé administratif entreprise de services
    Inscrit en
    Mai 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employé administratif entreprise de services

    Informations forums :
    Inscription : Mai 2008
    Messages : 68
    Points : 34
    Points
    34
    Par défaut
    bonjour,


    Désolé de n'avoir pas répondu avant j'étais en déplacement hier.

    J'ai effectué la même procédure pour un qui fonctionne et celui qui ne tourne pas rond...sans plus de résultat ni de différence de comportement.

    je passe du if à la première condition , puis au end if et au end sub, ( si ma valeur est cochée).

    je passe du if au else puis à la seconde condition puis end if et end sub...

    En gros tout marche bien en individuel ...mais pour les valeurs qui sont dans l’enregistrement précédent il garde l'affichage du dernier formulaire sur lequel on a agi.

    Je suis donc obligé de cocher décocher pour afficher la bonne valeur ( ce qui est fâcheux vu que c'est l'accès au détail du devis)...

    @+ (et merci du coup de main)

  8. #8
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Tu as donc un champ de type boléen (Oui/Non) dans ta table qui mémorise l'état de la case à cocher.

    Quel est son nom ?

    Domi2

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Employé administratif entreprise de services
    Inscrit en
    Mai 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employé administratif entreprise de services

    Informations forums :
    Inscription : Mai 2008
    Messages : 68
    Points : 34
    Points
    34
    Par défaut
    la case à cocher ( vrai / faux - non indexé- général pour les propriétés ; comme l'autre) s'appelle

    "REDIGER DEVIS DETAILLE"

    et le bouton sur lequel elle agit est la commande267

  10. #10
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Oui, mais quel est le nom du champ Source de cette case à cocher dans la table ?

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Employé administratif entreprise de services
    Inscrit en
    Mai 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employé administratif entreprise de services

    Informations forums :
    Inscription : Mai 2008
    Messages : 68
    Points : 34
    Points
    34
    Par défaut
    le champs source dans la table à le même nom, je ne l'ai pas renommé.

    j'ai créé mon champs dans ma table et repris dans le formulaire le champs donné par la commande "ajouter des champs existants" ( pour éviter au maximum les erreurs)

  12. #12
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Moui, c'est effectivement le comportement d'Access, et je trouve que c'est une très mauvaise idée.

    Parce que par exemple, si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.REDIGER_DEVIS_DETAILLE.Value = True
    tu vas modifier immédiatement la valeur en table et ça se répercutera évidemment sur le formulaire.

    Par contre en renommant ton contrôle, chkREDIGER_DEVIS_DETAILLE, si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.chkREDIGER_DEVIS_DETAILLE.Value
    ta checkbox va se cocher, mais la valeur en table va demeurer inchangée jusqu'au moment où les données sont enregistrées, ce qui n'est pas tout à fait la même chose.

    De plus, en nommant correctement tes champs de table, tes contrôles et tes variables, en écrivant tes procédures ou en les relisant, tu sais exactement à quoi tu fais appel. Un tuto indispensable : Descriptif des conventions typographiques du code Visual Basic.

    Bon, revenons à nos moutons. Cela ne va probablement pas apporter grand chose, mais essayons un petit test.

    D'abord, renommes ta case à cocher comme indiqué plus haut, chkREDIGER_DEVIS_DETAILLE. Tu dois également refaire ta procédure Sur clic.

    Ensuite, dans la procédure Sur activation de ton formulaire, tu mets simplement l'affichage d'un message, ce qui devrait te donner ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Current()
     
        MsgBox Me.REDIGER_DEVIS_DETAILLE.Value
     
    End Sub
    On affiche donc la valeur en table, ce qui doit te donner -1 pour True, 0 pour False.

    L'évènement Sur activation se produit lors de l'ouverture du formulaire et à chaque changement d'enregistrement.

    Est-ce que tu constates la même désynchronisation des informations entre le message et ta case à cocher ? Le contraire serait étonnant...

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Employé administratif entreprise de services
    Inscrit en
    Mai 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employé administratif entreprise de services

    Informations forums :
    Inscription : Mai 2008
    Messages : 68
    Points : 34
    Points
    34
    Par défaut
    j'essaye dès lundi merci et je poste les nouvelles dans la foulée; merci beaucoup

    Pour ce qui est des conventions typo ( et de beaucoup d'autres choses ) ce n'est pas pour me dédouaner ( et ça ne le fait certainement pas), mais il est vrai que ce qui était au départ un simple outil pour remplacer la main de l'apprentie et ne pas créer un publipostage est devenu un exercice complexe ou j'avance au gré des demandes aléatoires des uns et des autres.... moi ma base de formation c'est la logistique et je me trouve promu grand chef sioux du truc alors que ben, c'est pas mes 8 heures de théorie sur les sgbd en dut qui font de moi un expert.

    En prime la petitesse de la structure faisant que l'on doit cumuler les casquettes, sans compter tout ce que l'on peut avoir au dehors de la vie professionnelle, ça laisse peu de temps à l'étude (même si ce n'est pas l'envie qui manque...)

    Et je ne me vois pas réécrire tout le bouzin la je préfère me balancer dans la rade.

    le seul point que j'apprécie parfois est que, malgré tout quand ça marche c'est glorifiant et que je dois admettre que mon ego s'en trouve gonflé lorsque mon patron explique aux informaticiens qui nous ont mis en place un système de gestion cette année que ma base fait mieux et plus simplement des choses que leur système peine a effectuer ( la preuve 8 mois après la mise en service ma base est toujours en fonction et n'a pas de fin prévue...

    par contre j'ai du reprendre le "développement" pour une succursale et de nouvelles personnes = de nouveaux besoins

    mais en tout cas un grand merci pour le temps passé à me guider

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Employé administratif entreprise de services
    Inscrit en
    Mai 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employé administratif entreprise de services

    Informations forums :
    Inscription : Mai 2008
    Messages : 68
    Points : 34
    Points
    34
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Current()
     
        MsgBox Me.REDIGER_DEVIS_DETAILLE.Value 
    End Sub
    me renvoie une erreur

    par contre je viens de trouver la solution....

    Ensuite, dans la procédure Sur activation de ton formulaire
    En tentant de le faire je suis tombé sur un bout de code que j'avais placé la pour les autres commandes au même comportement; j'ai fait de même pour la case chkrediger et miracle cela fonctionne.

    Je ne sais pas pourquoi ni comment mais cela joue à partir de ce moment...

    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
    Private Sub Form_Current()
    If BON_RECURRENT = True Then
    Commande126.Visible = True
    Else
    Commande126.Visible = False
    End If
    If TYPE_DE_TRAVAIL = "C" Then
    VALIDATION_CONTRAT.Visible = True
    Étiquette232.Visible = True
    Else
    VALIDATION_CONTRAT.Visible = False
    Étiquette232.Visible = False
    End If
    If IMPRESSION_SEPAREE_DU_DESCRIPTIF = True Then
    DESCRIPTIF3.Visible = True
    Else
    DESCRIPTIF3.Visible = False
    End If
    If chkREDIGER_DEVIS_DETAILLE = True Then
    Commande267.Visible = True
    Else
    Commande267.Visible = False
    End If
     
    End Sub

  15. #15
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Tout autant que le code lui-même, le choix du bon évènement est parfois primordial.

    Domi2

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/07/2014, 19h19
  2. Réponses: 2
    Dernier message: 27/05/2014, 15h34
  3. Rendre un bouton visible / invisible
    Par Invité dans le forum PL/SQL
    Réponses: 2
    Dernier message: 02/08/2012, 08h27
  4. Bouton visible/invisible userform
    Par AMO05 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/05/2009, 10h57
  5. Réponses: 3
    Dernier message: 03/02/2009, 18h36

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