BDAccess2007: Enregistrements cliquables
Résolu/Fermé1 réponse
Syzygy
Messages postés
378
Date d'inscription
vendredi 29 avril 2011
Statut
Membre
Dernière intervention
31 décembre 2011
143
6 août 2011 à 17:08
6 août 2011 à 17:08
Bonjour,
Oui c'est possible, à l'aide d'un peu de code VBA.
Disons que le formulaire de recherche s'appelle "Recherche" et celui qui affiche les informations s'appelle "DetailArticle".
Nous appellerons "RefArticleRecherche" le champ contenant la référence de l'article (votre clé primaire) dans le formulaire de recherche, et appellerons "RefArticle" le nom du champ contenant la référence de l'article dans votre table "Article"
Dans votre formulaire "Recherche", sur le contrôle affichant la référence de l'article, dans la feuille propriétés, allez dans l'onglet "Evenement"
Sur l'événement "Sur clic", ajoutez le code VBA suivant :
DoCmd.OpenForm "DetailArticle", , , "[RefArticle]='" & Me.RefArticleRecherche & "'"
Dans votre cas, remplacez les noms en italiques par les vrais noms de vos champs contenus dans votre base de données.
N'oubliez pas de ",", de "'" et de """ sinon le code ne marchera pas.
Par la même, changez l'aspect de votre contrôle "RefArticleRecherche" en lien hypertexte, cela sera plus parlant pour les utilisateurs (feuille de propiétés -> Onglet Format, passez l'option "Afficher comme lien hypertexte" à "Ecran uniquement")
Bon après-midi,
Oui c'est possible, à l'aide d'un peu de code VBA.
Disons que le formulaire de recherche s'appelle "Recherche" et celui qui affiche les informations s'appelle "DetailArticle".
Nous appellerons "RefArticleRecherche" le champ contenant la référence de l'article (votre clé primaire) dans le formulaire de recherche, et appellerons "RefArticle" le nom du champ contenant la référence de l'article dans votre table "Article"
Dans votre formulaire "Recherche", sur le contrôle affichant la référence de l'article, dans la feuille propriétés, allez dans l'onglet "Evenement"
Sur l'événement "Sur clic", ajoutez le code VBA suivant :
DoCmd.OpenForm "DetailArticle", , , "[RefArticle]='" & Me.RefArticleRecherche & "'"
Dans votre cas, remplacez les noms en italiques par les vrais noms de vos champs contenus dans votre base de données.
N'oubliez pas de ",", de "'" et de """ sinon le code ne marchera pas.
Par la même, changez l'aspect de votre contrôle "RefArticleRecherche" en lien hypertexte, cela sera plus parlant pour les utilisateurs (feuille de propiétés -> Onglet Format, passez l'option "Afficher comme lien hypertexte" à "Ecran uniquement")
Bon après-midi,
Modifié par Walidos le 7/08/2011 à 14:46
Suite à la manip, il m'affiche le message "Access ne peut pas trouver l'objet DoCmd".
Il y a un problème avec les guillemets et la syntaxe je crois. J'ai donc essayé de mettre le code dans un "Private Sub Click" directement sur le générateur de codes VBA.
la commande est (comme vous le savez déjà):
DoCmd.OpenForm FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs
Pouvez vous svp me dire à quoi correspond ces paramètres dans notre exemple? Peut être ça sera plus clair et le code sera plus facilement adaptable.
Faut il pas mettre des parenthèses à la fin de votre codes ou c'est facultatif?
Votre dernière phrase: N'oubliez pas de ",", de "'" et de """ sinon le code ne marchera pas.
vous vouliez dire "n'oubliez pas d'ajouter"?
Je crois que c'est un prblm de syntaxe, de ponctuations..
un énorme merci!
:)
7 août 2011 à 18:53
Alors concernant l'explication de la ligne de code :
DoCmd.OpenForm : cette instruction indique à Access qu'il doit ouvrir un formulaire selon les paramètres suivants :
- FormName : Il s'agit du nom du formulaire à ouvrir. Celui-ci doit être indiqué entre guillemet.
Dans mon exemple il s'agit du "DetailArticle"
- View : Il s'agit du mode d'affichage du formulaire (en mode création, en mode formulaire). Si l'argument est omis, Access ouvrira le formulaire en mode formulaire.
- FilterName : Si vous avez créé et enregistré un filtre, indiquez son nom pour cet argument. Access ouvrira le formulaire et appliquera immédiatement le filtre. Cet argument n'est pas nécessaire pour faire ce que vous voulez
- WhereCondition : Utilisez cet argument si vous voulez que le formulaire se charge automatiquement sur un enregistrement ou groupe d'enregistrement spécifique. Il faut jouer avec cet argument si vous voulez ouvrir un enregistrement spécifique à partir d'un autre formulaire (ou requête, ou table...). Pour du texte, la construction est celle que je vous ai indiqué dans mon post précédent. Si mes souvenirs sont bons, pour des nombres, il faut retirer les apostrophes et avec des dates, il faut remplacer l'apostrophe par des #. Ceci me fait penser que ma ligne de code contient probablement une erreur. Je vous laisse la bonne ligne tout à la fin de ce post (un peu de suspense ne fait pas de mal ;-))
Si l'argument est omis, le formulaire affichera toutes les données.
Dans mon exemple, il s'agit de "[RefArticle]='" & Me.RefArticleRecherche & "'"
- DataMode: Utilisez cet argument si vous voulez ouvrir votre formulaire en lecture seule ou en mode ajout. Si l'argument est omis, Access ouvre le formulaire en mode d'édition par défaut.
- WindowMode: Utilisez cet argument pour spécifier si le formulaire doit être ouvert dans une fenêtre... Si l'argument est omis, Access ouvrira le formulaire dans son mode d'affichage par défault.
- OpenArgs : Si vous voulez passer un paramètre à votre formulaire lors de son ouverture. Ce paramètre doit être stocké sous forme de variable. Dans votre cas, vous n'en avez pas besoin.
Ensuite, concernant les parenthèses, de manière générale en VBA, ajoutez des parenthèses uniquement si vous attendez un résultat en retour d'une instruction.
Dans la mesure où vous ne voulez qu'ouvrir un formulaire, il n'est pas nécessaire de placer des parenthèses.
Concernant ma dernière phrase, je voulais bien dire de ne pas oublier des virgule, guillemet... dans ma ligne de code. A ce sujet, j'apporte une petite modification à mon code.
Ma ligne précédente basait la recherche sur du texte, mais nous cherchons ici un nombre.
Essayez plutôt :
DoCmd.OpenForm "DetailArticle", , , "[RefArticle]=" & Me.RefArticleRecherche
Bon après-midi
7 août 2011 à 23:47
Finalement ça a marché!!
Mais uniquement pour le champ "désignation" de ma table, donc avec les apostrophes guillemets, ce qui a donné ça:
DoCmd.OpenForm "TableCDE Requête2", , , "[Désignation]=" & "'" & Me.Désignation & "'"
Il fallait aussi ajouter "'" & avant Me.Désignation & "'"
Le reste n'est pas important pour mon cas puisqu'il me suffit d'avoir un seul lien entre le formulaire de recherche et celui des détails.
Pour info, les autres lignes (inutiles désormais) sont:
DoCmd.OpenForm "TableCDE Requête2", , , "[Num_Cde]=" & Me.Num_Cde
DoCmd.OpenForm "TableCDE Requête2", , , "[Date_Cde]=" & Me.Date_Cde
J'ai essayé avec et sans apostrophes, guillemets et # pour les dates en vain.
Encore une fois merci beaucoup Syzygy pour votre soutien!! :)))
et Bonne continuation!!! :D