Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
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.
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 .
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 .
Les trois requêtes sont des requêtes de correspondance.
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.
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.
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.