"Cocher/Décocher tout" dans sous-formulaire Access VBA

Résolu
Aurore_GND Messages postés 2 Date d'inscription jeudi 6 juin 2024 Statut Membre Dernière intervention 6 juin 2024 - 6 juin 2024 à 11:43
yg_be Messages postés 23230 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 septembre 2024 - 6 juin 2024 à 14:01

Bonjour à tou(te)s,

Je me permets de faire ce post car je n’ai pas trouvé de réponse sur le forum.

J’ai une base de données avec un formulaire [Frm_OP] (rattaché à la table [Offre_de_prix]) dans lequel se trouve un sous-formulaire [Ssfrm_offres] (rattaché à la requête [Qry_offres], qui ne comporte aucun filtre, elle-même rattachée à la table [Tbl_offres]), qui contient une case à cocher [Exclusion] (créée dans la table [Tbl_offres]).

Après recherches et aides diverses sur des forums, j’ai créé le code VBA suivant pour les cases à cocher/décocher :

Option Explicit

***

Private Sub cocher_tout_Click()

Me.RecordsetClone.Edit

Me.RecordsetClone.Fields("Exclusion") = True

Me.RecordsetClone.Update

Me.RecordsetClone.MoveNext

End Sub

***

Private Sub decocher_tout_Click()

Me.RecordsetClone.Edit

Me.RecordsetClone.Fields("Exclusion") = False

Me.RecordsetClone.Update

Me.RecordsetClone.MoveNext

End Sub

En soi, la requête fonctionne (coche et décoche) MAIS elle ne se fait pas automatiquement pour toutes les lignes : je dois cliquer autant de fois qu’il y a de lignes dans mon sous-formulaire. Or, l’objectif est que l’intégralité des lignes soit cochée/décochée car il peut il y en avoir plusieurs centaines dans un même sous-formulaire.

Par ailleurs, je rencontre un second problème. Lorsque la dernière ligne du sous-formulaire est cochée/décochée, j'ai le message d'erreur suivant : "Erreur d'exécution '3021' : aucun enregistrement en cours" et il faut que je sorte du formulaire et rentre de nouveau pour pouvoir de nouveau cocher/décocher (le simple fait de changer d'enregistrement de formulaire ne suffit pas).

Je vous mets un visuel de mon formulaire avec des informations qui, à mon sens, peuvent peut-être aider à la compréhension (car je ne suis pas sûre d'avoir été très claire dans mon post). 

Auriez-vous une idée d’où le problème pourrait venir ?

Je vous en remercie par avance.

1 réponse

yg_be Messages postés 23230 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 septembre 2024 Ambassadeur 1 538
6 juin 2024 à 12:39

bonjour,

En effet, ton code ne traite qu'un seul enregistrement, et passe au suivant.  Quand il est au dernier, il provoque une erreur en tentant de passer au suivant.  Je suggère de faire plutôt ainsi, et de parcourir tous les enregistrements, en commençant par le premier, jusqu'au dernier:

Me.RecordsetClone.MoveFirst
do until Me.RecordsetClone.EOF
    Me.RecordsetClone.Edit
    Me.RecordsetClone.Fields("Exclusion") = True
    Me.RecordsetClone.Update
    Me.RecordsetClone.MoveNext
loop

Je pense que cela va résoudre les deux problèmes que tu décris.

0
Aurore_GND Messages postés 2 Date d'inscription jeudi 6 juin 2024 Statut Membre Dernière intervention 6 juin 2024
6 juin 2024 à 13:33

Bonjour,

Merciiiii !! Ca fonctionne parfaitement ! 

0
yg_be Messages postés 23230 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 septembre 2024 1 538 > Aurore_GND Messages postés 2 Date d'inscription jeudi 6 juin 2024 Statut Membre Dernière intervention 6 juin 2024
6 juin 2024 à 14:01

parfait, peux-tu alors marquer la discussion comme résolue?

0