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 08/01/2011, 12h08   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 0
Points : 0
Par défaut Accès enregistrement

Bonjour,

j'ai une base access avec un formulaire ("Fiche Films") basé sur une table avec une 100ène d'enregistrements (de films) basés sur un numéro.

J'ai créer un formulaire ("Recherche film par titre") basé sur une requête pour faire une recherche rapide sur ces 100 enregistrements. Il me sort alors le titre, l'affiche et le synopsis. J'ai ajouté un bouton action, et je voudrais par une macro, fermer le formulaire "recherche film par titre" (sa c'est bon), ouvrir le formulaire ("Fiche Films"), et accéder à la fiche du N-ième enregistrement, correspondant au titre du film qui était sélectionné.

Comment puis-je faire svp?

merci d'avance

Amariel
Amariel30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 12h27   #2
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 309
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 309
Points : 2 847
Points : 2 847
Bonjour,

Pour faire plus simple, tu pourrais accéder directement à ta fiche Film dès que tu as sélectionné son numéro dans ton formulaire "Fiche film"....

Ces anciens post devrait te donner quelque idée....
Ouvrir formulaire correspondant à une ligne.

Comment fait on pour ouvrir un formulaire en fonction d'un enregistrement ?

....pour commencer...
__________________
FreeAccess
"Petit à petit l'araignée tisse sa toile"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 12h48   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 0
Points : 0
Non justement je ne peux pas!

Je m'explique: Je fais un recherche avec comme mot clé "american" parce que je me rappelle plus du titre complet. Il me sort alors american beauty, american history X, american gangsters...

Je créer donc une présentation rapide de tous les films contenant le mot "american", je regarde quel film correspond au titre que je voulais et je clique alors si acceder à la fiche pour ouvrir la fiche complète.

