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 10/02/2011, 00h43   #1
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 9
Points : 9
Par défaut actualiser formulaire par 2 listes

Bonjour à tous,
je suis en train de réaliser mon premier projet à l'heure actuelle qui concerne la gestion d'une base de donnée des notes dans un collège (fictif)
J'ai différentes tables :
T_MATIERE
T_ELEVE
T_CLASSE
T_ETUDIER => ID_ETUDIER, ID_ELEVE, ID_MATIERE, note, coeff, date

J'ai crée dans un formulaire F_ETUDIER deux listes déroulantes à partir de :
RL_ELEVE => ID_ELEVE, NOM_EL, PRENOM_EL
RL_MATIERE => ID_MATIERE, NOM_MAT
et dans ce formulaire j'ai rajouté un sous formulaire SF_ETUDIER dans lequel j'ai
mes notes mes coef et mes dates de controles sous forme de tableau

Le seul hic, est que je voudrai que mon sous formulaire s'actualise en fonction des deux listes déroulantes précédentes.
En gros :
Je selectionne mon eleve
Je selectionne la matiere
J'ai les notes qui s'affichent avec leur coef, et leur date.

J'ai cherché des formules pour actualiser ce sous formulaire du genre :
mode création sur la liste des eleves, "sur changement" "..." code :
Code :
1
2
3
Private Sub Modifiable20_Change()
Forms![F_ETUDIER]![SF_ETUDIER].Requery
End Sub
Mais ca marche pas :/

Auriez-vous des idées?
D'avance merci !
JAG747 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 08h34   #2
Membre habitué
 
Inscription : juillet 2010
Messages : 117
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2010
Messages : 117
Points : 140
Points : 140
Bonjour à toi,

Si je comprends bien, la source de ton sous-formulaire est ta table T_ETUDIER.
Or, à sauf erreur de ma part, la méthode Requery sert à actualiser les données d'un objet dont la source est une requête après une mise à jour de cette dernière.
Je te propose d'utiliser plutot la propriété Filter de l'objet Form. En code, cela se traduira comme ça :

Code :
1
2
3
4
'Définition du filtre
Forms![F_ETUDIER]![SF_ETUDIER].Form.Filter = "[ID_ELEVE] = '" & me.RL_ELEVE.Value & "' and [ID_MATIERE] = '" & me.RL_MATIERE.Value & "'"  
'Activation du filtre
Forms![F_ETUDIER]![SF_ETUDIER].Form.FilterOn = True
Pour résumer la propriété Filter s'écrit à peu près comme tu écrirais la clause where d'une requête.
Pour éviter les erreurs, pense à ne déclencher ce code qu'après avoir vérifier que tes 2 listes sont renseignées.

Cordialement,
__________________
"Je suis capable du meilleur comme du pire, mais dans le pire, c'est moi le meilleur" Coluche.
Manhexter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 09h47   #3
Membre éclairé
 
Avatar de dok flint
 
Inscription : septembre 2003
Messages : 292
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : septembre 2003
Messages : 292
Points : 378
Points : 378
Bonjour ,
Je crois que c'est plutôt ça :
Code :
1
2
3
4
 
Private Sub Modifiable20_Change()
DoCmd.Requery "SF_ETUDIER"
End Sub
A+
__________________
Pourquoi faire compliqué quand on peut faire simple
Je suis encore en ACCESS 2003
dok flint est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 19h01   #4
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 9
Points : 9
Tout d'abord merci à vous de prendre du temps pour vous occuper de mon cas.
Alors, j'ai testé la technique de dok flint
Tout d'abord en mettant le code sur la liste deroulante élève, "sur changement"
Et ca ne fonctionne pas (pas d'erreurs mais rien d'actualisé)

