formateur informatique

Changer la source du sous-formulaire Access au clic

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Changer la source du sous-formulaire Access au clic
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 :


Adapter les données d'un sous-formulaire

Pour des raisons d'ergonomie et d'optimisation, il est intéressant de pouvoir réunir toutes les informations sur un même formulaire. Mais plutôt que de les afficher toutes en même temps, il est plus judicieux de faire apparaître certains détails, seulement sur demande. Ainsi, la vue est plus dégagée et les données sont plus faciles à traiter.

Changer la source de données du sous-formulaire Access en VBA

Sur l'exemple illustré par la capture, nous travaillons sur un formulaire certes déjà épuré. Mais il existe à titre d'exemple pour la conception de la solution. Il permet de naviguer au travers de certains pays de l'Union Européenne. Pour chaque Pays, l'utilisateur peut accéder à trois statistiques différentes, sur les Moeurs, la population et la répartition de cette dernière. Pour cela, il clique sur l'une ou l'autre case d'options, dans le cadre placé sur la droite du formulaire. Et c'est ainsi, sur demande, que ces informations se chargent dans le sous-formulaire et remplacent les précédentes.

Base de données Access à télécharger
Pour aller droit au but, nous suggérons d'axer l'étude sur une base de données hébergeant déjà ces informations et accueillant les formulaires à permuter dans un formulaire parent. Formulaire Access des statistiques par Pays

A ce stade, il permet simplement de faire défiler les noms des pays recensés dans la table nommée Pays. Il est effectivement doté d'un sous-formulaire vide pour l'instant et d'un groupe de cases d'options pour choisir les statistiques à y afficher, bien sûr en corrélation avec le Pays en cours de consultation sur le formulaire parent.

Le volet de navigation, sur la gauche de l'écran, indique que cette base de données est faite de quatre tables, de trois requêtes et de quatre formulaires. Les trois autres tables sont celles des statistiques par Pays. Elles sont toutes reliées à la table parent Pays. Vous pouvez le constater en cliquant sur le bouton Relations dans le ruban Outils de base de données.

Relations entre les tables de la base de données Access

Les trois requêtes sont des requêtes de correspondance.

Requête filtrante formulaire table Access

Elles filtrent les informations de chaque table sur laquelle elles sont respectivement construites, en fonction du Pays en cours de consultation sur le formulaire.

Les trois formulaires FMoeurs, FPop et FRepart sont construits sur ces trois requêtes respectives. Ils ne sont donc pas destinés à être exécutés seuls. Ils doivent livrer les statistiques contextuelles, selon le Pays en cours de consultation et en fonction de la case d'option cliquée par l'utilisateur. Ils doivent donc servir de sources interchangeables pour le sous-formulaire.

Au clic sur une case d'option
C'est donc au clic sur une case d'options qu'un code VBA doit adapter la source de données du sous-formulaire. Ce groupe de cases est nommé choix.
  • Revenir sur le formulaire FPays,
  • 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, cliquer sur le cadre du groupe d'options,
  • Activer alors l'onglet Evénement de sa feuille de propriétés,
  • Cliquer ensuite sur le petit bouton associé à son événement Au clic,
  • Dans la boîte de dialogue, choisir le Générateur de code et valider par le bouton Ok,
De fait, nous basculons dans l'éditeur VBA Access, entre les bornes de la procédure événementielle Choix_Click. Son code se déclenchera à chaque clic sur une case d'option hébergée par ce groupe.
  • Dans les bornes de cette procédure, ajouter la déclaration et l'affectation suivantes :
...
Dim i As Byte

i = Choix.Value
...


Nous la déclarons comme un entier court (Byte) pour pouvoir prélever le numéro de la case cliquée : i = Choix.Value. C'est en fonction de cette valeur que nous pourrons définir la source de données du sous-formulaire.

Selon la case cliquée
Trois cas sont donc possibles. Plutôt que de construire une instruction conditionnelle complexe, nous suggérons de dégainer un Select Case pour énumérer ces cas et agir en conséquence.

...
Select Case i
Case 1

Case 2

Case 3

End Select
...


Adapter la source du sous-formulaire
Si la première case est cochée, c'est le formulaire FMoeurs qui doit servir de source au sous-formulaire. Puis, ce sont les formulaires FPop et FRepart qui doivent être utilisés dans les deux cas respectifs suivants. Nous devons donc implémenter chaque branche du Select Case en conséquence.
  • Enrichir le Select Case comme suit :
...
Select Case i
Case 1
sf.SourceObject = "FMoeurs"
Titre.Caption = "Moeurs :"

Case 2
sf.SourceObject = "FPop"
Titre.Caption = "Population :"

Case 3
sf.SourceObject = "FRepart"
Titre.Caption = "Répartition :"

End Select
...


Sf est le nom du sous-formulaire. C'est la propriété SourceObject d'un objet de type Formulaire qui permet de régler sa source de données. Ici selon la case cochée, nous la calibrons sur le formulaire correspondant. Souvenez-vous, grâce aux requêtes dynamiques, leurs données s'adaptent au Pays en cours de consultation depuis le formulaire parent. Enfin, nous ajustons en conséquence le titre de la zone rectangulaire placée juste au-dessus du sous-formulaire. Cette zone se nomme Titre. Comme il s'agit d'une étiquette, c'est sa propriété Caption qui permet d'influer sur son contenu.

Adapter le contenu du sous-formulaire en fonction de la case cochée

Maintenant, si vous exécutez le formulaire, que vous vous déplacez sur un pays et que vous cliquez sur l'une ou l'autre case à cocher, vous constatez que les données contextuelles sont parfaitement chargées dans le sous-formulaire.

Données au chargement
Un petit défaut subsiste néanmoins. Au premier chargement, le sous-formulaire est vide. Nous proposons de le caler sur l'une des sources de données.
  • Revenir sur le formulaire en conception,
S'il n'est pas explicitement désigné, vous devez cliquer sur le carré grisé, en haut à gauche du formulaire, plus précisément à l'intersection des règles.

Sélectionner tout le formulaire Access en mode conception
  • Activer l'onglet Evénement de sa feuille de propriétés,
  • Cliquer sur le petit bouton associé à son événement Sur activation,
  • Dans la boîte de dialogue, choisir le Générateur de code et valider par Ok,
C'est ainsi que nous sommes de retour dans l'éditeur VBA Access mais cette fois, entre les bornes de la procédure événementielle Form_Current. Son code se déclenchera à chaque activation du formulaire comme au chargement ou au changement de Pays à l'occasion de la navigation au travers des enregistrements.
  • Dans les bornes de cette procédure, ajouter les instructions VBA suivantes :
Private Sub Form_Current()
sf.SourceObject = "FPop"
Titre.Caption = "Population : :"
Choix.Value = 2

End Sub


Arbitrairement, nous choisissons de caler la vue sur les statistiques de la population pour le Pays en cours de consultation. Et en effet, si vous fermez le formulaire et que vous le rouvrez, vous avez le plaisir de constater, au premier chargement, que le sous-formulaire n'est désormais plus vide.

 
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