Activer case option dans Access

Résolu
maxireussite Messages postés 405 Statut Membre -  
maxireussite Messages postés 405 Statut Membre -
Bonjour,

Même dans Access 2007 la mise en forme conditionnelle ne fonctionne pas avec les cases à cocher/option. Je souhaite les activer/désactvier en fonction de la valeur d'un champs.

Quelqu'un saurait-il svp m'expliquer la procédure

11 réponses

  1. Bruce Willix Messages postés 12376 Date d'inscription   Statut Contributeur Dernière intervention   2 639
     
    La mise en forme conditionnelle, ça dit bien ce que ça veut dire: ça "met en forme" quand une "condition" est respectée.

    "Mettre en forme", c'est changer l'aspect - toi tu veux changer la valeur de l'enregistrement, et c'est pas du tout la même chose.

    A part ça, je ne comprend pas ton problème:
    - soit le champ que tu veux évaluer est déjà du type "Vrai/Faux" et alors il suffit de placer sur ton formulaire un case à cocher/option liée au champ en question (dans la ligne "Source de données") et il n'y aura rien à faire
    - soit le champ que tu veux évaluer n'est pas du type vrai/faux et dans ce cas, tu devras mettre comme source de données une requête basée sur un IIF pour indiquer à access que quand la valeur est A, alors le champ est VRAI et FAUX sinon.
    0
  2. maxireussite Messages postés 405 Statut Membre 5
     
    Merci pour la réponse.
    En fait, à l'ouverture du formulaire les cases à cocher sont désactivées selon la valeur d'une zone de liste. Quand la zone de liste change de valeur certaines cases à cocher seront activées d'autres désactivées.

    C'est pour cela que je parlais de mise en forme conditionnelle. Là je ne m'intéresse pas encore à leur valeur.
    0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    exemple:
    case a cocher active
    Cocher5.Enabled = True

    case a cocher inactive (grisee sur le formulaire)
    Cocher5.Enabled = false

    Bonne suite
    0
  4. blux Messages postés 5033 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    dans l'évènement 'sur changement' de ta zone de liste, tu dois rajouter un truc comme ça :

    If zone_de_liste.value = toto then
    case1.enabled = true
    end if

    Par contre, il faudra gérer la valeur à l'ouverture du formulaire ainsi que les différents changements d'état. C'est-à-dire que si on saisit une autre valeur, peut-être que la case doit se retrouver disabled (enabled = false), mais c'est à toi de voir...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. maxireussite Messages postés 405 Statut Membre 5
     
    Bon, ben quand je mets cela dans l'événement "sur changement" de la zone de liste :

    Private Sub TypeInterventions_Change()
    If TypeInterventions.Value = 3D Then
    SolPourtour.Enabled = True
    End If

    J'ai un message d'erreur : "erreur de compilation - erreur de syntaxe".

    Effectivement quand la zone de liste change de valeur la case à cocher doit se désactiver pour empêcher ce choix.

    Merci de vos lumières.
    0
    1. blux Messages postés 5033 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Comme tu testes une chaine de caractères, tu dois la mettre entre guillemets

      If TypeInterventions.Value = "3D" Then
      0
  7. maxireussite Messages postés 405 Statut Membre 5
     
    OK, mais j'ai un message d'erreur entre "End sub" et "End if"

    il n'accepte aucun des deux. J'ai mis cela dans l'événement "sur changement" de la zone de liste :

    Private Sub TypeInterventions_Change()
    If TypeInterventions.Value = "3D" Then
    SolPourtour.Enabled = True
    End If
    0
  8. maxireussite Messages postés 405 Statut Membre 5
     
    Bon ok, en fait faut mettre "End sub" en final après "End If".

    Donc ça fonctionne à l'ouverture du formulaire quand la valeur de la zone de liste passe à "3D" la case à cocher s'active.

    Mais quand la zone de liste change de valeur, elle reste activée.
    D'autre part à l'ouverture du formulaire quand la valeur de la zone de liste n'est pas "3D", la case reste quand même activée...

    Comment faire ?
    0
    1. blux Messages postés 5033 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Lire ce que j'ai écrit précédemment ;-)

      Par contre, il faudra gérer la valeur à l'ouverture du formulaire ainsi que les différents changements d'état. C'est-à-dire que si on saisit une autre valeur, peut-être que la case doit se retrouver disabled (enabled = false), mais c'est à toi de voir...
      0
  9. maxireussite Messages postés 405 Statut Membre 5
     
    Oui oui, j'ai bien lu, mais comment on fait cela ?
    0
    1. blux Messages postés 5033 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Dans ton formulaire, tu peux mettre du code dans l'évènement 'sur ouverture' pour mettre une option par défaut : enabled ou non...
      Dans le code 'sur changement', il te faut compléter l'existant, de cette manière par exemple :

      Private Sub TypeInterventions_Change() 
      If TypeInterventions.Value = "3D" Then 
           SolPourtour.Enabled = True 
      else 
           SolPourtour.Enabled = False 
      End If 
      End Sub 
      

      Mais c'est variable en fonction de ce que tu souhaites faire...
      0
  10. maxireussite Messages postés 405 Statut Membre 5
     
    Je vais voir cela.

    Merci beaucoup.
    0
  11. maxireussite Messages postés 405 Statut Membre 5
     
    Bon J'ai réussi à moitié, Quand je choisi une valeur dans ma zone de liste certaines case s'activent et d'autres se désactivent, c'est bien ce que je souhaite, grâce à la formule ci-dessous.

    Mais quand j'ouvre le formulaire avec une valeur dans la zone de liste les cases qui ne devraient pas être activées le sont...

    J'ai essayé d'imposer la désactivation en mettant "non" à "Activé" dans propriété mais cela ne marche pas, le contrôle fait passer la propriété des cases à "Oui" à la prochaine ouverture.

    Mais dès que j'active ma zone de liste, tout est Ok.

    Private Sub Form_BeforeUpdate(Cancel As Integer)

    Private Sub TypeInterventions_Change()
    If TypeInterventions.Value = "3D" Then
    Desinsectisation.Enabled = True
    Désinfection.Enabled = True
    Dératisation.Enabled = True
    Applicat.Enabled = True
    Contrat.Enabled = True
    Complément.Enabled = True
    Else
    Desinsectisation.Enabled = False
    Désinfection.Enabled = False
    Dératisation.Enabled = False
    Applicat.Enabled = False
    Contrat.Enabled = False
    Complément.Enabled = False
    End If

    If TypeInterventions.Value = "Anti-termites" Then
    InjectionSols.Enabled = True
    CeinturageMur.Enabled = True
    MurRefClois.Enabled = True
    AccotementBois.Enabled = True
    Huisseries.Enabled = True
    SolPourtour.Enabled = True
    PulvérisaSurface.Enabled = True
    BarrièreSoubass.Enabled = True
    Jardin.Enabled = True
    Else
    InjectionSols.Enabled = False
    CeinturageMur.Enabled = False
    MurRefClois.Enabled = False
    AccotementBois.Enabled = False
    Huisseries.Enabled = False
    SolPourtour.Enabled = False
    PulvérisaSurface.Enabled = False
    BarrièreSoubass.Enabled = False
    Jardin.Enabled = False
    End If

    If TypeInterventions.Value = "Barrière Physico-chimique" Then
    MurSoutenement.Enabled = True
    GaineTehnique.Enabled = True
    JointSingulier.Enabled = True
    JointDilatation.Enabled = True
    Peripherie.Enabled = True
    Else
    MurSoutenement.Enabled = False
    GaineTehnique.Enabled = False
    JointSingulier.Enabled = False
    JointDilatation.Enabled = False
    Peripherie.Enabled = False
    End If

    End Sub
    0
  12. maxireussite Messages postés 405 Statut Membre 5
     
    Ben en fait il suffisait de mettre exactement la même formule dans l'événement "sur ouverture" du formulaire... et tout fonctionne au poil.

    Merci à tous.
    0