formateur informatique

Ouverture d'un formulaire sur un emplacement précis

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Ouverture d'un formulaire sur un emplacement précis
Livres à télécharger


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


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Ouvrir et fermer automatiquement un formulaire

Pour améliorer l'ergonomie des applications Access, nous proposons de voir comment il est possible d'enclencher l'ouverture et la fermeture automatiques de formulaires complémentaires.

Ouvrir un autre formulaire Access sur un enregistrement précis

Sur l'exemple illustré par la capture, l'utilisateur travaille sur un formulaire affichant les informations et résultats des commerciaux qu'il peut faire défiler. Dès lors qu'il survole la zone de l'identifiant, un formulaire annexe apparaît aussitôt et isole les données du commercial en cours de consultation. Il s'agit donc d'une ouverture automatique ciblée. Ce second formulaire est voué à modifier l'objectif fixé au salarié pour le changer en base de données. Et dès que l'utilisateur clique sur un emplacement vide de ce second formulaire, celui-ci se ferme automatiquement et rend la main au formulaire principal.

Base de données Access à télécharger
Pour la mise en place de ce mécanisme, nous suggérons d'appuyer l'étude sur une base de données offrant ces deux formulaires. Le volet de navigation sur la gauche de l'écran, accueille une table, une requête et deux formulaires. Le formulaire f_com est le formulaire principal de consultation.
  • Double cliquer sur le formulaire f_com pour l'exécuter,
Il restitue les informations de la table Commerciaux que l'utilisateur peut faire défiler avec la petite barre de navigation placée en bas à gauche du formulaire.

L'enjeu ici est d'ouvrir le formulaire f_valid au survol de la zone de l'identifiant par la souris. Et à l'ouverture, ce formulaire complémentaire doit être calé sur le numéro d'enregistrement qui était en cours de consultation depuis le formulaire principal.
  • Double cliquer sur le formulaire f_valid pour l'ouvrir,
Formulaire Access complémentaire à faire communiquer avec le formulaire principal

Il est lui aussi construit sur la table des commerciaux. Il s'affiche en mode fenêtre. Lorsqu'il est appelé indépendamment comme ici, il se cale sur le premier enregistrement. C'est ce que nous devrons corriger lors de l'appel pour faire coïncider les identifiants.

Il est destiné à recalibrer l'objectif du commercial dans la dernière zone de saisie, celle qui est vide. C'est d'ailleurs la seule zone de ce formulaire qui peut être modifiée. Après saisie du nouvel objectif et clic sur le bouton Valider, c'est une macro tout à fait fonctionnelle qui réalise la mise à jour dans la table Commerciaux pour l'enregistrement concerné.

Ouvrir un formulaire en VBA
Nous l'avons déjà démontré à maintes reprises, l'objet DoCmd est quasiment incontournable en VBA Access. Il offre de nombreuses propriétés et méthodes pour manipuler les objets de la base de données. Et précisément, sa méthode OpenForm permet d'organiser l'appel d'un formulaire.
  • Fermer le formulaire f_valid en cliquant sur la croix de sa fenêtre,
  • A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans les propositions, choisir le mode Création,
  • Sur le formulaire en conception, sélectionner la première zone de texte nommée com_id,
  • Activer ensuite l'onglet Evénement de sa feuille de propriétés,
  • Cliquer dans la zone de son événement Sur souris déplacée pour l'activer,
  • Dès lors, cliquer sur le petit bouton situé à l'extrémité droite,
  • Dans la boîte de dialogue qui suit, choisir le Générateur de code et valider par Ok,
De fait, nous basculons dans l'éditeur VBA Access, plus précisément dans les bornes de la procédure événementielle com_id_MouseMove. Son code se déclenchera au survol de la souris de la zone com_id, celle de l'identifiant. C'est sur cette action simple et ergonomique que nous souhaitons en effet proposer l'affichage du formulaire complémentaire, le formulaire f_valid.
  • Dans les bornes de la procédure, ajouter l'instruction VBA suivante :
DoCmd.OpenForm "f_valid"

