Case à cocher

Anonyme
2023-03-16T15:07:48+00:00

Bonjour,

Dans un formulaire, j’ai un certain nombre de cases à cocher, toutes indépendantes les unes des autres. J’aimerais savoir s’il est possible de faire un groupement de toutes ces cases à cocher et de déclencher un événement quand une des cases de ce groupement passe à true ou à false ?

Merci pour votre aide.

Cordialement

Microsoft 365 et Office | Access | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

12 réponses

  1. Anonyme
    2023-03-17T15:05:36+00:00

    Pour répondre à Sneha, Karl a répondu. Merci.

    Pour répondre à Karl

    Cela fonctionne. J'ai contourné ensuite le problème en faisant un code unique. Mais il faut intervenir sur chaque "Bouton". Il y en a pas mal. La finalité du code est de rendre visible ou pas 2 boutons dans un autre formulaire que l'on soit à True ou à False.

    Private Sub changement_btn_article()
    If Me.ActiveControl.Value = True Or Me.ActiveControl.Value = False Then
    With Form_f_facture
    .btn_valider.Visible = True
    .btn_nouvelle.Visible = False
    End With
    End If
    End Sub

    Private Sub btn_amortisseur_arriere_Click()
    changement_btn_article
    End Sub

    Private Sub btn_amortisseur_avant_Click()
    changement_btn_article
    End Sub

    Merci

    Pour répondre à Arnaud

    Me.Texte15.BackColor = IIf(Me.Texte10.Value = 0, vbWhite, vbRed) est en défaut. Je suppose que c'est : Me.Texte10.BackColor = IIf(Me.Texte10.Value = 0, vbWhite, vbRed).

    Tu le places où ton code ? Je ne comprends pas : changement de valeur avec l'évènement de la zone Détail "Sur le dessin"

    Ta solution pourrait être intéressante. Peux-tu m'éclairer ?

    Merci

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2023-03-17T13:33:11+00:00

    Bonjour,

    Merci pour vos réponses. Je vais faire des essais et vous tiens au courant.

    Cordialement

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2023-03-17T09:02:15+00:00

    Bonjour,

    Une solution bidouille

    Tu crées une zone de texte par exemple (Texte10)

    SourceControl : =[Cocher0] Ou [Cocher1] Ou [Cocher2] Ou [Cocher3]
    
    Visible : Non
    

    Et tu codes sur le changement de valeur avec l'évènement de la zone Détail "Sur le dessin"

    Exemple :

    Private Sub Détail_Paint() 
    
        ' Passage en rouge d'un contrôle si une des 4 cases est cochée
    
        Me.Texte15.BackColor = IIf(Me.Texte10.Value = 0, vbWhite, vbRed) 
    
    End Sub
    

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2023-03-16T22:46:28+00:00

    Salut Sneha,

    1. Le lien vers CheckBox.CheckedChanged (System.Windows.Forms) concerne .NET et n'a rien à voir avec Access ou VBA.
    2. Le code a été traduit en français, ce qui le rend inutilisable.
    3. Non, on ne peut pas regrouper des cases à cocher "indépendantes" dans Access, que ce soit dans un groupe d'options ou dans un sous-formulaire. Dans un groupe d'options, elles ne sont plus indépendantes mais interdépendantes, c'est-à-dire qu'elles représentent la valeur unique du groupe et non 3 valeurs. Dans un sous-formulaire, elles sont indépendantes, mais pas groupées.

    Ce que l'on peut faire comme solution de contournement est un code VBA "groupant", c'est-à-dire que l'on appelle dans l'événement AfterUpdate de chaque case à cocher la même routine qui vérifie l'état des trois cases à cocher et réagit en conséquence. Il existe différentes variantes, en fonction de ce que l'on veut obtenir lors de chaque changement d'état, par ex. une procédure dans le module de formulaire comme:

    Private Sub procCheckBoxes()

    If Me.ActiveControl.Value = True Then  
        'fais quelque chose  
     Else  
        'fais quelque chose d'autre  
    End If  
    

    End Sub

    On peut appeler cette procédure dans l'événement AfterUpdate des trois cases à cocher. Il suffit donc d'écrire le code une seule fois.

    Il est également possible d'écrire une fonction de même contenu, que l'on n'appelle pas dans le code d'événement des cases à cocher, mais dans leur ligne de propriétés AfterUpdate ("Après actualisation" en français?). Ou plusieurs autres variantes.

    Servus

    Karl

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. Anonyme
    2023-03-16T17:30:01+00:00

    Salut

    Je suis Sneha et je serais heureux de vous aider avec votre question. Veuillez nous excuser pour la gêne occasionnée.

    Oui, il est possible de regrouper plusieurs cases à cocher dans MS Access, puis de déclencher un événement lorsque l’une des cases à cocher du groupe change d’état (c’est-à-dire lorsqu’une case à cocher est cochée ou décochée).

    Vous pouvez regrouper des cases à cocher en les plaçant dans un cadre ou un contrôle de sous-formulaire. Ensuite, vous pouvez utiliser l’événement AfterUpdate du contrôle de cadre ou de sous-formulaire pour détecter les modifications apportées aux cases à cocher au sein du groupe.

    Voici comment vous pouvez le faire:

    1. Créez un champ de cadre ou un contrôle de sous-formulaire sur votre formulaire.
    2. Placez toutes les cases à cocher que vous souhaitez regrouper dans le champ de cadre ou de sous-formulaire.
    3. Sélectionnez le champ de cadre ou de sous-formulaire et ouvrez la fenêtre Propriétés.
    4. Dans la fenêtre Propriétés, allez dans l’onglet Événements et recherchez l’événement AfterUpdate.
    5. Cliquez sur la flèche déroulante et sélectionnez [Procédure événementielle].
    6. Cliquez sur le bouton de sélection (...) à côté de l’événement AfterUpdate pour ouvrir l’éditeur de code VBA.
    7. Dans l’éditeur de code VBA, écrivez le code que vous souhaitez exécuter lorsque l’une des cases à cocher du groupe change d’état.

    Par exemple, vous pouvez utiliser une boucle pour vérifier la valeur de chaque case à cocher du groupe et effectuer une action en fonction de l’état coché :

    Sous-GroupFrame_AfterUpdate privé () Dim ctl As Control Pour chaque ctl dans Me.GroupFrame.Controls Si TypeOf ctl est CheckBox alors Si ctl. Valeur = Vrai alors 'Faire quelque chose si la case est cochée) Autre 'Faire quelque chose si la case n’est pas cochée. Fin Si Fin Si CTL suivant Fin de la sous-section

    Dans cet exemple, « GroupFrame » est le nom du contrôle de cadre ou de sous-formulaire qui contient les cases à cocher. Vous pouvez le remplacer par le nom réel de votre contrôle.

    Pour plus d’informations, reportez-vous à CheckBox.CheckedChanged, événement (System.Windows.Forms) :- https://learn.microsoft.com/dotnet/api/system.windows.forms.checkbox.checkedchanged?view=windowsdesktop-7.0

    Si vous avez d’autres questions ou avez besoin d’aide pour quoi que ce soit, n’hésitez pas à me le faire savoir. Il me fera plaisir de vous aider.

    Sinceres salutations Sneha

    Cette réponse a été traduite automatiquement. Par conséquent, il peut y avoir des erreurs grammaticales ou des expressions étranges.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire