Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment trier une table de manière aléatoire ?

16 réponses
Avatar
Luc Voeltzel
Bonjour à tous,

Quelqu'un sait-il comment trier une table de manière aléatoire ?

L'idée est de construire une base de donnée dont les éléments puissent être
tirés de manière aléatoire et affichés sous forme de formulaire. Un lecture
répétée de ces fiches tirées de façon aléatoire faciliterait ainsi
l'apprentissage de leur contenu.

NB : Question d'un débutant en access, mais qui connait un peu VBA appliqué
à Excel.

10 réponses

1 2
Avatar
saroule
bonjour
dans ta table tu mets un champ numero automatique
dans la requete tu passe en criteres la formule suivante :
Ent(Aléat(10)*100)
A ameliorer suivant tes besoins, chez moi çà marche

"Luc Voeltzel" a écrit dans le message de news:

Bonjour à tous,

Quelqu'un sait-il comment trier une table de manière aléatoire ?

L'idée est de construire une base de donnée dont les éléments puissent
être
tirés de manière aléatoire et affichés sous forme de formulaire. Un
lecture
répétée de ces fiches tirées de façon aléatoire faciliterait ainsi
l'apprentissage de leur contenu.

NB : Question d'un débutant en access, mais qui connait un peu VBA
appliqué
à Excel.




Avatar
Luc Voeltzel
Bonjour,

Merci pour ta réponse. Elle répond en partie à ma question. Avec ta formule
on effectue effectivement un tirage aléatoire.
Selon l'aide d'access, en VBA la formule de tirage aléatoire sur une plage
donnée est d'ailleurs analogue à la tienne :
Int((upperbound - lowerbound + 1) * Rnd + lowerbound).

Mais comment trier la table de manière aléatoire ?

That's the question !




"saroule" a écrit dans le message de
news:
bonjour
dans ta table tu mets un champ numero automatique
dans la requete tu passe en criteres la formule suivante :
Ent(Aléat(10)*100)
A ameliorer suivant tes besoins, chez moi çà marche

"Luc Voeltzel" a écrit dans le message de news:

Bonjour à tous,

Quelqu'un sait-il comment trier une table de manière aléatoire ?

L'idée est de construire une base de donnée dont les éléments puissent
être
tirés de manière aléatoire et affichés sous forme de formulaire. Un
lecture
répétée de ces fiches tirées de façon aléatoire faciliterait ainsi
l'apprentissage de leur contenu.

NB : Question d'un débutant en access, mais qui connait un peu VBA
appliqué
à Excel.








Avatar
ze Titi
Bonjour Luc Voeltzel

un tri aléatoire, ça ne signifie pas grand chose... Un tri, par
définition, obéit à une logique. Et une logique rendue aléatoire, c'est
un peu contradictoire, pas vrai ? ;-)

Par ailleurs, une table est toujours triée selon l'ordre d'arrivée des
enregistrements. L'impression de tri est donnée par l'affichage qu'on
lui donne, c'est tout. L'idée de Saroule est donc tout ce que tu
pourras obtenir d'aléatoire sur cette dite table.

Pour obtenir un formulaire avec des enregistrements obtenus
aléatoirement, construis une procédure VBA qui va elle-même construire
une table que tu afficheras dans ton formulaire.
Cette procédure utilisera la formule donnée par Saroule autant de fois
que tu veux d'enregistrements. Une fois cette table remplie, tu ouvres
ton formulaire basé sur la table en question et le tour est joué !



Dans ton message <#iOR$ du lundi
Bonjour,

Merci pour ta réponse. Elle répond en partie à ma question. Avec ta formule
on effectue effectivement un tirage aléatoire.
Selon l'aide d'access, en VBA la formule de tirage aléatoire sur une plage
donnée est d'ailleurs analogue à la tienne :
Int((upperbound - lowerbound + 1) * Rnd + lowerbound).

Mais comment trier la table de manière aléatoire ?

That's the question !




"saroule" a écrit dans le message de
news:
bonjour
dans ta table tu mets un champ numero automatique
dans la requete tu passe en criteres la formule suivante :
Ent(Aléat(10)*100)
A ameliorer suivant tes besoins, chez moi çà marche

"Luc Voeltzel" a écrit dans le message de news:

Bonjour à tous,

Quelqu'un sait-il comment trier une table de manière aléatoire ?

L'idée est de construire une base de donnée dont les éléments puissent
être
tirés de manière aléatoire et affichés sous forme de formulaire. Un
lecture
répétée de ces fiches tirées de façon aléatoire faciliterait ainsi
l'apprentissage de leur contenu.

NB : Question d'un débutant en access, mais qui connait un peu VBA
appliqué
à Excel.




--
Voilou !
Bon code
Cordialement,

Ze Titi



Avatar
Luc Voeltzel
Oui tout à fait d'accord avec ce que tu as écris, et tu résumes tout à fait
mon problème. Je vais donc essayer de construire une table en VBA par
l'intermédiaire d'une boucle qui effectue un tirage aléatoire.

Seulement voilà, je ne sais pas comment construire une table en VBA, mais à
force de recherche je devrais trouver...

Merci à tous, pour vos réponses, :-)



"ze Titi" a écrit dans le message de
news:
Bonjour Luc Voeltzel

un tri aléatoire, ça ne signifie pas grand chose... Un tri, par
définition, obéit à une logique. Et une logique rendue aléatoire, c'est
un peu contradictoire, pas vrai ? ;-)

Par ailleurs, une table est toujours triée selon l'ordre d'arrivée des
enregistrements. L'impression de tri est donnée par l'affichage qu'on
lui donne, c'est tout. L'idée de Saroule est donc tout ce que tu
pourras obtenir d'aléatoire sur cette dite table.

Pour obtenir un formulaire avec des enregistrements obtenus
aléatoirement, construis une procédure VBA qui va elle-même construire
une table que tu afficheras dans ton formulaire.
Cette procédure utilisera la formule donnée par Saroule autant de fois
que tu veux d'enregistrements. Une fois cette table remplie, tu ouvres
ton formulaire basé sur la table en question et le tour est joué !



Dans ton message <#iOR$ du lundi
Bonjour,

Merci pour ta réponse. Elle répond en partie à ma question. Avec ta
formule


on effectue effectivement un tirage aléatoire.
Selon l'aide d'access, en VBA la formule de tirage aléatoire sur une
plage


donnée est d'ailleurs analogue à la tienne :
Int((upperbound - lowerbound + 1) * Rnd + lowerbound).

Mais comment trier la table de manière aléatoire ?

That's the question !




"saroule" a écrit dans le message de
news:
bonjour
dans ta table tu mets un champ numero automatique
dans la requete tu passe en criteres la formule suivante :
Ent(Aléat(10)*100)
A ameliorer suivant tes besoins, chez moi çà marche

"Luc Voeltzel" a écrit dans le message de news:

Bonjour à tous,

Quelqu'un sait-il comment trier une table de manière aléatoire ?

L'idée est de construire une base de donnée dont les éléments puissent
être
tirés de manière aléatoire et affichés sous forme de formulaire. Un
lecture
répétée de ces fiches tirées de façon aléatoire faciliterait ainsi
l'apprentissage de leur contenu.

NB : Question d'un débutant en access, mais qui connait un peu VBA
appliqué
à Excel.




--
Voilou !
Bon code
Cordialement,

Ze Titi







Avatar
ze Titi
Bonjour Luc Voeltzel

tu peux construire ta table en mode création. Tout ce qu'aura à faire
ta procédure VBA, c'est de vider la table avec

docmd.RunSQL "DELETE * FROM taTable"

et de la remplir...



Dans ton message du lundi
Oui tout à fait d'accord avec ce que tu as écris, et tu résumes tout à fait
mon problème. Je vais donc essayer de construire une table en VBA par
l'intermédiaire d'une boucle qui effectue un tirage aléatoire.

Seulement voilà, je ne sais pas comment construire une table en VBA, mais à
force de recherche je devrais trouver...

Merci à tous, pour vos réponses, :-)



"ze Titi" a écrit dans le message de
news:
Bonjour Luc Voeltzel

un tri aléatoire, ça ne signifie pas grand chose... Un tri, par
définition, obéit à une logique. Et une logique rendue aléatoire, c'est
un peu contradictoire, pas vrai ? ;-)

