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.
L'ouvrir dans Access et cliquer sur le bouton Activer le contenu du bandeau de sécurité,
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.
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.