Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 22/09/2011, 15h19   #1
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 32
Points : 18
Points : 18
Par défaut Rendre visible un sous formulaire avec condition

(Re)Bonjour à vous !

Avant de commencer, je tiens à préciser que je me suis renseigner avant de poster, mais qu'aucune des solutions trouvées ne convient... Le code qui me pose problème est d'ailleurs issus d'un forum !

Alors voilà. Soit un formulaire, comprenant un champs "statuts" avec plusieurs cases à cocher (dont "Stagiaire". Soit un sous formulaire "Stage".

Ce que je veux:

Je voudrais que lorsque la case "Stagiaire" est cochée, le sous formulaire "Stage" s'affiche.

Ce que j'ai fait:

1. J'ai mis la visibilité du sous formulaire "Stage" sur "Non".
2. J'ai rentré le code suivant, par le biais d'une procédure évènementielle sur clic, dans le champs "Statut" du formulaire global (qui contient les cases à cocher):
Code :
1
2
3
4
5
6
7
8
Private Sub Statut_AfterUpdate()
Stage.Visible = False
 
If Statut.Value = "Stagiaire" Then
Stage.Visible = True
End If
 
End Sub
3. J'ai rentré le code suivant par le biais d'une procédure évènementielle sur activation, dans le formulaire global:
Code :
1
2
3
4
5
6
7
Private Sub Form_Current()
Stage.Visible = False
 
If Statut.Value = "Stagiaire" Then
Stage.Visible = True
End If
End Sub
PS: j'ai aussi tenté ces deux code en enlevant les guillemets de stagiaire, en remplaçant "If Statut.Value = "Stagiaire"" par "If Stagiaire=True", mais sans résultat.

Le résultat observé:

Je quitte le mode crétaion, je clic la coche la case "stagiaire"... et rien ne se passe !

Help me please je galère galère la !
Rominou28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 18h44   #2
Membre régulier
 
Homme Thierry Pallier
Regisseur
Inscription : octobre 2006
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Thierry Pallier
Âge : 51
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 Rominou28 .

- une case à cochée a pour valeur TRUE ou FALSE ,suivant si elle est cochée ou non.
- pour "gerer" un sous formulaire, il faut écrire :

Code :
Forms![TonFormulaire].Form![TonSousFormulaire].Visible=True
Cdlt
Thierry_PALLIER est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 09h54   #3
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 32
Points : 18
Points : 18
Je viens d'essayer avec ta solution ... mais ça ne fait toujours rien ! Bouhouhou je déprime :'(

Voici le code que j'ai rentré

Dans le formulaire principale:
Code :
1
2
3
4
5
6
7
Private Sub Form_Current()
If [Stagiaire] = True Then
Forms![Enr_nouv_contact_interne].Form![Stage].Visible = True
Else
Forms![Enr_nouv_contact_interne].Form![Stage].Visible = False
End If
End Sub
Dans le champs où il y a les cases à cocher:
Code :
1
2
3
4
5
6
Private Sub Statut_Click()
If [Stagiaire] = True Then
Forms![Enr_nouv_contact_interne].Form![Stage].Visible = True
Else
Forms![Enr_nouv_contact_interne].Form![Stage].Visible = False
End Sub
Merci d'avance de votre aide !
Rominou28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 11h55   #4
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 262
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 262
Points : 308
Points : 308
Bonjour,

Jai créé un premier formulaire (nommé "Principal") Sur lequel j'ai mis une case à cocher nommée : "Stagiaire"
puis un deuxième formulaire (nommé "Stage") que j'ai mis en sous-formulaire du premier.

et dans le code APRES_MAJ de la case à cocher de "Principal" j'ai écrit :

Code :
1
2
3
4
5
6
7
Private Sub Stagiaire_AfterUpdate()
    If Stagiaire Then
        Forms![Principal]![Stage].Visible = True
    Else
        Forms![Principal]![Stage].Visible = False
    End If
End Sub
et lorsque je sélectionne la case à cocher, le sous formulaire "Stage" apparait. Il disparait si je déselectionne.

On peut aussi écrire plus simplement :

Code :
1
2
3
Private Sub Stagiaire_AfterUpdate()
    Forms![Principal]![Stage].Visible = Stagiaire
End Sub
J'espère avoir répondu à la question
Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 12h26   #5
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 32
Points : 18
Points : 18
Encore une fois merci, mais ça ne fait toujours rien :'(

Peut être est ce parce que mes cases à coher sont dans un même champs?

Je joins ma bdd cette fois ci, je crois que ce sera plus concret... Le formulaire concerné s'appelle "nouveaucontactinterne" et les cases à cocher dans le champs "statuts"
Rominou28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h43   #6
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 262
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 262
Points : 308
Points : 308
Ton fichier joint, quand je le décompresse ça me donne un fichier nommé :
c2s.accdb
Je ne sais qu'en faire...impossible pour moi de le lire ou de l'exécuter.

Michel
PS : pourrais-tu tenter de reproduire l'exemple que je t'ai fourni et me dire si en l'état cela fonctionne chez toi. Cele nous donnerait quelque indication je pense. Ci-joint ma base de test. ouvrir simplement le Formulaire2
Fichiers attachés
Type de fichier : zip bd1.zip (50,5 Ko, 1 affichages)
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h47   #7
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 32
Points : 18
Points : 18
Moi je peux pourtant l'ouvrir ! c'est sûrement car j'utilise access 2007...

Deux minutes, je remet une version antérieure!

Edit: Il m'est impossible de l'enregistrer en version autre--'

Je crois bien que je suis foutu :'(
Rominou28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h51   #8
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 262
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 262
Points : 308
Points : 308
1/fais moi un .zip j'ai peut être un pb avec les .rar

2/essaye de faire fonctionner le base que je t'ai transmise

Ceci dit, là où tu écris dans ton
Code :
Forms![Enr_nouv_contact_interne].Form![Stage].Visible = True
Moi j'écris :
Code :
Forms![Enr_nouv_contact_interne]![Stage].Visible = True
Peut-être cela a-t-il une incidence... mais je n'y crois pas.

JE VIENS DE TESTER AVEC TA BASE : AUCUN PROBLEME CHEZ MOI, CELA FONCTIONNE OK !
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 14h15   #9
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 32
Points : 18
Points : 18
De toute manière le problème viens de moi , même sur ton exemple je n'y arrive pas ...

Je vais te refaire les étape, je dois forcément me planter quelque part.
1. J'ouvre ton document
2. J'ouvre le formulaire 2 en mode création
3.Je clique sur la case, je vais sur procédure évènementielle après maj
4. je rentre le code suivant
Code :
1
2
3
4
5
6
7
Private Sub Stagiaire_AfterUpdate()
If Stagiaire Then
        Forms![Formulaire2]![Formulaire3].Visible = True
    Else
        Forms![Formulaire2]![Formulaire3].Visible = False
    End If
End Sub
5. j'enregistre
6.Je test
7. Ça ne fait rien -_-

Edit= J'ai rajouté ma base en.zip !

Merci beaucoup de perdre autant de temps avec moi en tout cas ...
Rominou28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2011, 13h13   #10
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

j'ai regardé la base se trouvant dans le fichier .rar.

Ton champ Statut est un champ texte multi-valué (nouveauté Access 2007).
La conséquence est que lorsque tu mets ce champ sur un formulaire, il est transformé en contrôle liste déroulante.

Crée une procédure événementielle "Après MAJ" pour le contrôle Statut, avec ce code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub Statut_AfterUpdate()
Dim v As Variant
Dim bStagiaire As Boolean
 
'Par défaut on suppose la ligne "Stagiaire" non cochée
bStagiaire = False
'On parcours toutes les lignes cochées
For Each v In Me.Statut.ItemsSelected
    ' Si la ligne est la ligne "Stagiaire"
    If Me.Statut.ItemData(v) = "Stagiaire" Then
       ' on met la variable à True et on quitte la boucle
       bStagiaire = True
       Exit For
    End If
Next
 
' Visibilité du sous-formulaire Stage
Me.Stage.Visible = bStagiaire
 
End Sub
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2011, 22h33   #11
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut Thierry_PALLIER, Orion34080 et bienvenu Rominou28 sans oublier l'ami LedZeppII

comme d'ab t'as raison LedZeppII. pour chipoter, je propose une alternative à ton code:
Code :
1
2
3
Private Sub Statut_AfterUpdate()
Me.Stage.Visible = Join(Nz(Statut.Value, Array(""))) Like "*Stagiaire*"
End Sub
à utiliser en toute connaissance de cause...
sinon pour plus de sécurité:
Code :
Me.Stage.Visible = (vbNullChar & Join(Nz(Statut.Value, Array("")), vbNullChar) & vbNullChar) Like ("*" & vbNullChar & "Stagiaire" & vbNullChar & "*")
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 10h08   #12
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 32
Points : 18
Points : 18
Bonjour !

Désolé j'étais parti en long Week end, je reviens à l'instant ! Merci beaucoup pour vos réponses !Je me suis empressé de tester avec vos trois nouvelles solutions... mais toujours le même problème :'(
Je pense que c'est un problème avec la propriété "visible" du sous formulaire, mais je ne vois vraiment pas quoi mettre de plus!

Je joins le fichier pour que vous constatiez par vous même, si vous avez encore le courage de vous pencher sur mon cas ...
Rominou28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 10h19   #13
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
Code :
1
2
3
Private Sub Form_Current()
Call Statut_AfterUpdate
End Sub
désolé, ça nous paraissait tellement évident...
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 10h53   #14
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 32
Points : 18
Points : 18
Donc si j'ai bien compris ce code appelle la procédure évènementielle du champs statut, et s’exécute à l'activation du formulaire?

Dans tout les cas, j'ai mis ce code et ... ça marche pas --". Je suis maudit ou simplement un gros boulet ?

Je remet encore ma base, mais la je comprends vraiment pas quel oubli j'ai pu faire !

Vraiment désolé du dérangement ...
Rominou28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 15h25   #15
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 32
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 32
Points : 18
Points : 18
...

...

...

Bon aller je me lance j'avoue tout...

Ca marche enfin !

La solution? Dans mes options, access bloquait l’exécution des codes ...

Merci à tous, ça me débloque tout ! Merci merci merci !
Rominou28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h46.


 
 
 
 
Partenaires

Hébergement Web