Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Organiser aléatoirement les données Access
Dans cette
formation Access, nous proposons de montrer comment il est possible de
générer des tris aléatoires sur des données. Comme vous le savez, ces
tris aléatoires procurent de nombreux intérêts. Ils permettent par exemple de définir des
ordres de passage toujours différents se substituant à l'éternel classement alphabétique. Ils permettent de générer des questions
au hasard pour des applications d'évaluation. Ils peuvent conduire à la distribution automatique des salariés sur les différentes lignes de production de l'entreprise. Nous avions démontré ces intérêts au travers de diverses
formations Excel et Access.
Nous souhaitons bâtir un
formulaire, comme celui illustré par la capture ci-dessus de l'application finalisée. Un
clic sur un bouton doit intimer l'ordre aux données de se
réorganiser aléatoirement.
Source et présentation de la problématique
Nous proposons de débuter les travaux depuis une source existante.
Cette petite
base de données n'est constituée que d'une seule table. Il s'agit de la
table tableau_salaries. Elle est présente dans le
volet des objets Access, sur la gauche de la fenêtre.
- Double cliquer sur cette table pour la consulter en mode feuille de données,
Comme vous le constatez, elle recense les employés d'une entreprise dans ses différents champs. Nous l'avions importée depuis une
source Excel dans la formation précédente.
Sur cette source, nous souhaitons donc bâtir le
formulaire capable de réorganiser aléatoirement leur ordre d'apparition, au clic sur un bouton. Dans de prochaines formations, nous verrons comment exploiter ces tris aléatoires.
L'
outil Access permettant de manipuler les données est la
requête. Cette étape intermédiaire doit nous permettre de réorganiser l'information à notre guise, afin de l'exploiter dans la
construction du formulaire.
Tri aléatoire des données de table
Nous devons commencer par bâtir une
requête sélection classique capable de restituer tous les enregistrements de la table source. Ensuite, nous verrons comment il est possible de réorganiser ces informations.
- Cliquer sur l'onglet Créer en haut de la fenêtre Access pour activer son ruban,
- Dans la section Requêtes du ruban, cliquer sur le bouton Création de requête ,
- Dans la boîte de dialogue qui suit, sélectionner la source tableau_salaries,
- Puis, cliquer sur le bouton Ajouter et sur le bouton Fermer,
Nous basculons dans l'
éditeur de requête. Il s'agit d'intégrer tous les champs de la table schématisée sur la grille de requête, située en bas de l'éditeur.
- Dans la table schématisée, sélectionner le premier champ nommé ID,
- Avec la touche Maj (Shift) enfoncée, cliquer sur le dernier nommé Nb Enfants,
Cette astuce permet d'englober tous les champs dans la sélection.
- Glisser l'intégralité de la sélection sur la zone de requête située juste en-dessous, comme l'illustre la capture ci-dessus,
- Réaliser le raccourci clavier CTRL + S pour l'enregistrer,
- Dans la boîte de dialogue qui apparaît, la nommer : tris_salaries,
Désormais, la
requête apparaît dans la liste des objets Access, sur la gauche de la fenêtre. Comme vous le constatez dans l'éditeur de requête, une
zone Tri est disponible pour chacun des champs. Elle permet seulement de définir une organisation croissante ou décroissante sur la colonne désignée. Il ne s'agit donc pas de la solution à mettre en oeuvre.
- Dans le ruban Accueil, cliquer sur le bouton Exécuter,
A ce stade, la vue proposée par la requête est strictement identique à celle de la table source. Elle se contente de sélectionner les données, sans même le moindre tri.
C'est encore une fois la
syntaxe Sql qui va apporter la solution.
- Dans le ruban Accueil, cliquer sur la flèche du bouton Affichage,
- Dans la liste qui apparaît, choisir Mode SQL,
Nous basculons ainsi dans l'
éditeur SQL des
requêtes Access. La syntaxe retranscrite de notre sélection est la suivante :
SELECT tableau_salaries.ID, tableau_salaries.Civilité, tableau_salaries.Nom, tableau_salaries.Prénom, tableau_salaries.[Nb Enfants] FROM tableau_salaries;
Nous nous contentons de sélectionner tous les champs (SELECT), séparés les uns des autres par une virgule. Nous précisons la table source :
FROM tableau_salaries. Le nom de la table (tableau_salaries) est rappelé en préfixe de chaque champ. Ce préfixe n'est pourtant pas nécessaire puisqu'il ne s'agit pas d'une requête multi-table. Il n'y a donc aucune ambiguïté. Nous proposons de le supprimer pour alléger la syntaxe de la
requête SQL :
- Modifier la syntaxe de la requête comme suit :
SELECT ID, Civilité, Nom, Prénom, [Nb Enfants] FROM tableau_salaries;
Nous y voyons déjà plus clair. Vous notez la présence des crochets pour encadrer le champ Nb Enfants, à cause de l'espace dans le nom. Néanmoins, le résultat proposé par la requête reste strictement identique au précédent.
Il s'agit d'organiser un
tri grâce à la
clause ORDER BY. Mais ce tri doit être aléatoire. Nous allons pour ce faire exploiter conjointement la
fonction Sql Rnd. Il s'agit de l'abréviation du terme américain
Random qui signifie littéralement :
aléatoire.
- Compléter la syntaxe de la requête SQL comme suit :
SELECT ID, Civilité, Nom, Prénom, [Nb Enfants] FROM tableau_salaries ORDER BY Rnd(ID);
La
fonction SQL Rnd requiert un champ en paramètre pour réaliser ce
tri aléatoire. Nous lui passons donc le champ le plus logique, celui de la clé primaire : ID.
- Enregistrer les modifications (CTRL + S),
- Puis, cliquer sur le bouton Exécuter du ruban Accueil,
A première vue, le résultat est le même. Mais si vous y regardez à deux fois, l'organisation des données a changé. Il ne s'agit plus de la même énumération que celle de la table source.
D'ailleurs si vous enfoncez la touche F5 pour forcer l'actualisation des données, vous remarquez que l'organisation des enregistrements change complètement. Nous avons réussi à créer la
requête permettant de générer des
tris aléatoires.
Encore faut-il pouvoir l'exploiter depuis un formulaire. Mais avant cela, une remarque intéressante s'impose.
- Dans le ruban Accueil, cliquer sur la flèche du bouton Affichage,
- Dans la liste qui apparaît, choisir Mode création,
Nous sommes de retour dans l'
éditeur de requêtes Access.
Vous remarquez la présence d'un nouveau champ créé par
Access, pour correspondre à la
clause ORDER BY de notre
syntaxe SQL. Et nous découvrons qu'
Access propose la
fonction Aléat. Nous aurions donc pu obtenir exactement le même résultat sans passer par la
syntaxe SQL. Cette
fonction Aléat permet de
générer des nombres aléatoires dans un nouveau champ. Comme un
tri croissant est organisé sur ce dernier, à chaque actualisation, tous les
enregistrements sont
triés au hasard.
Formulaire Access pour trier les données
Nous souhaitons regrouper tous les
enregistrements sur une même vue. La solution consiste à afficher les informations en
mode feuille de données. Ce
formulaire doit être bâti sur la
requête de tri aléatoire. Ainsi, à chaque actualisation, nous pourrons constater la réorganisation globale des données.
- Fermer la requête tris_salaries en l'enregistrant,
- Cliquer sur l'onglet Créer en haut de la fenêtre Access pour activer son ruban,
- Dans la section Formulaires du ruban, cliquer sur le bouton Formulaire vierge,
Un formulaire vide est en effet instantanément créé. Nous devons le paramétrer pour qu'il accueille les données organisées par la
requête tris_salaries.
- Dans le ruban contextuel Création, cliquer sur la flèche du bouton Affichage,
- Dans la liste, choisir Mode création,
- Agrandir la zone du formulaire en cliquant et glissant depuis son angle inférieur droit,
- Dans le ruban Création, cliquer sur la flèche des contrôles pour les visualiser tous,
- Dans la liste, choisir le contrôle Sous-formulaire/Sous-état,
- Puis, tracer un rectangle assez grand au milieu du formulaire pour définir son emplacement,
Un assistant se déclenche immédiatement. En effet, nous devons définir les données qui lui sont liées en désignant sa source. Il s'agit bien entendu de la
requête.
- Cliquer sur le bouton Suivant,
- Sélectionner la requête tris_salaries à l'aide de la liste déroulante,
- Cliquer sur le bouton de la double flèche pour intégrer tous les champs dans la construction,
- Cliquer de nouveau sur le bouton suivant pour atteindre la dernière étape,
- Conserver le nom proposé par défaut et cliquer sur le bouton Terminer,
- De retour sur le formulaire, réaliser le raccourci CTRL + S pour l'enregistrer,
- Dans la boîte de dialogue qui suit, le nommer : tris_salaries,
- Enfoncer la touche F5 du clavier pour l'exécuter,
Comme vous le constatez, les données source de la requête sont effectivement liées et apparaissent dans le sous-formulaire. Naturellement, elle propose une organisation différente de la table d'origine. Si vous enfoncez la
touche F5 du clavier pour actualiser les informations, elles sont de nouveau réorganisées. Elles subissent le
tri aléatoire ordonné par la
fonction Aléat de la
requête. Il convient d'automatiser cet ordre à l'aide d'un
bouton.
- Revenir en mode création du formulaire,
Bien sûr, il conviendrait d'abord de personnaliser le formulaire en organisant ses différents contrôles. La
formation sur la conception des formulaires Access traite ce sujet en détail.
Générer les tris aléatoires sur ordre
Nous proposons d'ajouter un
bouton sur le
formulaire. Ce dernier aura pour mission d'exécuter une
macro. Cette
macro devra se charger de réactualiser les enregistrements. Cette commande aura pour effet d'exécuter un nouveau
tri aléatoire des données.
- Dans le ruban Création, sélectionner le contrôle Bouton,
- Puis, le tracer sur le formulaire,
- Cliquer sur le bouton Annuler de l'assistant qui se déclenche,
L'action sur nous souhaitons paramétrer est en effet plus spécifique que celles qui sont proposées par défaut.
- Modifier l'intitulé du bouton en :Réorganiser,
- Dans le ruban Création, cliquer sur le bouton Feuille de propriétés pour l'afficher,
- Sélectionner le bouton Réorganiser sur le formulaire,
- Puis, activer l'onglet Evénement de sa feuille de propriétés,
- Cliquer sur le petit bouton à trois points en regard de son événement Au clic,
- Dans la boîte de dialogue qui apparaît, choisir Générateur de macro et valider par Ok,
Nous basculons ainsi dans l'
éditeur de macros qui permet d'énumérer les actions à accomplir, au clic sur le bouton donc. Une seule suffit. Elle consiste à réactualiser les données.
- Cliquer sur la flèche de la liste déroulante,
- Dans la liste, choisir l'action AfficherTousEnreg,
- Dans le ruban Création, cliquer alors sur le bouton Enregistrer puis sur le bouton Fermer,
Nous sommes de retour sur le
formulaire. Désormais, un clic sur le
bouton Réorganiser exécute la
macro. Comme cette dernière actualise les données, la
requête detri aléatoire doit se réexécuter. En conséquence les enregistrements doivent être réorganisés aléatoirement.
- Enfoncer la touche F5 du clavier pour exécuter le formulaire,
- Puis, cliquer sur le bouton Réorganiser,
Comme vous le constatez, à chaque clic, toutes les données de la table d'origine sont
triées aléatoirement. Dans de prochaines formations, nous exploiterons ces résultats pour monter des applications dédiées.