Par ailleurs, une table est toujours triée selon l'ordre d'arrivée des
enregistrements. L'impression de tri est donnée par l'affichage qu'on
lui donne, c'est tout. L'idée de Saroule est donc tout ce que tu
pourras obtenir d'aléatoire sur cette dite table.

Pour obtenir un formulaire avec des enregistrements obtenus
aléatoirement, construis une procédure VBA qui va elle-même construire
une table que tu afficheras dans ton formulaire.
Cette procédure utilisera la formule donnée par Saroule autant de fois
que tu veux d'enregistrements. Une fois cette table remplie, tu ouvres
ton formulaire basé sur la table en question et le tour est joué !



Dans ton message <#iOR$ du lundi
Bonjour,

Merci pour ta réponse. Elle répond en partie à ma question. Avec ta formule
on effectue effectivement un tirage aléatoire.
Selon l'aide d'access, en VBA la formule de tirage aléatoire sur une plage
donnée est d'ailleurs analogue à la tienne :
Int((upperbound - lowerbound + 1) * Rnd + lowerbound).

Mais comment trier la table de manière aléatoire ?

That's the question !




"saroule" a écrit dans le message de
news:
bonjour
dans ta table tu mets un champ numero automatique
dans la requete tu passe en criteres la formule suivante :
Ent(Aléat(10)*100)
A ameliorer suivant tes besoins, chez moi çà marche

"Luc Voeltzel" a écrit dans le message de news:

Bonjour à tous,

Quelqu'un sait-il comment trier une table de manière aléatoire ?

L'idée est de construire une base de donnée dont les éléments puissent
être
tirés de manière aléatoire et affichés sous forme de formulaire. Un
lecture
répétée de ces fiches tirées de façon aléatoire faciliterait ainsi
l'apprentissage de leur contenu.

NB : Question d'un débutant en access, mais qui connait un peu VBA
appliqué
à Excel.




--
Voilou !
Bon code
Cordialement,

Ze Titi



--
Voilou !
Bon code
Cordialement,

Ze Titi





Avatar
Luc Voeltzel
Merci ze Titi,

Je vais essayer, et donnerai suite pour ce qui est des résultats ce soir (la
réussite n'est pas garantie car je n'ai encore jamais fait de VBA sur access
!)
:-)

Luc

"ze Titi" a écrit dans le message de
news:
Bonjour Luc Voeltzel

tu peux construire ta table en mode création. Tout ce qu'aura à faire
ta procédure VBA, c'est de vider la table avec

docmd.RunSQL "DELETE * FROM taTable"

et de la remplir...



Dans ton message du lundi
Oui tout à fait d'accord avec ce que tu as écris, et tu résumes tout à
fait


mon problème. Je vais donc essayer de construire une table en VBA par
l'intermédiaire d'une boucle qui effectue un tirage aléatoire.

Seulement voilà, je ne sais pas comment construire une table en VBA,
mais à


force de recherche je devrais trouver...

Merci à tous, pour vos réponses, :-)



"ze Titi" a écrit dans le message de
news:
Bonjour Luc Voeltzel

un tri aléatoire, ça ne signifie pas grand chose... Un tri, par
définition, obéit à une logique. Et une logique rendue aléatoire, c'est
un peu contradictoire, pas vrai ? ;-)

Par ailleurs, une table est toujours triée selon l'ordre d'arrivée des
enregistrements. L'impression de tri est donnée par l'affichage qu'on
lui donne, c'est tout. L'idée de Saroule est donc tout ce que tu
pourras obtenir d'aléatoire sur cette dite table.

Pour obtenir un formulaire avec des enregistrements obtenus
aléatoirement, construis une procédure VBA qui va elle-même construire
une table que tu afficheras dans ton formulaire.
Cette procédure utilisera la formule donnée par Saroule autant de fois
que tu veux d'enregistrements. Une fois cette table remplie, tu ouvres
ton formulaire basé sur la table en question et le tour est joué !



Dans ton message <#iOR$ du lundi
Bonjour,

Merci pour ta réponse. Elle répond en partie à ma question. Avec ta
formule




on effectue effectivement un tirage aléatoire.
Selon l'aide d'access, en VBA la formule de tirage aléatoire sur une
plage




donnée est d'ailleurs analogue à la tienne :
Int((upperbound - lowerbound + 1) * Rnd + lowerbound).

Mais comment trier la table de manière aléatoire ?

That's the question !




"saroule" a écrit dans le message de
news:
bonjour
dans ta table tu mets un champ numero automatique
dans la requete tu passe en criteres la formule suivante :
Ent(Aléat(10)*100)
A ameliorer suivant tes besoins, chez moi çà marche

"Luc Voeltzel" a écrit dans le message de news:

Bonjour à tous,

Quelqu'un sait-il comment trier une table de manière aléatoire ?

L'idée est de construire une base de donnée dont les éléments
puissent






être
tirés de manière aléatoire et affichés sous forme de formulaire. Un
lecture
répétée de ces fiches tirées de façon aléatoire faciliterait ainsi
l'apprentissage de leur contenu.

NB : Question d'un débutant en access, mais qui connait un peu VBA
appliqué
à Excel.




--
Voilou !
Bon code
Cordialement,

Ze Titi



--
Voilou !
Bon code
Cordialement,

Ze Titi









Avatar
Luc Voeltzel
Je n'y arrive pas.

L'idée est d'effacer ma table :
DoCmd.RunSQL "DELETE * FROM Matable" CA MARCHE

mais pour ce qui est de la remplir, c'est une autre affaire. Je ne connais
rien à SQL.

Faut-il utliser une boucle du genre ?

For i = min To max
rst(i) = Int((max - min + 1) * Rnd + min)
Next i

Peut-être mais je n'arrive même pas jusque là, étant donnés mes lacunes en
programmation access.


Est ce que quelqu'un y arrive ?


Pour information, le code que j'ai essayé est ci-dessous, (ne rigolez pas
trop SVP, je suis débutant) :

Public Sub Remplit_table()
Dim i As Integer 'compteur
Dim min As Integer 'limite basse du tirage aléatoire
Dim max As Integer 'limite haute du tirage

Dim matable As TableDef 'Table qui doit être reconstruite de manière
aléatoire
Dim rst As Recordset
Dim chSQL As String 'variable commande SQL

Set matable = CurrentDb.TableDefs("Table1") 'Table1 est la table source des
données

chSQL = "SELECT * FROM Orders" 'commande de sélection des données

' Ouvre un objet Recordset de type table.
Set rst = matable.OpenRecordset(chSQL) 'PLANTE
max = rst.RecordCount
min = 1

' faire pointer rst sur matable cible

'Initialisation
Randomize

'efface le contenu de ma table
DoCmd.RunSQL "DELETE * FROM Matable"


For i = min To max
rst(i) = Int((max - min + 1) * Rnd + min)
Next i


'Ferme les objets ouverts
rst.Close
Set matable = Nothing

End Sub


"Luc Voeltzel" a écrit dans le message de
news:%
Merci ze Titi,

Je vais essayer, et donnerai suite pour ce qui est des résultats ce soir
(la

réussite n'est pas garantie car je n'ai encore jamais fait de VBA sur
access

!)
:-)

Luc


Avatar
ze Titi
Bonjour Luc Voeltzel

donne nous la structure de ta table Table1 et de ta table Orders.


Dans ton message du lundi
Je n'y arrive pas.

L'idée est d'effacer ma table :
DoCmd.RunSQL "DELETE * FROM Matable" CA MARCHE

mais pour ce qui est de la remplir, c'est une autre affaire. Je ne connais
rien à SQL.

Faut-il utliser une boucle du genre ?

For i = min To max
rst(i) = Int((max - min + 1) * Rnd + min)
Next i

Peut-être mais je n'arrive même pas jusque là, étant donnés mes lacunes en
programmation access.


Est ce que quelqu'un y arrive ?


Pour information, le code que j'ai essayé est ci-dessous, (ne rigolez pas
trop SVP, je suis débutant) :

Public Sub Remplit_table()
Dim i As Integer 'compteur
Dim min As Integer 'limite basse du tirage aléatoire
Dim max As Integer 'limite haute du tirage

