formateur informatique

Tris aléatoires sur des données de tables Access

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Tris aléatoires sur des données de tables Access
Livres à télécharger


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

Pour l'intégrer sur votre site internet ou blog, vous pouvez l'embarquer :

Sujets et formations similaires :


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.

Formulaire Access de tri aléatoire des données au clic sur un bouton



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.

Table des données Access à trier dans un ordre aléatoire par requête

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,
Sélectionner tous les champs de table Access pour construire une requête sélection

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,
Mode feuille de données de requête sélection sur table Access



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.

Organisation aléatoire des données grâce à requête Access Sql avec clause Order By et fonction Rnd

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.

Fonction Aleat dans champ de requête Access pour trier aléatoirement les données de tables

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,
Ajouter un sous-formulaire pour accueillir les données triées aléatoirement par la requête Access
  • 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,
Intégrer tous les champs de la requête Access grâce assistant sous-formulaire
  • 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,
Données organisées aléatoirement dans sous-formulaire Access construit sur requête Sql Rnd

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,
Réglages et organisation des données triées sur le sous-formulaire Access

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,
Macro Access pour ordonner réorganisation aléatoire des données au clic sur un bouton du formulaire
  • 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,
Tri aléatoire des données du sous-formulaire Access au clic sur le bouton de macro

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.

 
Sur Facebook
Sur G+
Sur Youtube
Les livres
Contact
Mentions légales



Partager la formation
Partager sur Facebook
Partager sur Google+
Partager sur Twitter
Partager sur LinkedIn