Par contre je suis désolé je pige pas trop toutes les lignes de codes (je sais me servir des options disponibles dans access, mais programmer les boutons et autre système d'accès ou de recherche je comprend rien). Spour sa que je cherche la mache à suivre sans code pour accéder un enregistrement précis.
ex: je consulte la fiche rapide de american history X parce que j'ai recherché le mot american, je clique sur "Fiche complète" et j'accède directement à la fiche complète n°X du film American history X.
Amariel30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 13h18   #4
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 309
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 309
Points : 2 847
Points : 2 847
OK, avec un peu plus d'explications.....c'est plus clair...

Citation:
..table avec une 100ène d'enregistrements (de films) basés sur un numéro.
Ici, chaque film est identifié par un numéro unique.....et c'est donc cet identifiant qui va nous permettre d'ouvrir ton formulaire "Fiche films" directement sur le film correspondant.

Le code présent sur ton bouton action doit être sous la forme:
Code :
1
2
'Ouvre le formulaire "Fiche films"
DoCmd.OpenForm "Fiche films"
....et pour n'afficher QUE l'enregistrement correspondant..

Code :
1
2
3
4
'Ouvre le formulaire sur un enregistrement précis
DoCmd.OpenForm "Fiche films", , , "(ID_Film)= '" & Me.ListeChoix.Column(0) & "'"
'Je ferme le formulaire "Recherche film par titre"
DoCmd.Close acForm, "Recherche film par titre"
ID_Film = le nom du champ définissant le numéro du film

Me.ListeChoix.Column(0) = nom de ta Zone de liste de ton formulaire "Recherche film par titre".

Pour plus d'explications, regarde l'aide d'ACCESS sur Méthode OpenForm
__________________
FreeAccess
"Petit à petit l'araignée tisse sa toile"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 14h35   #5
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 0
Points : 0
Euh je t'ai envoyé un MP pour éviter de trop étaler mon ignorance sur access... je ne comprend pas déjà comment programmé le bouton? Je sais y appliqué des macros mais y appliquer un code, non!
Amariel30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 15h41   #6
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 309
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 309
Points : 2 847
Points : 2 847
Pas top le MP......car si je ne viens pas sur le Forum pendant un certain temps.....tu risque de ne pas avoir de réponse !!

Donc n'hésite pas à nous faire part de tes difficultés (tout le monde a un jour débuté..)....et l'ensemble des membres du Forum seront à même de t'aider...

Ceci dit, la programmation par le code VBA n'a rien de très compliquée......la première chose est de lire ce tuto de base, le comprendre et essayer de l'appliquer à ta propre application..
Les événements avec Microsoft Access
Initiation au VBA Office

Si tu sais affecter une macro à un contrôle bouton de commande, alors affecter du code VBA est tout aussi simple....

Si tu regarde bien, quand un contrôle est sélectionné, dans la fenêtre des propriétés sous l'onglet Évènements, tu trouvera l'ensemble des "actions" applicables à ce contrôle.
Ainsi, pour appliquer une action qui survient lors d'un clic sur ton bouton de contrôle (btnOuvrir) permettant d'ouvrir un autre formulaire, il suffit de cliquer sur le bouton situé en regard de l'événement "Sur clic" [...]......et de choisir "Générateur de code" et de cliquer sur OK.

Tu te retrouvera directement dans l'éditeur de code avec ton curseur placé entre ces deux lignes...:
Code :
1
2
3
Private Sub btnOuvrir_Click()
|
End Sub
C'est entre ces deux lignes qu'il te faut taper ton code VBA.
__________________
FreeAccess
"Petit à petit l'araignée tisse sa toile"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 17h06   #7
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 0
Points : 0
Ok donc j'ai fais ce que tu m'as dis dans le générateur de code (effectivement il m'ouvrait par défaut le générateur de macro, j'laurais pas trouvé par accident si tu m'avais pas dis comment faire! Merci

Sinon j'ai repris ton code voila ce que sa me donne au final (et sa ne marche pas, j'ai dus oublié quelques chose).


Code :
1
2
3
4
5
6
Private Sub Boîte24_Click()
 
DoCmd.OpenForm "Liste Films", , , "(N°)= '" & Me.ListeChoix.Column(0) & "'"
DoCmd.Close acForm, "RechercheFilmsTitre"
 
End Sub
J'ai changé Fiche films en "Liste Films" (qui est le nom de mon formulaire avec les fiches complètes), ID_Title en "N°" (qui est le nom du champ clé de ma table Liste Films), et Recherche film par titre en "RechercheFilmsTitre" (qui est le nom de mon formulaire contenant la requête de recherche de film en fonction du titre).

Je crois que ce qui ne va pas vient de:
Code :
'" & Me.ListeChoix.Column(0) & "'"
Je t'avouerais que je ne comprend pas trop cette ligne, si tu pouvais me la préciser! Parce que y'a quelques chose que je ne comprend pas, c'est la recherche de la fiche complète par le numéro. Ma requête de recherche de titre se base sur le champ Titre de ma table Liste Films, qui est intégré dans mon formulaire "RechercheFilmsTitre", ce dernier n'affichant pas le numéro mais uniquement le titre du film, l'affiche et le synopsis.
Le numéro à beau être la clé de ma table Liste Films, comme je ne créer pas de table lors de la recherche par titre je ne comprend pas comment il peut retrouver la fiche complète par le numéro si il n'est pas référencé dans mon formulaire de recherche.
Ce qu'il faudrait c'est une comparaison par titre complet de film et pas par le numéro.

J'espère avoir été clair, sur ce que je trouvais pas clair ^^"
Amariel30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 10h43   #8
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 0
Points : 0
Bonjour,

je refais un up car je n'ai toujours pas réussi à accéder à l'enregistrement que je voulais.

Sur un forum, j'ai vu un post avec ce code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub <controle>_Click()
Rem DoCmd.Minimize
On Error GoTo Err_<controle>_Click
 
Dim stDocName As String
Dim StLinkCriteriA As String
 
stDocName = "<Formulaire à ouvrir>"
StLinkCriteriA = "[<Champ lié1>]=" & Me![<champ lié2>]
 
DoCmd.OpenForm stDocName, , , StLinkCriteriA
 
Exit Sub
DoCmd.Restore
Err_<controle>_Click:
MsgBox Error$
Exit Sub
End Sub
Le problème c'est que je ne comprend pas champ lié 1 et champ lié 2 ce qu'il faut que je mette. Je ne comprend pas comment lui faire la comparaison du Titre qui s'affiche dans mon formulaire recherche film et le Titre du formulaire Liste Films qui contient tous mes enregistrements.
Amariel30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 08h01   #9
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 309
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 309
Points : 2 847
Points : 2 847
Bonjour,

Et bien tu y es presque....

Ici [<Champ lié1>] correspond au nom du champ présent sur le formulaire à ouvrir.
Ce champ correspond au paramètre ConditionWhere de la méthode OpenForm. C'est ce paramètre qui détermine quelle(s) valeur(s) doit afficher ton formulaire.

Ici & Me![<champ lié2>] correspond au nom du champ présent sur ton premier formulaire.

L'exemple donné dans l'aide d'ACCESS est assez parlant
Citation:
Exemple

Cet exemple ouvre le formulaire Employees en mode Formulaire et affiche uniquement les enregistrements dont le champ LastName (Nom) contient King (Roi)..

DoCmd.OpenForm "Employees", , ,"LastName = 'King'"
Simplement, dans ton cas, comme cette valeur change, on remplace par:
Code :
DoCmd.OpenForm "FormAOuvrir", , , "(NomChamp)= '" & Me.NomChampPremierForm & "'"
Et dans la tu trouvera comment écrire la bonne syntaxe en fonction que ton champ soit de type numérique ou de type texte...:
Type de données incompatible dans l'expression du critère

Et toujours dans la même ...
Comment ouvrir un formulaire en fonction d'une valeur contenue dans un autre formulaire ?
__________________
FreeAccess
"Petit à petit l'araignée tisse sa toile"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 10h30   #10
Invité de passage
 
Inscription : janvier 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 14
Points : 0
Points : 0
Pifou, gros pas en avant, je rejoins la bonne fiche complète en fonction de la fiche que je regarde.

Sinon quand je cherche alien, il me met les fiches dans mon formulaire recherchefilmtitre de Alien, Alien 2, Alien 3, Alien 4 et Braquage à l'Italienne. Mais comme il a recherché en fonction du titre qui est en fait "Alien 1 - Le 8 ème passager", je n'ai qu'une seule fiche dans mon formulaire Liste Films. Comment je peux lui dire que je veux qu'il m'affiche toutes les fiches qui se sont sorties lors de la recherche: soit ex: Alien 1 (fiche 42), Alien 2 (fiche 43), Alien 3 (fiche 44), Alien 4 (fiche 45) et Braque à l'Italienne (fiche 92)?
Amariel30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 10h49   #11
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 309
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 309
Points : 2 847
Points : 2 847
Dans l'exemple donné, tu fais une recherche par rapport au nom du film...

Quand tu es positionné sur la fiche du film "Alien 1 - Le 8 ème passager", ton paramètre ConditionWhere est donc égale à "Alien 1 - Le 8 ème passager".........donc ici, il est normal que ton formulaire ne fasse apparaitre QUE cet enregistrement.

Si tu souhaite avoir TOUS les enregistrements dont le nom du film commence par "Alien" ou qui contient "alien".......il faut changer le critère de ta condition..

Regarde du côté de LIKE..
Comment chercher les enregistrements contenant une certaine chaîne ? (LIKE)

...tu trouvera également tout ce qu'il te faut dans les tutos..
Formulaires de recherche
__________________
FreeAccess
"Petit à petit l'araignée tisse sa toile"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h09.


 
 
 
 
Partenaires

Hébergement Web