Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 11h26   #1
Invité de passage
 
Femme
Inscription : décembre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2011
Messages : 14
Points : 3
Points : 3
Par défaut Cocher et décocher en VBA

Bonjour.

Citation:
Envoyé par Nokho Voir le message
Bonjour les développeurs!!!
J'ai un projet access. Dans ce projet il y a un formulaire ayant des enregistrements. Devant chaque enregistrement il y a une case à cocher. J'aimerai créer un bouton qui permet de cocher ou décocher en même temps tous les cases.
Merci d'avance.
Je voudrais faire exactement la même chose, mais je n'arrive pas à écrire le code VBA. (je suis débutante)
Merci.
surumeika est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h07   #2
Membre éprouvé
 
Homme Robert LINCE
Conseiller psycho-pédagogique
Inscription : octobre 2007
Messages : 281
Détails du profil
Informations personnelles :
Nom : Homme Robert LINCE
Localisation : Belgique

Informations professionnelles :
Activité : Conseiller psycho-pédagogique
Secteur : Enseignement

Informations forums :
Inscription : octobre 2007
Messages : 281
Points : 483
Points : 483
Bonjour.
Si ce que tu souhaites faire c'est cocher ou décocher la case dans tous les enregistrements de la table, le code serait quelque chose comme
Code :
1
2
3
4
5
6
7
8
Private Sub Bouton_décocher_Click()
Dim db As DAO.Database
Set db = CurrentDb()
db.Execute "UPDATE Ta_table SET Ta_table.Ta_case_à_cocher= False"
db.Close
Me.Refresh
MsgBox "Toutes les cases ont été décochées."
End Sub
Pour cocher, il faut mettre True à la place de False.
Pour que cela fonctionne, il faut que la référence Microsoft DAO 3.6 Object Library soit activée dans ton projet. (Dans la fenêtre VBA, menu Outils -> Références, cocher la case correspondant à cette référence).
Attention, en procédant ainsi, tous les enregistrements de la table seront mis à jour. Si tu ne veux mettre à jour que certains enregistrements, il faut écrire une condition Where, ou par exemple, mettre à jour la requête avec laquelle tu as filtré les enregistrements et non la table elle-même.
Cordialement
RobiPMS est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 08/02/2012, 14h26   #3
Membre régulier
 
Homme Thierry Pallier
Regisseur
Inscription : octobre 2006
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Thierry Pallier
Âge : 52
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Regisseur
Secteur : Arts - Culture

Informations forums :
Inscription : octobre 2006
Messages : 47
Points : 94
Points : 94
Bonjour surumeika et RobiPMS

Le problème étant sur un formulaire ,je te propose une boucle sur tous les controles , et si c'est une case à cocher ,tu coche ou décoche (true ou false).
Dans l'evenement sur click de ton bouton ,mets ce code:
Code :
1
2
3
4
5
6
7
8
9
10
11
Sub essais3()
Dim ctrl As Control
 
For Each ctrl In Me.Controls
With ctrl
If ctrl.ControlType = 106 Then
ctrl.Value = False
 
End If
End With
Next ctrl
Me signifiant le formulaire dans lequel tu travaille .
Cdlt
Thierry_PALLIER est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/02/2012, 22h46   #4
Membre éclairé
 
Avatar de tee_grandbois
 
Inscription : novembre 2004
Messages : 216
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 216
Points : 321
Points : 321
Bonsoir à tous le 3,
et on peut même passer la valeur en paramètre :
Code :
1
2
3
4
5
6
7
8
9
10
11
Sub essais3(pYesNo as boolean)
Dim ctrl As Control
 
For Each ctrl In Me.Controls
With ctrl
If ctrl.ControlType = 106 Then
ctrl.Value = pYesNo
 
End If
End With
Next ctrl
tee_grandbois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 09h43   #5
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 090
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 090
Points : 11 622
Points : 11 622
Bonjour,

Citation:
il y a un formulaire ayant des enregistrements. Devant chaque enregistrement il y a une case à cocher.
La définition est une case à cocher par enregistrement et non toutes les cases à cocher d'un enregistrement. Bref !

La première solution à base de requête ne fait pas la distinction entre enregistrement affiché dans le formulaire et enregistrement de la table. Il fait toute la table.

La deuxième à base de for each coche toutes les cases d'un seul enregistrement, le courant.

Donc :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim rst As Recordset
Dim bkm As Variant
 
Set rst = Me.Recordset  ' ce qui est contenu dans le formulaire
bkm = rst.Bookmark       ' repaire l'enregistrement courant
 
DoCmd.Echo False         ' gel d'affichage
 
rst.MoveFirst
While Not rst.EOF
   Me.ccCase = True      ' coche chaque Case de chaque enregistrement
   rst.MoveNext
Wend
 
rst.Bookmark = bkm      ' revient à l'enreg courant
 
DoCmd.Echo True         ' degel d'affichage 
Set rst = Nothing
Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h01.


 
 
 
 
Partenaires

Hébergement Web