formateur informatique

Transmettre des données d'un formulaire à un autre

Accueil  >  Bureautique  >  Access  >  Access Astuces  >  Transmettre des données d'un formulaire à un autre
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Inscription Newsletter
Sujets que vous pourriez aussi aimer :


Transfert d'informations entre formulaires

Cette nouvelle astuce Access montre comment passer des paramètres d'un formulaire à un autre.

Ouvrir un autre formulaire sur enregistrement sélectionné avec détail des informations

Dans l'exemple illustré par la capture, au clic sur un enregistrement, un nouveau formulaire s'affiche. Ce dernierre transcrit le détail complet de l'activité sélectionnée. Ce mécanisme est particulièrement intéressant pour les bases de données offrant de riches informations. Dans le cas de clients par exemple, un clic sur un nom ou un identifiant permettrait d'accéder à toutes ses informations personnelles ainsi qu'au détail de toutes ses commandes dans un sous-formulaire.



Source et procédure
Pour démontrer l'intérêt de cette nouvelle astuce, nous proposons de nous appuyer sur les travaux aboutis à l'occasion des volets précédents.
  • Télécharger le fichier transfert-formulaires.rar en cliquant sur ce lien,
  • Le décompresser dans le dossier de votre choix,
  • Double cliquer sur le fichier résultant pour l'ouvrir dans Access,
  • Cliquer sur le bouton Activer le contenu du bandeau de sécurité,
  • Dans le volet de navigation sur la gauche de l'écran, double cliquer sur le formulaire f_source,
  • Avec la première liste déroulante, choisir un département,
  • Avec la seconde liste déroulante, choisir une ville qui lui appartient,
Nous avions réalisé la liaison entre ces deux listes à l'occasion d'une précédente astuce grâce au langage sql. Vous constatez que tous les enregistrements concordants sont extraits dans la partie inférieure du formulaire. C'est la requête dynamique r_source sur laquelle est bâtie le formulaire, prélevant ces choix, qui restitue les informations filtrées. Sa construction avait elle aussi fait l'objet d'une astuce. Si vous cliquez sur l'un des enregistrements résultants, vous notez que sa ligne est mise en valeur sur un fond rouge foncé. C'est une instruction VBA qui avait permis de transmettre l'identifiant cliqué pour déclencher une règle de mise en forme conditionnelle. Sur ce même clic, nous souhaiterions désormais afficher tout le détail de l'activité de sortie ciblée.
  • Dans le volet de navigation, double cliquer sur le formulaire f_cible,
Comme vous pouvez le voir, ce formulaire exhibe le détail des enregistrements de la table t_sorties.

Formulaire Access pour afficher le détail de l-enregistrement sélectionné depuis un autre formulaire

Mais à ce stade, aucune correspondance n'est établie. Ce sont les 896 enregistrements de la table qui sont restitués comme en atteste la barre de navigation en bas à gauche du formulaire.



Correspondance entre formulaires
L'enjeu consiste donc à caler l'affichage de ce formulaire cible sur l'enregistrement cliqué depuis le formulaire f_source. Une idée intéressante pourrait consister à construire une requête dynamique prélevant les informations de l'enregistrement cliqué en fonction de son identifiant. Mais maintenant que le formulaire f_cible est déjà construit sur la table t_sorties, il y a plus simple. Il suffit d'exécuter une action de macro ouvrant ce formulaire avec une clause Where. Cette clause consiste à faire la correspondance entre les identifiants, soit les valeurs portées par le champ de la clé primaire.
  • Fermer le formulaire f_cible,
  • De retour sur le formulaire f_source, cliquer sur la flèche du bouton Affichage dans le ruban,
  • Dans la liste des propositions, choisir le mode création,
  • Sur le formulaire en conception, cliquer sur la règle verticale de la zone Détail,
Sélectionner les contrôles du formulaire Access sur une même horizontale par clic sur la règle verticale

De cette manière, nous croisons la trajectoire des deux champs restituant les informations correspondant aux critères recoupés dans ce formulaire tabulaire. C'est en effet au clic sur l'une de ses lignes que nous devons afficher l'enregistrement filtré avec son détail dans le formulaire f_cible.
  • Dès lors, activer l'onglet Evénement de la feuille de propriétés,
  • Cliquer dans la zone de l'événement Au clic pour l'activer,
  • A son extrémité droite, cliquer sur le petit bouton à trois points,
  • Dans la boîte de dialogue qui suit, choisir le générateur de macro et valider par Ok,
Nous basculons ainsi dans l'éditeur de macro Access.
  • Déployer la liste déroulante et choisir l'action OuvrirFormulaire,
  • Dans la zone Nom de formulaire, choisir le formulaire f_cible,
  • Dans la zone Condition Where, cliquer sur le petit bouton à l'extrémité droite,
Nous affichons ainsi le générateur d'expression.
  • Désigner tout d'abord le champ s_id du formulaire cible comme suit : [s_id],
  • Taper le symbole égal (=) pour annoncer le critère (clause Where) à honorer,
  • Dans la liste de gauche, déployer l'arborescence complète des formulaires,
  • Dès lors, sélectionner le formulaire f_source,
  • Dans la liste du centre, double cliquer sur le champ s_id,
Erreur de syntaxe de correspondance entre deux formulaires dans générateur expression Access



A notre grande surprise, l'expression construite n'est pas correcte. Il s'agit d'un bug d'Access. Et une nouvelle astuce va nous permettre de le corriger. Nous devons établir la correspondance entre le champ s_id de destination et ce même champ issu du formulaire source. Et pour ce dernier, nous devons le cibler en parcourant les objets parents l'encapsulant, soit le formulaire f_source.
  • Supprimer le dernier champ s_id pour ne conserver que l'expression : [s_id] =,
  • Dans la liste de gauche du générateur, sélectionner le formulaire f_cible,
  • Dans la liste du centre, double cliquer sur le champ s_id,
Nous construisons ainsi l'expression suivante : [s_id]=Formulaires![f_cible]![s_id]. Mais nous souhaitons atteindre le champ s_id du formulaire f_source et non du formulaire f_cible.
  • Remplacer le nom f_cible par le nom f_source,
Nous obtenons donc la syntaxe suivante : [s_id]=Formulaires![f_source]![s_id].
  • La valider en cliquant sur le bouton Ok du générateur d'expression,
Elle apparaît effectivement dans la zone Condition Where de l'action de macro OuvrirFormulaire.
  • Dans la zone Mode fenêtre, choisir Boîte de dialogue,
Nous pourrons ainsi déplacer le formulaire de destination à notre guise dès lors qu'il sera ouvert.
  • En haut de la fenêtre Access, cliquer sur le bouton Enregistrer puis sur le bouton Fermer,
  • De retour sur le formulaire, l'enregistrer à son tour (CTRL + S),
  • L'exécuter en enfonçant la touche F5 du clavier par exemple,
  • Choisir un département avec la première liste déroulante,
  • Puis, cliquer sur la ligne de l'un des enregistrements restitués,
Afficher le détail de la ligne cliquée dans un autre formulaire Access par action de macro

Comme vous le constatez, la clause Where de l'action de macro fait son oeuvre. Le formulaire cible s'ouvre précisément sur l'activité de sortie sélectionnée. De fait, elle est isolée. Si vous fermez le formulaire cible et que vous cliquez sur un autre enregistrement, c'est bien son détail qui apparaît.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn