Comment tirer des nombres aléatoires dans une requête ?
La fonction Rnd() semble ne pas fonctionner : elle produit
toujours le même nombre.
Pour utiliser ce qui suit, vous avez besoin de savoir taper du code Visual Basic dans
un module Access, compiler du code, et exécuter du code.
Vous devez également savoir comment créer un champ calculé dans une requête.
En fait, la fonction Rnd() sort bien un nombre aléatoire
différent à chaque appel.
La nuance est que, dans une requête, cette fonction n'est appelée qu'une seule
fois, pour des raisons de performance.
Une astuce consiste à appeler une fonction en lui passant une valeur qui change à chaque fois, par exemple un champ de la requête.
Voici par exemple une nouvelle fonction ForceAlea(), à taper dans un module classique :
' -------------------------------------------------- ' FONCTION ALEA POUR REQUETE ' -------------------------------------------------- ' Entrée : intInf <- Borne inférieure ' intSup <- Borne supérieure ' v <- Une valeur quelconque, ou un champ de requête ' Sortie : ForceAlea -> Nombre entier entre intInf et infSup compris ' Function ForceAlea(intInf As Integer, intSup As Integer, v As Variant) As Integer Randomize ForceAlea = Int(Rnd * (intSup - intInf + 1)) + intInf End Function
Voici un exemple d'utilisation de cette fonction dans une requête (la requête est basée sur une table tblEssai, contenant le champ Quantité) :
Deux appels successifs de la requête produisent des résultats différents :
|
|