formateur informatique

Trier aléatoirement les tableaux Excel sans code VBA

Accueil  >  Bureautique  >  Excel  >  Excel Avancé  >  Trier aléatoirement les tableaux Excel sans code VBA
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 :


Trier les tableaux Excel aléatoirement

Dans cette formation Excel, nous proposons de montrer comment il est possible de trier aléatoirement les tableaux, sans l'intervention du code VBA. Pour ce faire, nous choisissons d'exploiter les travaux de la formation précédente, dans laquelle nous avions réussi à générer des nombres aléatoires uniques, sur une plage de valeurs définie. Nous avions ainsi pu attribuer un numéro unique à chacun des salariés ou candidats recensés dans un petit tableau de données. Ce sont des formules d'extraction qui avaient permis d'importer chacun de ces nombres selon un calcul intermédiaire de repérage. Le plus dur est fait. Il suffit de trier sur ces valeurs aléatoires. Mais elles doivent être détachées des formules car tout calcul est dynamique dans Excel et donc, toute action redistribuerait ces valeurs.

Valeurs numériques générées au hasard pour trier aléatoirement les tableaux Excel



La capture ci-dessus illustre le résultat de l'application finalisée. Des ordres de passage aléatoires sont calculés dans l'avant dernière colonne. Ces données sont restituées dans la dernière colonne, détachées de leurs formules. Un tri croissant est alors enclenché au clic sur un bouton.

Sources et présentation de la problématique
Pour concentrer l'étude sur les manipulations essentielles, nous proposons de récupérer les travaux précédents. Ce classeur est constitué de deux feuilles. Seule la première nous intéresse ici. Il s'agit de la feuille nommée Concaténer.
  • Cliquer sur le bouton Générer situé en haut de la feuille entre les colonnes H et I,
Un traitement s'enclenche comme vous le constatez. Il s'agit des formules que nous avons bâties lors de la formation précédente. Un clic sur le bouton Générer déclenche un événement qui impose le recalcul de toutes les formules.

Une grande quantité de nombres aléatoires, compris entre 1 et 30, est produite en colonne H, selon la formule suivante :

=ALEA.ENTRE.BORNES(1; 30)

La macro associée au bouton Générer les restitue dans la colonne I, dissociés de leurs formules, par collage spécial. Ces copies ne sont plus modifiées à chaque recalcul. Seul le bouton Générer les actualise. Un calcul de repérage, selon un numéro incrémenté, est effectué en colonne J, selon la formule suivante :

=SI(NB.SI($I$4:I4;I5)>0; ''; MAX($J$4:J4)+1)

Il consiste à identifier chaque nombre aléatoire qui n'a pas encore été proposé. Il permet donc d'identifier toutes les valeurs aléatoires uniques à exploiter dans le tableau source des salariés.

Et précisément en colonne E, ces numéros sont extraits, dans l'ordre où ils ont été générés, grâce aux fonctions de recherche, selon la formule suivante :

=SIERREUR(INDEX(H:J; EQUIV(LIGNE(H1); J:J;0);2); '')

Cette recherche est réalisée sur ces numéros incrémentés de repérage. Lorsqu'ils sont trouvés, c'est le nombre aléatoire correspondant qui est récupéré.



Copier les valeurs de formules par Macro
Le tri doit être réalisé sur ordre et plus précisément, au clic sur le bouton Trier. Il est positionné à droite du bouton Générer sur la feuille. C'est donc une macro associée à ce bouton qui doit réaliser les actions. Nous pourrions très bien ordonner ce tri sur la colonne Ordre de passage. Il fonctionnerait certes. Mais comme un calcul d'extraction des numéros existe, le salarié remonté en tout début de tableau, se verrait affecté d'un numéro réajusté par le calcul. Et ce numéro ne correspondrait plus à sa position.

