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 :

[VBA]Comment modifier en un clic la case à cocher sur plusieurs enregistrement


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [VBA]Comment modifier en un clic la case à cocher sur plusieurs enregistrement
    Bonjour à tous,
    Avant que je sois complètement sec, y a t’il quelqu’un qui pourrai m’apporter solution au problème ci-dessous ?

    Données :
    Sous Access 2000, j'ai un formulaire [frmCaseCocher_1] lié à [Table1] qui comprend un sous-formulaire [frmCaseCocher_sub] lié à [Table2]. Dans [Table2] et [frmCaseCocher_sub] j'ai un champ « case à cocher » [Select].

    Problème :
    Je souhaite pouvoir modifier le champ [Sélection] de deux façon :
    soit de manière individuelle (pas de difficulté dans ce cas, il suffit de modifier la « case à cocher »).
    soit de manière globale, c.à d. tout les enregistrements de [Table2] liés à un emregistrement de [Table1] (c’est là que je sèche depuis quelques temps).

    Début de solution :
    Dans [frmCaseCocher_1], j’ai placé une « case à cocher » [Tout sélectionné].
    Via la propriété [Evénement_SurClic_ProcédureEvénementielle] et les lignes VBA de code ci-dessous je modifie uniquement la « case à cocher » [Select] de l’enregistrement « activé » du sous-formulaire [frmCaseCocher_sub].

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub chkBt1_Click()
    Dim ctl As Control
    If Me.chkBt1 = True Then 
    chkBt2 = -1
    Forms![frmCaseCocher_1]![frmCaseCocher_sub].Form![Select] = -1
    Else
    chkBt2 = 0
    Forms![frmCaseCocher_1]![frmCaseCocher_sub].Form![Select] = 0
    End If
    End Sub
    Questions :
    Est-ce la bonne méthode ?
    Si « OUI », comment activer (code VBA, et ou le placer dans les lignes ci-dessus) tout les enregistrements ?
    Est-il plus simple d’utiliser une requête de « mise à jour » ?
    Si « OUI », comment la créer (pas à pas, si possible) ?


    Merci, pour les aides futures

  2. #2
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Peut etre que ceci pourrait t'aider
    http://www.developpez.net/forums/sho...77#post1840377

  3. #3
    Membre habitué
    Inscrit en
    Février 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Février 2006
    Messages : 230
    Points : 176
    Points
    176
    Par défaut
    Personnellement, j'ai placé un champ sélection dans ma table de type "Case à cocher" (Vrai/FAux) et effectivement j'ai bâti une requête mise à jour sur cette table en la nommant R_Select_Nom et en plaçant Vrai dans MAJ de la requête...
    j'en crée une autre R_Deselect_Nom en plaçant Faux... et une case dans mon formulaire avec comme code sur click ... If ... = true then R_Select_Nom.....

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci Renardo, je vais essayer ce code.
    Si j’ai des problèmes, je continue la discussion.

    Merci aussi pour la solution de delcroixf, je ne suis pas sûre que seul les enregistrements de [Table2] liés à l’enregistrement « x » de [Table1] seraient les seuls concernés. Alors en cas d’insuccès de la solution de Renardo, j’essaierai cette méthode.


  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Quelques résultats:
    > la solution via une requête de mise à jour, proposé par delcroixf, fonctionne très bien pour l'ensemble des enregistrements d'une table ou pour des enregistrements liés à un(des) critère(s) fixe(nt) qui est(sont) défini(s) dans la requête. Ce qui ne me convient pas, il faut que le modification se fassent uniquement sur les enregistrements du sous-formulaire liés au formulaire ouvert.

    > je n'ai pas trouvé de solution en adaptant à mon sous-formulaire le code proposé par Renardo
    http://www.developpez.net/forums/sho...77#post1840377
    Code initial que j'ai adapté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    01-Private Sub chkBt1_Click()
    02-Dim strForm As String, fm As Form
    03-Dim EnrDebut As Long, EnrCount As Long, i As Long
    04-strForm = "frmCaseCocher_sub"
    05-Set fm = Forms(strForm)
    06-EnrDebut = fm.SelectTop
    07-EnrCount = fm.SelectHeight
    08-For i = 1 To EnrCount
    09-  DoCmd.GoToRecord acDataForm, strForm, acGoTo, EnrDebut + (i - 1)
    10-  fm.Sel = 0
    11-Next
    12-End Sub
    Les Bugs:
    Ligne 05=> erreur 2450 si le formulaire "frmCaseCocher_sub" est fermé (ce qui est le cas si je n'ouvre que le formulaire "frmCaseCocher_1", le formulaire "père").
    En ligne 04, j'ai essayé le code ci-dessous, et c'est moins bien, erreur 2450 avec "frmCaseCocher_sub" ouvert ou fermé !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    04-strForm = "Forms![frmCaseCocher_1]![frmCaseCocher_sub]"
    Avec la ligne 05 du code initial et le formulaire "frmCaseCocher_sub" ouvert, l'erreur 2465 est générée en ligne 06


    Et ci-dessous le code qui me permet de modifier la case à cocher de l'enregistrement actif de mon sous-formulaire "frmCaseCocher_sub" (sous-formulaire non ouvert).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    51-Private Sub chkBt1_Click()
    52-If Me.chkBt1 = True Then
    53-   Forms![frmCaseCocher_1]![frmCaseCocher_sub].Form![Select] = -1
    54- Else
    55-   Forms![frmCaseCocher_1]![frmCaseCocher_sub].Form![Select] = 0
    56-End If
    57-End Sub
    Que faire ?
    Y a t’il une bonne âme sûrement moins novice que moi qui pourrait me mixer ces deux codes (spécialement les références) ?
    Merci d’avance pour le coup de pousse.

Discussions similaires

  1. [VBA] comment modifier les items des collections
    Par tangjuncn dans le forum Général VBA
    Réponses: 2
    Dernier message: 18/02/2014, 16h37
  2. Sélection par case à cocher sur plusieurs pages de formulaire
    Par lodan dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2009, 15h44
  3. [VBA-E] Probleme Macro pour gérer des cases à cocher
    Par bibiche2184 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/06/2006, 18h03
  4. [JTABLE][CHECKBOX] modifier la valeur de la case à cocher
    Par zozolh2 dans le forum Composants
    Réponses: 3
    Dernier message: 03/05/2006, 11h13
  5. Comment récupérer l'état d'une case à cocher
    Par oursquetaire dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 10/01/2006, 08h58

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