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) MAISelle 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 ?
La dernière ligne est la ligne d'insertion d'une nouvelle donnée sauf erreur de ma part, donc le message me semble normal.
Pour tes fonctions, il faut que tu fasses une boucle sur tous les enregistrements, or tu agis sur une ligne puis tu passes à la suivante avant de sortir
A tester:
Private Sub cocher_tout_Click()
Do while not Me.RecordsetClone.EOF
Me.RecordsetClone.Fields("Exclusion") = True
Me.RecordsetClone.Update
Me.RecordsetClone.MoveNext
Loop
End Sub
- Edité par umfred 11 juin 2024 à 19:24:59
Cocher Décocher tout dans sous-formulaire Access
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.