Nous proposons donc, comme nous l'avons fait pour les nombres aléatoires, de réaliser une copie spéciale de ces valeurs extraites, en colonne F. Ces numéros ne seront pas réajustés avec le tri. Ils resteront cohérents. Il s'agit donc d'enregistrer une macro qui en profitera pour organiser le tri croissant dans la foulée. Nous avons besoin du ruban Développeur. La formation pour débuter la programmation en VBA Excel rappelle entre autres, comment l'afficher.
  • Cliquer sur l'onglet Développeur en haut de la fenêtre Excel pour activer son ruban,
  • Dans la section Code, à gauche du ruban, cliquer sur le bouton Enregistrer une macro,
  • Dans la boîte de dialogue qui suit, la nommer Trier,
Enregistrer une macro Excel pour trier un tableau aléatoirement
  • Cliquer sur le bouton Ok pour démarrer l'enregistrement,
  • Sélectionner tous les nombres aléatoires, soit la plage de cellules E5:E34,
  • La copier à l'aide du raccourci CTRL + C par exemple,
  • Sélectionner la première cellule de la plage de destination, soit F5,
  • Cliquer sur l'onglet Accueil en haut de la fenêtre Excel pour activer son ruban,
  • Tout à fait à gauche du ruban, dans la section Presse-papiers, cliquer sur la flèche du bouton Coller,
  • Dans la liste, cliquer sur le bouton Mise en forme des valeurs et de la source,
Copier les valeurs des cellules sans les formules pour les détacher des calculs

Nous réalisons ainsi une copie détachée des nombres aléatoires, sans leurs formules.
  • Sélectionner l'une des cellules du tableau, par exemple C5,
  • Cliquer sur l'onglet Données en haut de la fenêtre Excel pour activer son ruban,
  • Dans la section Trier et filtrer, cliquer sur le bouton Trier,
  • Dans la boîte de dialogue qui suit, définir le tri sur la colonne Ordre pour tri,
Trier un tableau Excel sur des valeurs numériques aléatoires

Par défaut, les données seront organisées du plus petit nombre au plus grand.
  • Valider ce réglage en cliquant sur le bouton Ok de la boîte de dialogue,
Vous remarquez que les salariés se sont effectivement classés en ordre croissant, selon le numéro aléatoire qui leur avait été attribué.
  • Cliquer sur l'onglet Développeur en haut de la fenêtre Excel pour activer son ruban,
  • Dans la section Code, à gauche dans le ruban, cliquer sur le bouton Arrêter l'enregistrement,
La macro existe désormais, mais seulement à l'état de code VBA à ce stade. Elle permet de réaliser un tri croissant du tableau sur les ordres de passage restitués. Nous devons la lier au bouton Trier pour la matérialiser.
  • Cliquer avec le bouton droit de la souris sur le bouton Trier,
  • Dans le menu contextuel, choisir Affecter une macro,
Lier un bouton de feuille Excel à une macro de tri aléatoire sur les tableaux

  • Dans la liste de la boîte de dialogue qui suit, sélectionner la macro Trier,
  • Puis, cliquer sur Ok pour établir la liaison,
  • Sélectionner une cellule de la feuille pour désactiver la sélection du bouton,
  • Puis, cliquer sur le bouton Trier,
Comme les salariés ont été réorganisés par le tri croissant précédent, le calcul dans la colonne Ordre de passage a réattribué un nouveau nombre aléatoire à chacun. Comme la macro Trier réalise un tri croissant sur ces valeurs redistribuées et restituées dans la colonne F, le tri change. Ainsi, à chaque clic, un ordre de passage aléatoire est proposé à chaque employé.

Mais, comme vous l'avez sans doute remarqué, les nombres aléatoires en colonne H n'ont pas été regénérés. Dans la procédure, il conviendrait d'abord de cliquer sur le bouton Générer et ensuite sur le bouton Trier. Ainsi, les cartes seraient totalement rebattues.

Voilà donc comment réaliser un tri aléatoire sur des tableaux Excel, sans l'intervention du code Visual Basic. L'essentiel du travail réside dans les formules que nous avions bâties lors de la formation précédente. Elles avaient permis d'extraire la suite des valeurs aléatoires uniques. Il ne restait plus qu'à les utiliser pour définir l'ordre de tri sur ces nombres.

 
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