Pour ce qui est de ta technique, Manhexter, il me met une erreur de compilation en surlignant en jaune .RL_ELEVE "Membre de méthode ou de donnée introuvable" alors qu'elle s'appelle bien comme cela.
Cependant je me pose une question. Je vais sur mes listes (c'est pareil pour les 2) et lorsque je vais sur la propriété "source contrôle" il n'y a rien dedans...
Et sur je clic sur la flèche déroulante pour choisir quelque chose, il n'y a aucun choix :/

Est-ce que cela vient de là? Comment faire ?
JAG747 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 07h50   #5
Membre éclairé
 
Avatar de dok flint
 
Inscription : septembre 2003
Messages : 292
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : septembre 2003
Messages : 292
Points : 378
Points : 378
Bonjour ,
Si on revient à ta première version où l'affichage s'effectue mais sans mise à jour :
Le sous formulaire ,qu'elle est sa source?
Est ce qu'il affiche le premier enregistrement de la table ? ou autre chose?
A+
__________________
Pourquoi faire compliqué quand on peut faire simple
Je suis encore en ACCESS 2003
dok flint est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 08h11   #6
Membre habitué
 
Inscription : juillet 2010
Messages : 117
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2010
Messages : 117
Points : 140
Points : 140
Essaie comme ça :

Code :
1
2
3
4
'Définition du filtre
Forms![F_ETUDIER].SF_ETUDIER.Form.Filter = "[ID_ELEVE] = '" & Forms![F_ETUDIER].RL_ELEVE & "' and [ID_MATIERE] = '" & Forms![F_ETUDIER].RL_MATIERE & "'"  
'Activation du filtre
Forms![F_ETUDIER].SF_ETUDIER.Form.FilterOn = True
Cordialement,
__________________
"Je suis capable du meilleur comme du pire, mais dans le pire, c'est moi le meilleur" Coluche.
Manhexter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 16h14   #7
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 9
Points : 9
ManHexter Ton code je suppose que je le mets bien au niveau des listes déroulantes au niveau de "sur changement" ?
Si c'est le cas, j'ai essayé et j'obtiens une erreur, 2465, au niveau de la ligne :
Code :
Forms![F_ETUDIER].SF_ETUDIER.Form.Filter = "[ID_ELEVE] = '" & Forms![F_ETUDIER].RL_ELEVE & "' and [ID_MATIERE] = '" & Forms![F_ETUDIER].RL_MATIERE & "'"
dok flint
Je vais dans F_ETUDIER (formulaire) en mode création, si je clic sur l'encadré su sous formulaire, sa source est SF_ETUDIER (sous formulaire)

Si je vais dans SF_ETUDIER directement, en mode création, sa source est : RSF_ETUDIER
Dans RSF_ETUDIER j'ai les champs de ma table T_ETUDIER et dans celle-ci j'ai l'ID_ELEVE, ID_MATIERE, NOTE_ETUDIER, COEF_NOTE, DATE_NOTE
J'ai donc dans SF_ETUDIER toutes mes notes de tous mes élèves dans toutes mes matières (2400 enregistrements)
JAG747 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 16h21   #8
Membre éclairé
 
Avatar de dok flint
 
Inscription : septembre 2003
Messages : 292
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : septembre 2003
Messages : 292
Points : 378
Points : 378
Bonjour ,
Est ce que tu peux joindre la base (avec quelques données seulement)
A+
__________________
Pourquoi faire compliqué quand on peut faire simple
Je suis encore en ACCESS 2003
dok flint est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 16h43   #9
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 9
Points : 9
"joindre la base" ?
Je vois pas trop ce que tu veux dire?
JAG747 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 16h50   #10
Membre éclairé
 
Avatar de dok flint
 
Inscription : septembre 2003
Messages : 292
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : septembre 2003
Messages : 292
Points : 378
Points : 378
C'est mettre la base en pièce jointe dans ton message.
A+
__________________
Pourquoi faire compliqué quand on peut faire simple
Je suis encore en ACCESS 2003
dok flint est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 16h59   #11
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 9
Points : 9
Oh d'accord je pensais que c'était de joindre une table avec une relation ou un truc du genre^^

Le voilà (j'ai supprimé pas mal d'enregistrements pour essayer de baisser le poids mais ca n'a rien changé.. donc j'ai zippé !)
JAG747 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 17h02   #12
Membre éclairé
 
Avatar de dok flint
 
Inscription : septembre 2003
Messages : 292
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : septembre 2003
Messages : 292
Points : 378
Points : 378
Merci de mettre la base en version 2003 .
A+
__________________
Pourquoi faire compliqué quand on peut faire simple
Je suis encore en ACCESS 2003
dok flint est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 17h06   #13
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 9
Points : 9
Désolé j'avais oublié
Fichiers attachés
Type de fichier : zip Projet VB-2002-2003.zip (68,4 Ko, 9 affichages)
JAG747 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 17h41   #14
Membre éclairé
 
Avatar de dok flint
 
Inscription : septembre 2003
Messages : 292
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : septembre 2003
Messages : 292
Points : 378
Points : 378
Voyons ci c'est ça marche comme ça.
A+
__________________
Pourquoi faire compliqué quand on peut faire simple
Je suis encore en ACCESS 2003
dok flint est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 17h51   #15
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 9
Points : 9
Génial ça fonctionne
Alors, je vois que tu as modifié ma requete RSF_ETUDIER en ajoutant ID_ELEVE et ID_MATIERE

[Formulaires]![F_ETUDIER]![Modifiable20]
[Formulaires]![F_ETUDIER]![Modifiable14]
Ca sert à quoi ça?
Est-ce juste cela qu'il fallait mettre en plus?

(je voudrais bien savoir ce que tu m'as modifié en fait pour pouvoir le refaire par moi-même plus tard )
Merci beaucoup en tout cas !
JAG747 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 17h56   #16
Membre habitué
 
Inscription : juillet 2010
Messages : 117
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2010
Messages : 117
Points : 140
Points : 140
Dok flint a été plus rapide que moi à ce que je vois.

De mon côté cela fonctionne aussi. En restant sur le même principe de solution que j'avais proposé, voici le code :

Code :
1
2
3
4
5
6
If Len(Me.Modifiable14) > 0 And Len(Me.Modifiable20) > 0 Then
    'Définition du filtre
    Forms![F_ETUDIER].SF_ETUDIER.Form.Filter = "[ID_ELEVE] = " & Me.Modifiable20 & " and [ID_MATIERE] = " & Me.Modifiable14
    'Activation du filtre
    Forms![F_ETUDIER].SF_ETUDIER.Form.FilterOn = True
End If
Quand on a le nom exact des champs et leurs types ça aide ^^.

Bonne continuation et pense au petit clique sur résolu en bas ^^.
__________________
"Je suis capable du meilleur comme du pire, mais dans le pire, c'est moi le meilleur" Coluche.
Manhexter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 18h03   #17
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 9
Points : 9
Très bien, j'attends une ou deux explications de dok flint histoire de pas avoir à reposer le même post dans 3jours^^ et je mets en résolu

Le truc est que dans RSF_ETUDIER il y a 2 critères d'ajoutés en plus :
[Formulaires]![F_ETUDIER]![Modifiable20]
[Formulaires]![F_ETUDIER]![Modifiable17]

Et dans F_ETUDIER, dans les propriétés des listes j'ai :
SELECT [RL_ELEVE].[ID_ELEVE], [RL_ELEVE].[NOM_ELEVE], [RL_ELEVE].[PRENOM_ELEVE] FROM RL_ELEVE;
(pareil pour la matière)

Origine source : Table/Requête

Donc je sais pas si c'est en tapant la formule dans RSF_ETUDIER que les propriétés se sont mises, si elles se sont mises après avoir fait autre chose, ou si tu les as tapées toi même...

Pourrais-tu me donner quelques infos pour que je sache me débrouiller tout seul par la suite?
D'avance merci !
JAG747 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 08h22   #18
Membre éclairé
 
Avatar de dok flint
 
Inscription : septembre 2003
Messages : 292
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : septembre 2003
Messages : 292
Points : 378
Points : 378
Bonjour ,
La chose est simple ,il faut penser que la source de données d'un formulaire ou sous formulaire que ça soit une table ou requête c'est la même chose , donc il faut ouvrir la source de données dans les propriétés(par les ...) du form (qu'il s'agit d'un formulaire ou sous-formulaire) tu verra que c'est une requête que tu a devant toi ,puis de là il n'y a qu'a mettre dans la ligne critère les champs de choix dans le formulaire principal (qui sont modifiable 20 et 14 pour toi) , bien sur il faut ajouter les champs correspondants aux critères de sélections s'ils n'existent pas .
Pour ajouter les champs dans cette ligne de critère le plus simple c'est de placer le curseur dans la case ,un clic avec le bouton droit et un petit menu contextuel apparait ,tu choisi créer et tu choisi tes champs.
Tout ça c'est pour Access 2003 mais je ne crois pas que ça change énormément d'une version à l'autre car le principe reste le même.
J'espère être clair donc c'est à toi d'essayer
N'oublies pas le et pourquoi pas un petit vote
A+
__________________
Pourquoi faire compliqué quand on peut faire simple
Je suis encore en ACCESS 2003
dok flint est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/02/2011, 16h21   #19
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 9
Points : 9
Très bien, je pense avoir cerné le sujet...
Le seul problème est que si je veux ajouter des notes, elles ne sont pas stockées dans ma table T_ETUDIER, donc cela permet juste (même si c'est déjà bien) l'affichage :/
JAG747 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 16h35   #20
Membre éclairé
 
Avatar de dok flint
 
Inscription : septembre 2003
Messages : 292
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : septembre 2003
Messages : 292
Points : 378
Points : 378
Bonjour ,
Il faut déterminer ce que tu veux faire dés le début ,déjà au niveau de la saisie des données sur quelle table et par quel moyen il y a l'entrée des données.
A+
__________________
Pourquoi faire compliqué quand on peut faire simple
Je suis encore en ACCESS 2003
dok flint est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h37.


 
 
 
 
Partenaires

Hébergement Web