En paramètre de la méthode OpenForm, nous indiquons naturellement le nom du formulaire à ouvrir.
  • Enregistrer les modifications (CTRL + S) et revenir sur le formulaire en conception (ALT + Tab),
  • L'enregistrer à son tour puis l'exécuter avec la touche F5 du clavier,
  • Avec la barre de navigation en bas à gauche, atteindre par exemple le sixième commercial,
  • Puis, survoler la zone de son identifiant,
Ouvrir un autre formulaire Access au survol de la souris

Le formulaire secondaire apparaît aussitôt en effet. Mais à ce stade et fort naturellement, il ne correspond pas avec le premier. Il ne restitue pas les informations du commercial appelé.

Ouvrir un formulaire sur un enregistrement précis
Pour ouvrir un formulaire sur un emplacement précis, nous devons régler une clause Where dans l'un des paramètres de la méthode OpenForm. Cette clause Where doit établir la jonction entre l'identifiant appelant du formulaire f_com et l'identifiant appelé du formulaire f_valid.
  • Revenir dans l'éditeur VBA Access,
  • Puis, adapter la précédente syntaxe comme suit :
DoCmd.OpenForm "f_valid", , , "[com_id]=" & Me.com_id

Nous ignorons les deux paramètres suivants pour atteindre celui de la clause Where (Where Condition). Nous établissons la correspondance entre l'identifiant à rejoindre ("[com_id]=") et celui en cours de consultation sur le formulaire appelant (& Me.com_id). Me désigne en effet l'objet actif au moment de l'appel. En l'occurrence ici, il s'agit du formulaire f_com.

Ouvrir un autre formulaire Access sur un enregistrement précis

Cette fois et comme vous le constatez, la jonction est établie. Le formulaire appelé restitue bien les informations du formulaire appelant.

Fermeture automatique du formulaire
Toujours pour des raisons d'ergonomie mais aussi d'originalité, nous souhaitons maintenant entreprendre la fermeture de ce formulaire de modification, au clic sur une zone vide de son arrière-plan. C'est toujours l'objet DoCmd qui intervient mais cette fois avec sa méthode Close.
  • Fermer le formulaire f_valid pour revenir sur le formulaire f_com,
  • Dans le volet de navigation, cliquer droit sur le formulaire f_navig,
  • Dans le menu contextuel, choisir le mode Création,
  • Cliquer sur l'entête de la zone Détail pour la sélectionner explicitement,
Sélectionner la zone de détail du formulaire Access en conception

De cette manière, l'entête du formulaire restera indifférent aux actions de la souris entreprises par l'utilisateur.
  • Activer l'onglet Evénement de sa feuille de propriétés,
  • Cliquer sur le petit bouton de son événement Sur souris appuyée,
  • Dans la boîte de dialogue, choisir le Générateur de code et valider par Ok,
Nous revenons ainsi dans l'éditeur VBA Access mais cette fois entre les bornes de la procédure événementielle Détail_MouseDown. Son code VBA se déclenchera au clic de l'utilisateur sur une zone vide du formulaire. Il est question de le fermer pour revenir sur le formulaire principal.
  • Dans les bornes de cette procédure, ajouter l'instruction VBA suivante :
DoCmd.Close acForm, Me.Name

Très simplement, nous exploitons donc la méthode Close de l'objet DoCmd. En premier paramètre, nous lui indiquons la nature de l'objet à fermer, soit un formulaire. En second paramètre, nous renseignons le nom de ce formulaire à fermer, grâce à la propriété Name de l'objet contextuel Me.
  • Enregistrer les modifications et basculer sur le formulaire,
  • L'enregistrer à son tour puis basculer sur le formulaire f_com toujours en exécution,
  • Atteindre par exemple le huitième commercial avec la barre de navigation,
  • Survoler la zone de l'identifiant pour afficher le formulaire f_valid,
Si vous cliquez sur une zone vide du formulaire, il se ferme et l'affichage est rendu au formulaire principal f_com.

Absence de mise à jour du formulaire Access en arrière-plan

Si vous définissez un nouvel objectif, que vous le validez et que vous fermez le formulaire, vous constatez que le montant n'est pas pris en compte sur le formulaire parent. L'affichage est simplement conservé en mémoire malgré la mise à jour de l'information dans la table source. Nous verrons comment actualiser les enregistrements d'un formulaire avec la prochaine astuce.

 
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