Dim matable As TableDef 'Table qui doit être reconstruite de manière
aléatoire
Dim rst As Recordset
Dim chSQL As String 'variable commande SQL

Set matable = CurrentDb.TableDefs("Table1") 'Table1 est la table source des
données

chSQL = "SELECT * FROM Orders" 'commande de sélection des données

' Ouvre un objet Recordset de type table.
Set rst = matable.OpenRecordset(chSQL) 'PLANTE
max = rst.RecordCount
min = 1

' faire pointer rst sur matable cible

'Initialisation
Randomize

'efface le contenu de ma table
DoCmd.RunSQL "DELETE * FROM Matable"


For i = min To max
rst(i) = Int((max - min + 1) * Rnd + min)
Next i


'Ferme les objets ouverts
rst.Close
Set matable = Nothing

End Sub


"Luc Voeltzel" a écrit dans le message de
news:%
Merci ze Titi,

Je vais essayer, et donnerai suite pour ce qui est des résultats ce soir (la
réussite n'est pas garantie car je n'ai encore jamais fait de VBA sur access
!)
:-)

Luc



--
Voilou !
Bon code
Cordialement,

Ze Titi


Avatar
Luc Voeltzel
Oups, il n'y a pas de table Orders, seulement une table 1 qui sert de
données sources. La mention Orders dans le code VBA concernait seulement un
essai de tri.(pas adpté)

Les champs de la table 1 sont :
clef : NuméroAuto (clef primaire)
catégorie : Texte
phrase1: Texte
type : texte
commentaire1 : Mémo
antonyme : texte
source : Numérique

Vous l'avez peut-être compris, il s'agit d'un répertoire pour apprendre les
langues.

maTable est la table cible qui doit reprendre les enregistrement de la table
1 selon un tirage aléatoire.

Si vous arrivez à faire quelque chose avec ça.... ):-(

Merci pour toute aide,

Luc



"ze Titi" a écrit dans le message de
news:
Bonjour Luc Voeltzel

donne nous la structure de ta table Table1 et de ta table Orders.


Dans ton message du lundi
Je n'y arrive pas.

L'idée est d'effacer ma table :
DoCmd.RunSQL "DELETE * FROM Matable" CA MARCHE

mais pour ce qui est de la remplir, c'est une autre affaire. Je ne
connais


rien à SQL.

Faut-il utliser une boucle du genre ?

For i = min To max
rst(i) = Int((max - min + 1) * Rnd + min)
Next i

Peut-être mais je n'arrive même pas jusque là, étant donnés mes lacunes
en


programmation access.


Est ce que quelqu'un y arrive ?


Pour information, le code que j'ai essayé est ci-dessous, (ne rigolez
pas


trop SVP, je suis débutant) :

Public Sub Remplit_table()
Dim i As Integer 'compteur
Dim min As Integer 'limite basse du tirage aléatoire
Dim max As Integer 'limite haute du tirage

Dim matable As TableDef 'Table qui doit être reconstruite de manière
aléatoire
Dim rst As Recordset
Dim chSQL As String 'variable commande SQL

Set matable = CurrentDb.TableDefs("Table1") 'Table1 est la table source
des


données

chSQL = "SELECT * FROM Orders" 'commande de sélection des données

' Ouvre un objet Recordset de type table.
Set rst = matable.OpenRecordset(chSQL) 'PLANTE
max = rst.RecordCount
min = 1

' faire pointer rst sur matable cible

'Initialisation
Randomize

'efface le contenu de ma table
DoCmd.RunSQL "DELETE * FROM Matable"


For i = min To max
rst(i) = Int((max - min + 1) * Rnd + min)
Next i


'Ferme les objets ouverts
rst.Close
Set matable = Nothing

End Sub


"Luc Voeltzel" a écrit dans le message de
news:%
Merci ze Titi,

Je vais essayer, et donnerai suite pour ce qui est des résultats ce
soir (la



réussite n'est pas garantie car je n'ai encore jamais fait de VBA sur
access



!)
:-)

Luc



--
Voilou !
Bon code
Cordialement,

Ze Titi






Avatar
ze Titi
Bonjour Luc Voeltzel

