BDAccess2007: Enregistrements cliquables

Résolu/Fermé
Walidos - 5 août 2011 à 10:29
 Walidos - 7 août 2011 à 23:47
Bonjour,

S'il vous plait, je débute avec access 2007 et j'ai besoin de faire ce qui suit:

L'un des formulaires de ma base sert de moteur de recherche: il y a un champ pour entrer les mots clés et un bouton "recherche". Les résultats apparaissent ainsi sur le même formulaire dans un sous-formulaire.

Est ce qu'il y a un moyen svp de rendre les "lignes résultats" du sous-formulaire "cliquables"?



Exemple de résultats de recherche (pour mot clé vernis):

Article / Désignation / Qte
55 / vernis / 3
69 / vernis / 6


Lorsque je clique sur la première ligne par exemple, s'affiche un 2ème formulaire détaillé et modifiable (qui existe déjà dans ma base) de "l'article 55", du genre:


Désignation: vernis
Article : 55
Qte : 3
Fournisseur: abli
Date: 15/02/2010
Adresse: Nice
...




Merci pour votre aide!

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
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,
1
Merci pour votre retour Syzygy!
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!
:)
0
Syzygy Messages postés 378 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 31 décembre 2011 143
7 août 2011 à 18:53
Bonjour,

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
0
Merci d'avoir pris le temps de répondre avec une telle précision!
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
0