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

VBA Access Discussion :

Case à cocher à False lorsqu'on supprime un Enrg


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Par défaut Case à cocher à False lorsqu'on supprime un Enrg
    Bonjour,

    Sur un formulaire principal frm-1 j’ai :

    Un sous-formulaire sfm-1 en mode "Formulaires continus" qui contient plusieurs case à cocher et

    Un autre sous-formulaire sfm-2 en Mode "Feuille de données".

    A partir du sous-formulaire sfm-1, lorsque je coche une case à cocher je rajoute un enregistrement qui apparaît dans le sous-formulaire sfm-2.

    Maintenant je voudrais que lorsque je supprime un enregistrement à partir du sous-formulaire sfm-2 la case à cocher correspondante se décoche.

    Est-ce que vous pouvez m’aider pour réaliser cela.

    Merci pour votre aide ;

    Salutations.

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour JMDE,

    As-tu un critère pour retrouver l'enregistrement de sfm-1 concerné par la suppression de l'enregistrement de sfm-2 ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Par défaut
    Bonjour ClaudeLELOUP,

    Je pense que le code qui me permet de créer l’enregistrement à partir de la case à cocher peut t’aider pour mon problème.

    Le libellé d’une des cases est de ce type :
    05Tennis de table.

    Les deux premiers chiffres ou lettres correspondent à la valeur du champ :
    "Code" , le reste à la valeur du champ "Discipline" de la table

    Les Etiquettes sont nommées par le non de la case suivit de la constante SufxLb
    Exemple Cocher180_Étiquette

    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
    Sub MjaActivite()
     
    '--- vérifie si le contrôle actif est bien un bouton
         If TypeOf ctl Is CheckBox Then
                Set MonLabel = Me.Controls(ctl.Name & SufxLbl)
                C_lbl = MonLabel.Caption
            If ctl.Value = -1 Then
                MonLabel.ForeColor = RGB(255, 0, 0)
            Else
                MonLabel.ForeColor = 14191499
            End If
          End If
     
    '---Ouverture de la base et des tables
        Set db = CurrentDb
     
        rq = "SELECT [tbl Adhérents].* FROM [tbl Adhérents]"             
         Set rs = db.OpenRecordset(rq, dbOpenDynaset)
     
        rq1 = "SELECT [tbl Activités].* FROM [tbl Activités]" 
        Set rs1 = db.OpenRecordset(rq1, dbOpenDynaset)
     
    '---Teste si la zone est décocher
        If ctl.Value = -1 Then
     
    '--- Boite de dialogue par Api
         Reponse = MessageBox(Me.hwnd, "Vous allez ajouter l'enregistrement. " 
     
    '--- Ajouter l'enregistrement
         rs1.AddNew
          rs1("RéfAdhérent") = Me.txtRéfAdhérent
          rs1("Code") = Left(CStr(C_lbl), 2)
          rs1("Discipline") = Mid(CStr(C_lbl), 6)
         rs1.Update
     End If
    Salutations.

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Cela ne m'aide pas vraiment.
    Je m'attendais à ce que tu me dises avec des mots la recette pour :
    - lorsqu'on se trouve dans le formulaire sfm-2
    - comment retrouver le nom du contrôle à modifier dans sfm-1

    L'idée serait alors
    - un bouton dans sfm-2 pour provoquer la suppression du record
    - avant de supprimer dans sfm-2,
    - aller modifier dans ce qu'il faut dans sfm-1
    - revenir supprimer physiquement l'enregistrement dans sfm-2

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Par défaut
    Re,

    Mon raisonnement est le suivant :

    Je suis sur l’enregistrement à annuler du sous-formulaire sfm-1 en « Mode feuille de donnée »

    Par la touche suppr du clavier (ou par un bouton dans frm-1) je récupère la valeur du champ « code » ( dans l’exemple 05) à supprimer.

    Puis je cherche sur le sfm-2 le nom de l’Etiquette (dans l’exemple 05 – Tennis de table.) de la case à cocher, j’extrait les deux premiers chiffres que je compare à « Code » et je met à True ou False la case à cocher correspondant à l’Etiquette.

    Est-ce faisable et comment ?

    Salutations

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Par défaut
    Re,

    Une petite erreur,

    Lire
    Je suis sur l’enregistrement à annuler du sous-formulaire sfm-2
    Et
    Puis je cherche sur le sfm-1

    Toutes mes escuses.

    Salutations

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Peut-être un début de réponse avec ceci :
    Un bouton sur frm-1.
    Dans l'exemple fille1 = nom du sous-form sfm-1.
    Je parviens à cocher la case.
    Mais j'ignore la syntaxe pour supprimer un enregistrement dans un sous-formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Commande0_Click()
    Dim NomCaseACocherSfm2 As String
    Dim ctl As Control
    'Recherche du code
    NomCaseACocherSfm2 = Me.Fille1.Form.code
    'Faire ici les manipulations dans NomCaseACocherSfm2
        'pour construire le nom du champ dans sfm-2
    'modifier la case à cocher
    Me.Fille2.Form(NomCaseACocherSfm2) = -1
     
    End Sub

    nb j'ai vu ton poste précédent trop tard. Cela ne change rien au raisonnement

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Par défaut
    Bonsoir ClaudeLELOUP,

    Merci pour ta réponse

    J'ai résolu mon problème en mettant ce code sur mon sfm-2, je n'ai pas utilisé de bouton pour actionner le code, mais je selectionne la ligne à supprimer, je fais suppr avec la touche du clavier, et cela marche correctement.

    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
    Private Sub Form_Delete(Cancel As Integer)
     
    '--- Boucle sur les controles du sous formulaire
         For Each ctl In Forms![frm Mise à jour des activités]![sfm Mise à jour des activités b].Form!.Controls
     
    '--- verifie si le contrôle actif est bien un bouton
         If TypeOf ctl Is CheckBox Then
                Set MonLabel = Forms![frm Mise à jour des activités]![sfm Mise à jour des activités b].Form!.Controls(ctl.Name & SufxLbl)
                C_lbl = MonLabel.Caption
     
            If Me.cmbActivités.Value = Mid(CStr(C_lbl), 6) Then
               ctl.Value = 0
               MonLabel.ForeColor = 14191499
            End If
         End If
    Next
     
    End Sub
    Salutations.

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Merci d'avoir renvoyé l'ascenseur.
    Je retiens l'idée de ta solution très élégante
    Bonne journée

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

Discussions similaires

  1. Supprimer case à cocher (suite copier coller)
    Par PICHOUX dans le forum Excel
    Réponses: 5
    Dernier message: 26/04/2013, 07h42
  2. Réponses: 1
    Dernier message: 13/02/2008, 21h51
  3. Supprimer les éléments sélectionnés avec une case à cocher
    Par keishah dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 16/08/2007, 15h38
  4. Réponses: 7
    Dernier message: 02/07/2007, 00h17
  5. Cocher une case à cocher lorsque la feuille est protégée
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/07/2006, 10h04

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