Vite fait, à tester et à adapter si nécessaire...J'ai supposé que les
champs de matable étaient les mêmes que table1... Si ça n'est pas le
cas, il faut changer les noms de champs après chaque ! dans la boucle.

Public Sub Remplit_table()
Dim i As Integer 'compteur
Dim min As Long 'limite basse du tirage aléatoire
Dim max As Long 'limite haute du tirage

Dim matable As Recordset
Dim aux as long

Set matable = CurrentDb.OpenRecordset("matable")

max = DMax("clef","Table1")
min = 1

Randomize

'efface le contenu de ma table
DoCmd.RunSQL "DELETE * FROM matable"

For i = min To max
matable.AddNew
aux=Int((max - min + 1) * Rnd + min)
matable!clef=aux
matable!catégorießirst("catégorie","table1","clef=" & aux)
matable!phrase1ßirst("phrase1","table1","clef=" & aux)
matable!typeßirst("type","table1","clef=" & aux)
matable!commentaire1ßirst("commentaire1","table1","clef=" & aux)
matable!antonymeßirst("antonyme","table1","clef=" & aux)
matable!sourceßirst("source","table1","clef=" & aux)
matable.Update
Next i
matable.close
Set matable = Nothing

End Sub

Dans ton message du lundi
Oups, il n'y a pas de table Orders, seulement une table 1 qui sert de
données sources. La mention Orders dans le code VBA concernait seulement un
essai de tri.(pas adpté)

Les champs de la table 1 sont :
clef : NuméroAuto (clef primaire)
catégorie : Texte
phrase1: Texte
type : texte
commentaire1 : Mémo
antonyme : texte
source : Numérique

Vous l'avez peut-être compris, il s'agit d'un répertoire pour apprendre les
langues.

maTable est la table cible qui doit reprendre les enregistrement de la table
1 selon un tirage aléatoire.

Si vous arrivez à faire quelque chose avec ça.... ):-(

Merci pour toute aide,

Luc



"ze Titi" a écrit dans le message de
news:
Bonjour Luc Voeltzel

donne nous la structure de ta table Table1 et de ta table Orders.


Dans ton message du lundi
Je n'y arrive pas.

L'idée est d'effacer ma table :
DoCmd.RunSQL "DELETE * FROM Matable" CA MARCHE

mais pour ce qui est de la remplir, c'est une autre affaire. Je ne connais
rien à SQL.

Faut-il utliser une boucle du genre ?

For i = min To max
rst(i) = Int((max - min + 1) * Rnd + min)
Next i

Peut-être mais je n'arrive même pas jusque là, étant donnés mes lacunes en
programmation access.


Est ce que quelqu'un y arrive ?


Pour information, le code que j'ai essayé est ci-dessous, (ne rigolez pas
trop SVP, je suis débutant) :

Public Sub Remplit_table()
Dim i As Integer 'compteur
Dim min As Integer 'limite basse du tirage aléatoire
Dim max As Integer 'limite haute du tirage

Dim matable As TableDef 'Table qui doit être reconstruite de manière
aléatoire
Dim rst As Recordset
Dim chSQL As String 'variable commande SQL

Set matable = CurrentDb.TableDefs("Table1") 'Table1 est la table source des
données

chSQL = "SELECT * FROM Orders" 'commande de sélection des données

' Ouvre un objet Recordset de type table.
Set rst = matable.OpenRecordset(chSQL) 'PLANTE
max = rst.RecordCount
min = 1

' faire pointer rst sur matable cible

'Initialisation
Randomize

'efface le contenu de ma table
DoCmd.RunSQL "DELETE * FROM Matable"


For i = min To max
rst(i) = Int((max - min + 1) * Rnd + min)
Next i


'Ferme les objets ouverts
rst.Close
Set matable = Nothing

End Sub


"Luc Voeltzel" a écrit dans le message de
news:%
Merci ze Titi,

Je vais essayer, et donnerai suite pour ce qui est des résultats ce soir
(la réussite n'est pas garantie car je n'ai encore jamais fait de VBA sur
access !)
:-)

Luc



--
Voilou !
Bon code
Cordialement,

Ze Titi



--
Voilou !
Bon code
Cordialement,

Ze Titi




1 2