Bouton dans un état, visible selon condition

ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   -  
ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Dans un état basé sur une requête, listant les formations pour lesquelles j'ai tel suivi à faire, j'ai regroupé les formations selon que l'envoi du formulaire GFRH est « fait » ou « à faire ». Le champ s'appelle Suivi et contient l'expression : « Suivi: VraiFaux(EstNull([Form_gest_RH_envoye_CPT]);"À faire";"Fait") »

L'état est regroupé par « Suivi » (fait; à faire), puis par date d'échéance.

Dans mon état, je veux ajouter, pour chaque enregistrement, un petit bouton me permettant d'ouvrir un formulaire de saisie pour mettre à jour l'information de suivi. Ça c'est fait et ça fonctionne.

Maintenant, j'aimerais que ce bouton n'apparaisse que pour les enregistrements (formations) pour lesquels l'envoi n'est pas encore fait. Je voulais donc que « si le champ [Form_gest_RH_envoye_CPT] est vide, alors le bouton apparait, sinon il n'apparait pas. »

J'ai essayé une simple macro :

Private Sub Report_Current()

If Me.Form_gest_RH_envoye_CPT.Value = Null Then
Me.Commande33.Visible = True

Else: Me.Commande33.Visible = False

End If

End Sub


Je me suis dit que c'était trop facile... alors après un peu de recherche, j'en suis venue à :

Private Sub Report_Current()

Dim Rec As Recordset

For Each Rec In Report

If Me.Form_gest_RH_envoye_CPT.Value = Null Then
Me.Commande33.Visible = True

Else: Me.Commande33.Visible = False

End If

Next

End Sub


Niet! Le bouton apparait partout... (j'ai changé Report pour Me.CurrentReport, Me.Report, etc., j'ai changé Recordset pour Recordsets...), en fait, je n'ai aucune idée quoi faire.

Je ne rencontre pas de bogue, mais ça ne donne rien...

Merci de m'aider si vous pouvez!

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonsoir,
si jamais ton "for each" fonctionne, tu devrais utiliser Rec à la place de Me. sinon le "for each" ne sert à rien.
difficile d'être plus précis sans que tu partages ton fichier.
0
ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   40
 
Je vais anonymiser le fichier et tenter de vous l'envoyer. Ça ira à plus tard ou à demain, je quitte le bureau... merci!
0
ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   40 > ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention  
 
Beaucoup trop long... Hum!
En fait, non, je n'ai aucune idée si mon "for each" fonctionne, justement...
J'ignore totalement comment le formuler. Je sais que logiquement, ce serait « pour chaque enregistrement dans l'état, vérifie s'il y a une date dans le champ Form_gest_RH_envoye_CPT, si oui, n'affiche pas le bouton, si non, affiche-le ». Ça, c'est ma logique. Mais je cherche comment la traduire en VBA.

J'ai trouvé que je devrais dire :
If IsNull(Form_gest_RH_envoye_CPT) Then
plutôt que
If Me.Form_gest_RH_envoye_CPT.Value = Null Then
. C'est déjà un début!!!
0
ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention   40 > ButteDuLac Messages postés 495 Date d'inscription   Statut Membre Dernière intervention  
 
C'est toujours à la ligne « For Each » que ça bogue...
0