Je cherche =E0 faire un tirage al=E9atoire sous la forme suivante :
Sur mon form, j'ai une zone de liste contenant des noms et autant de
zones de texte que de noms.
J'aimerai que sur clic d'un bouton, il y ait un tirage al=E9atoire des
noms contenus dans la zone de liste et que cela remplisse les zones de
texte (celles-ci sont nomm=E9es num=E9riquement/ ex : Txtbox1,... , TxtboxN)
jusqu'=E0 ce qu'il n'y ait plus de noms dans la liste.
Je n'arrive pas =E0 mettre en place cette fonction. Qqun aurait-il une
id=E9e ?
une petite idée pour exemple à adapter à ta situation. soit Liste1 une zone de liste soit texte1....Texte26, 26 zones de texte liste1 contient les lettres de l'alphabet
on peut écrire cette fonction: Public Sub Commande0_Click() Dim DataListe As String DataListe = "'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';" Me.Liste1.RowSource = DataListe Randomize Dim I As Integer Dim J As Integer For J = 1 To Me.Liste1.ListCount I = Int((Me.Liste1.ListCount * Rnd) + 1) Me("texte" & J) = Me.Liste1.ItemData(I - 1) Me.Liste1.RowSource = Replace(Me.Liste1.RowSource, "'" & Me.Liste1.ItemData(I - 1) & "';", "") Next J Me.Liste1.RowSource = DataListe End Sub
les deux premières lignes sont là pour charger les données que tu dois avoir dans des variables ou tables.
-- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" a écrit dans le message de news:
Bonjour,
Je cherche à faire un tirage aléatoire sous la forme suivante :
Sur mon form, j'ai une zone de liste contenant des noms et autant de zones de texte que de noms. J'aimerai que sur clic d'un bouton, il y ait un tirage aléatoire des noms contenus dans la zone de liste et que cela remplisse les zones de texte (celles-ci sont nommées numériquement/ ex : Txtbox1,... , TxtboxN) jusqu'à ce qu'il n'y ait plus de noms dans la liste.
Je n'arrive pas à mettre en place cette fonction. Qqun aurait-il une idée ?
Merci d'avance
Bonjour.
une petite idée pour exemple à adapter à ta situation.
soit Liste1 une zone de liste
soit texte1....Texte26, 26 zones de texte
liste1 contient les lettres de l'alphabet
on peut écrire cette fonction:
Public Sub Commande0_Click()
Dim DataListe As String
DataListe =
"'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';"
Me.Liste1.RowSource = DataListe
Randomize
Dim I As Integer
Dim J As Integer
For J = 1 To Me.Liste1.ListCount
I = Int((Me.Liste1.ListCount * Rnd) + 1)
Me("texte" & J) = Me.Liste1.ItemData(I - 1)
Me.Liste1.RowSource = Replace(Me.Liste1.RowSource, "'" &
Me.Liste1.ItemData(I - 1) & "';", "")
Next J
Me.Liste1.RowSource = DataListe
End Sub
les deux premières lignes sont là pour charger les données que tu dois avoir
dans des variables ou tables.
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!!
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" <gil.nat@caramail.com> a écrit dans le message de news:
1180446082.269179.264670@h2g2000hsg.googlegroups.com...
Bonjour,
Je cherche à faire un tirage aléatoire sous la forme suivante :
Sur mon form, j'ai une zone de liste contenant des noms et autant de
zones de texte que de noms.
J'aimerai que sur clic d'un bouton, il y ait un tirage aléatoire des
noms contenus dans la zone de liste et que cela remplisse les zones de
texte (celles-ci sont nommées numériquement/ ex : Txtbox1,... , TxtboxN)
jusqu'à ce qu'il n'y ait plus de noms dans la liste.
Je n'arrive pas à mettre en place cette fonction. Qqun aurait-il une
idée ?
une petite idée pour exemple à adapter à ta situation. soit Liste1 une zone de liste soit texte1....Texte26, 26 zones de texte liste1 contient les lettres de l'alphabet
on peut écrire cette fonction: Public Sub Commande0_Click() Dim DataListe As String DataListe = "'A';'B';'C';'D';'E';'F';'G';'H';'I';'J';'K';'L';'M';'N';'O';'P';'Q';'R';'S';'T';'U';'V';'W';'X';'Y';'Z';" Me.Liste1.RowSource = DataListe Randomize Dim I As Integer Dim J As Integer For J = 1 To Me.Liste1.ListCount I = Int((Me.Liste1.ListCount * Rnd) + 1) Me("texte" & J) = Me.Liste1.ItemData(I - 1) Me.Liste1.RowSource = Replace(Me.Liste1.RowSource, "'" & Me.Liste1.ItemData(I - 1) & "';", "") Next J Me.Liste1.RowSource = DataListe End Sub
les deux premières lignes sont là pour charger les données que tu dois avoir dans des variables ou tables.
-- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" a écrit dans le message de news:
Bonjour,
Je cherche à faire un tirage aléatoire sous la forme suivante :
Sur mon form, j'ai une zone de liste contenant des noms et autant de zones de texte que de noms. J'aimerai que sur clic d'un bouton, il y ait un tirage aléatoire des noms contenus dans la zone de liste et que cela remplisse les zones de texte (celles-ci sont nommées numériquement/ ex : Txtbox1,... , TxtboxN) jusqu'à ce qu'il n'y ait plus de noms dans la liste.
Je n'arrive pas à mettre en place cette fonction. Qqun aurait-il une idée ?
Merci d'avance
LeSoviet
Bonjour Raymond,
Je ne comprend pas bien le sens de ton code sur plusieurs points mais je précise qu'en amont du clic, la liste a déjà un rowsource (j'aurai dû le préciser dans mon premier message) :
- Je ne vois pas où se décrémente (? ) le rowsource de la liste apr ès que la fonction ait fait un choix, ni où est renvoye ce choix dans une zone de texte. -Je ne comprends pas bien le sens de "les deux premières lignes sont là pour charger les données que tu dois avoir dans des variables ou tables."
Merci beaucoup pour ton aide
Bonjour Raymond,
Je ne comprend pas bien le sens de ton code sur plusieurs points mais
je précise qu'en amont du clic, la liste a déjà un rowsource (j'aurai
dû le préciser dans mon premier message) :
- Je ne vois pas où se décrémente (? ) le rowsource de la liste apr ès
que la fonction ait fait un choix, ni où est renvoye ce choix dans une
zone de texte.
-Je ne comprends pas bien le sens de "les deux premières lignes sont
là pour charger les données que tu dois avoir
dans des variables ou tables."
Je ne comprend pas bien le sens de ton code sur plusieurs points mais je précise qu'en amont du clic, la liste a déjà un rowsource (j'aurai dû le préciser dans mon premier message) :
- Je ne vois pas où se décrémente (? ) le rowsource de la liste apr ès que la fonction ait fait un choix, ni où est renvoye ce choix dans une zone de texte. -Je ne comprends pas bien le sens de "les deux premières lignes sont là pour charger les données que tu dois avoir dans des variables ou tables."
Merci beaucoup pour ton aide
LeSoviet
Re,
Bon j'avance un peu (j'arrive à faire fonctionner le code de Command0) mais c'est pas encore ça.
Je réexplique le contexte : -1 zone de liste ayant une requête (2 champs) en rowsource. A partir de l'exemple de l'alphabet, le contenu de la reqûete serait le suivant : 1 champ pour les chiffres (de 1 à 26), le 2ème pour les lettres (de A à Z).
-Après le clic sur Command0, je remplis Text1 par le champ1 (ici les chiffres) du 1er enregistrement tiré de façon aléatoire et Text2 par le 2éme champ (les lettres) du même enregistrement, etc jusqu'à épuisement. D'où ici 52 Textbox.
Cependant, j'ai une erreur éxécution '3163' (Champ trop petit...) sur Me("texte" & J) = Me.Liste1.ItemData(I - 1). Y a t il un moyen pour ne récupérer que le champ concerné dans Me.Liste1.ItemData(I - 1) ? (J'ai essayé avec Column. sans succès)
Encore merci pour l'aide apportée
Re,
Bon j'avance un peu (j'arrive à faire fonctionner le code de Command0)
mais c'est pas encore ça.
Je réexplique le contexte :
-1 zone de liste ayant une requête (2 champs) en rowsource. A partir
de l'exemple de l'alphabet, le contenu de la reqûete serait le
suivant : 1 champ pour les chiffres (de 1 à 26), le 2ème pour les
lettres (de A à Z).
-Après le clic sur Command0, je remplis Text1 par le champ1 (ici les
chiffres) du 1er enregistrement tiré de façon aléatoire et Text2 par
le 2éme champ (les lettres) du même enregistrement, etc jusqu'à
épuisement. D'où ici 52 Textbox.
Cependant, j'ai une erreur éxécution '3163' (Champ trop petit...) sur
Me("texte" & J) = Me.Liste1.ItemData(I - 1).
Y a t il un moyen pour ne récupérer que le champ concerné dans
Me.Liste1.ItemData(I - 1) ? (J'ai essayé avec Column. sans succès)
Bon j'avance un peu (j'arrive à faire fonctionner le code de Command0) mais c'est pas encore ça.
Je réexplique le contexte : -1 zone de liste ayant une requête (2 champs) en rowsource. A partir de l'exemple de l'alphabet, le contenu de la reqûete serait le suivant : 1 champ pour les chiffres (de 1 à 26), le 2ème pour les lettres (de A à Z).
-Après le clic sur Command0, je remplis Text1 par le champ1 (ici les chiffres) du 1er enregistrement tiré de façon aléatoire et Text2 par le 2éme champ (les lettres) du même enregistrement, etc jusqu'à épuisement. D'où ici 52 Textbox.
Cependant, j'ai une erreur éxécution '3163' (Champ trop petit...) sur Me("texte" & J) = Me.Liste1.ItemData(I - 1). Y a t il un moyen pour ne récupérer que le champ concerné dans Me.Liste1.ItemData(I - 1) ? (J'ai essayé avec Column. sans succès)
Encore merci pour l'aide apportée
Raymond [mvp]
comme je te l'ai dit, c'est un exemple (qui fonctionne) pour te montrer qu'on peut le faire mais qu'il est à adapter à tes besoins. le fait que la source soit une requête va te poser des problèmes et il vaudrait mieux travailler sur une table temporaire créée par cette requête justement, mais est-ce possible à faire ? toute la difficulté réside dans le fait de supprimer provisoirement les infos d'un recordset ou d'un tableau. ne serait-il pas préférable de créér une nouvelle requête en partant de ta requête actuelle et en ajoutant un champ de valeur aléatoire et de la trier sur ce champ. ensuite les contrôles texte seraient remplis dans l'ordre de la requête. cà me semble la solution la plus simple à mettre en oeuvre et si tu es d'accord on peut voir ce que ça donne. dans ce cas pour travailler sur des éléments réels, donne nous les noms exacts des objets, listes, table, requête etc...
-- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" a écrit dans le message de news:
Re,
Bon j'avance un peu (j'arrive à faire fonctionner le code de Command0) mais c'est pas encore ça.
Je réexplique le contexte : -1 zone de liste ayant une requête (2 champs) en rowsource. A partir de l'exemple de l'alphabet, le contenu de la reqûete serait le suivant : 1 champ pour les chiffres (de 1 à 26), le 2ème pour les lettres (de A à Z).
-Après le clic sur Command0, je remplis Text1 par le champ1 (ici les chiffres) du 1er enregistrement tiré de façon aléatoire et Text2 par le 2éme champ (les lettres) du même enregistrement, etc jusqu'à épuisement. D'où ici 52 Textbox.
Cependant, j'ai une erreur éxécution '3163' (Champ trop petit...) sur Me("texte" & J) = Me.Liste1.ItemData(I - 1). Y a t il un moyen pour ne récupérer que le champ concerné dans Me.Liste1.ItemData(I - 1) ? (J'ai essayé avec Column. sans succès)
Encore merci pour l'aide apportée
comme je te l'ai dit, c'est un exemple (qui fonctionne) pour te montrer
qu'on peut le faire mais qu'il est à adapter à tes besoins.
le fait que la source soit une requête va te poser des problèmes et il
vaudrait mieux travailler sur une table temporaire créée par cette requête
justement, mais est-ce possible à faire ? toute la difficulté réside dans le
fait de supprimer provisoirement les infos d'un recordset ou d'un tableau.
ne serait-il pas préférable de créér une nouvelle requête en partant de ta
requête actuelle et en ajoutant un champ de valeur aléatoire et de la trier
sur ce champ. ensuite les contrôles texte seraient remplis dans l'ordre de
la requête. cà me semble la solution la plus simple à mettre en oeuvre et si
tu es d'accord on peut voir ce que ça donne. dans ce cas pour travailler sur
des éléments réels, donne nous les noms exacts des objets, listes, table,
requête etc...
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!!
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" <gil.nat@caramail.com> a écrit dans le message de news:
1180456793.899291.153200@m36g2000hse.googlegroups.com...
Re,
Bon j'avance un peu (j'arrive à faire fonctionner le code de Command0)
mais c'est pas encore ça.
Je réexplique le contexte :
-1 zone de liste ayant une requête (2 champs) en rowsource. A partir
de l'exemple de l'alphabet, le contenu de la reqûete serait le
suivant : 1 champ pour les chiffres (de 1 à 26), le 2ème pour les
lettres (de A à Z).
-Après le clic sur Command0, je remplis Text1 par le champ1 (ici les
chiffres) du 1er enregistrement tiré de façon aléatoire et Text2 par
le 2éme champ (les lettres) du même enregistrement, etc jusqu'à
épuisement. D'où ici 52 Textbox.
Cependant, j'ai une erreur éxécution '3163' (Champ trop petit...) sur
Me("texte" & J) = Me.Liste1.ItemData(I - 1).
Y a t il un moyen pour ne récupérer que le champ concerné dans
Me.Liste1.ItemData(I - 1) ? (J'ai essayé avec Column. sans succès)
comme je te l'ai dit, c'est un exemple (qui fonctionne) pour te montrer qu'on peut le faire mais qu'il est à adapter à tes besoins. le fait que la source soit une requête va te poser des problèmes et il vaudrait mieux travailler sur une table temporaire créée par cette requête justement, mais est-ce possible à faire ? toute la difficulté réside dans le fait de supprimer provisoirement les infos d'un recordset ou d'un tableau. ne serait-il pas préférable de créér une nouvelle requête en partant de ta requête actuelle et en ajoutant un champ de valeur aléatoire et de la trier sur ce champ. ensuite les contrôles texte seraient remplis dans l'ordre de la requête. cà me semble la solution la plus simple à mettre en oeuvre et si tu es d'accord on peut voir ce que ça donne. dans ce cas pour travailler sur des éléments réels, donne nous les noms exacts des objets, listes, table, requête etc...
-- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" a écrit dans le message de news:
Re,
Bon j'avance un peu (j'arrive à faire fonctionner le code de Command0) mais c'est pas encore ça.
Je réexplique le contexte : -1 zone de liste ayant une requête (2 champs) en rowsource. A partir de l'exemple de l'alphabet, le contenu de la reqûete serait le suivant : 1 champ pour les chiffres (de 1 à 26), le 2ème pour les lettres (de A à Z).
-Après le clic sur Command0, je remplis Text1 par le champ1 (ici les chiffres) du 1er enregistrement tiré de façon aléatoire et Text2 par le 2éme champ (les lettres) du même enregistrement, etc jusqu'à épuisement. D'où ici 52 Textbox.
Cependant, j'ai une erreur éxécution '3163' (Champ trop petit...) sur Me("texte" & J) = Me.Liste1.ItemData(I - 1). Y a t il un moyen pour ne récupérer que le champ concerné dans Me.Liste1.ItemData(I - 1) ? (J'ai essayé avec Column. sans succès)
Encore merci pour l'aide apportée
LeSoviet
Re,
Je vais un peu simplifier : -Table : TblClient -Formulaire : FrmEnvoiClient -Zone de liste : lstClient -Requête qui alimente la zone de liste : ReqClient -Zones de texte : Nompre (de 1 à x) nommées Nompre1 à Nomprex Societe (de 1 à x) nommées Societe1 à Societex
Sur la propriété Sur_Chargement de FrmEnvoiClient, j'ai : Me. FrmEnvoiClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM ReqClient ;"
Voilà pour la structure. Par contre, dans la mesure du possible, j'aimerai que tout passe par le code (genre fonction dans un module).
Un très grand merci pour ton aide
Re,
Je vais un peu simplifier :
-Table : TblClient
-Formulaire : FrmEnvoiClient
-Zone de liste : lstClient
-Requête qui alimente la zone de liste : ReqClient
-Zones de texte : Nompre (de 1 à x) nommées Nompre1 à Nomprex
Societe (de 1 à x) nommées Societe1 à Societex
Sur la propriété Sur_Chargement de FrmEnvoiClient, j'ai :
Me. FrmEnvoiClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM
ReqClient ;"
Voilà pour la structure. Par contre, dans la mesure du possible,
j'aimerai que tout passe par le code (genre fonction dans un module).
Je vais un peu simplifier : -Table : TblClient -Formulaire : FrmEnvoiClient -Zone de liste : lstClient -Requête qui alimente la zone de liste : ReqClient -Zones de texte : Nompre (de 1 à x) nommées Nompre1 à Nomprex Societe (de 1 à x) nommées Societe1 à Societex
Sur la propriété Sur_Chargement de FrmEnvoiClient, j'ai : Me. FrmEnvoiClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM ReqClient ;"
Voilà pour la structure. Par contre, dans la mesure du possible, j'aimerai que tout passe par le code (genre fonction dans un module).
Un très grand merci pour ton aide
Raymond [mvp]
ne me prends pas pour un tatillon mais ne serait-ce pas plutôt:
Me. lstClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM ReqClient ;" et non Me. FrmEnvoiClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM ReqClient ;"
questions subsidiaires quand même: y-a-t-il une limite dans le nombre de contrôles texte Nomprex ou faut-il la prévoir ? que devient la liste après remplissage des contrôels texte, elle reste identique, elle est vidée ?
-- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" a écrit dans le message de news:
Re,
Je vais un peu simplifier : -Table : TblClient -Formulaire : FrmEnvoiClient -Zone de liste : lstClient -Requête qui alimente la zone de liste : ReqClient -Zones de texte : Nompre (de 1 à x) nommées Nompre1 à Nomprex Societe (de 1 à x) nommées Societe1 à Societex
Sur la propriété Sur_Chargement de FrmEnvoiClient, j'ai : Me. FrmEnvoiClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM ReqClient ;"
Voilà pour la structure. Par contre, dans la mesure du possible, j'aimerai que tout passe par le code (genre fonction dans un module).
Un très grand merci pour ton aide
ne me prends pas pour un tatillon mais ne serait-ce pas plutôt:
Me. lstClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM
ReqClient ;"
et non
Me. FrmEnvoiClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM
ReqClient ;"
questions subsidiaires quand même:
y-a-t-il une limite dans le nombre de contrôles texte Nomprex ou faut-il la
prévoir ?
que devient la liste après remplissage des contrôels texte, elle reste
identique, elle est vidée ?
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!!
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" <gil.nat@caramail.com> a écrit dans le message de news:
1180463982.803780.175000@q66g2000hsg.googlegroups.com...
Re,
Je vais un peu simplifier :
-Table : TblClient
-Formulaire : FrmEnvoiClient
-Zone de liste : lstClient
-Requête qui alimente la zone de liste : ReqClient
-Zones de texte : Nompre (de 1 à x) nommées Nompre1 à Nomprex
Societe (de 1 à x) nommées Societe1 à Societex
Sur la propriété Sur_Chargement de FrmEnvoiClient, j'ai :
Me. FrmEnvoiClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM
ReqClient ;"
Voilà pour la structure. Par contre, dans la mesure du possible,
j'aimerai que tout passe par le code (genre fonction dans un module).
ne me prends pas pour un tatillon mais ne serait-ce pas plutôt:
Me. lstClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM ReqClient ;" et non Me. FrmEnvoiClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM ReqClient ;"
questions subsidiaires quand même: y-a-t-il une limite dans le nombre de contrôles texte Nomprex ou faut-il la prévoir ? que devient la liste après remplissage des contrôels texte, elle reste identique, elle est vidée ?
-- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" a écrit dans le message de news:
Re,
Je vais un peu simplifier : -Table : TblClient -Formulaire : FrmEnvoiClient -Zone de liste : lstClient -Requête qui alimente la zone de liste : ReqClient -Zones de texte : Nompre (de 1 à x) nommées Nompre1 à Nomprex Societe (de 1 à x) nommées Societe1 à Societex
Sur la propriété Sur_Chargement de FrmEnvoiClient, j'ai : Me. FrmEnvoiClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM ReqClient ;"
Voilà pour la structure. Par contre, dans la mesure du possible, j'aimerai que tout passe par le code (genre fonction dans un module).
Un très grand merci pour ton aide
LeSoviet
Oui pour la boulette, c'est bien : Me. lstClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM ReqClient ;"
-la limite dans le nombre de contrôles texte Nomprex et Societex est le nombre d'enregistrements contenus dans ReqClient. -Après le tirage, la liste est toujours remplie par le contenu du départ (peu importe l'ordre ici je pense).
Merci beaucoup pour ton aide
Oui pour la boulette, c'est bien :
Me. lstClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM
ReqClient ;"
-la limite dans le nombre de contrôles texte Nomprex et Societex est
le nombre d'enregistrements contenus dans ReqClient.
-Après le tirage, la liste est toujours remplie par le contenu du
départ (peu importe l'ordre ici je pense).
Oui pour la boulette, c'est bien : Me. lstClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM ReqClient ;"
-la limite dans le nombre de contrôles texte Nomprex et Societex est le nombre d'enregistrements contenus dans ReqClient. -Après le tirage, la liste est toujours remplie par le contenu du départ (peu importe l'ordre ici je pense).
Merci beaucoup pour ton aide
Raymond [mvp]
Tu peux essayer ceci:
créer une requête nommée ReqListe qui contient: SELECT IdClient, Nompre, Societe, aleatoire([idclient]) AS Ordre FROM TblClient ORDER BY aleatoire([idclient]);
Créer un module standard nommé n'importe comment qui contient: Option Compare Database Option Explicit Public Function aleatoire(IdClient As Long) As String Randomize IdClient aleatoire = Format((DCount("*", "tblclient") * Rnd) + 1, "000.000000") End Function
créer l'événement suivant dans le formulaire FrmEnvoiClient Private Sub Form_Load() Dim Db As DAO.Database Dim Rs As DAO.Recordset Dim I As Integer Set Db = CurrentDb Set Rs = Db.OpenRecordset("SELECT IdClient, Nompre, Societe, aleatoire([idclient]) AS Ordre FROM TblClient ORDER BY aleatoire([idclient]);") If Not Rs.BOF Then I = 1 Do Until Rs.EOF Me("nompre" & I) = Rs("Nompre") Me("Societe" & I) = Rs("societe") I = I + 1 Rs.MoveNext Loop End If Set Rs = Nothing Set Db = Nothing End Sub
c'est tout.
il n'y a pas de test de dépassement de la requête sur le nombre de contrôles. -- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" a écrit dans le message de news:
Oui pour la boulette, c'est bien : Me. lstClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM ReqClient ;"
-la limite dans le nombre de contrôles texte Nomprex et Societex est le nombre d'enregistrements contenus dans ReqClient. -Après le tirage, la liste est toujours remplie par le contenu du départ (peu importe l'ordre ici je pense).
Merci beaucoup pour ton aide
Tu peux essayer ceci:
créer une requête nommée ReqListe qui contient:
SELECT IdClient, Nompre, Societe, aleatoire([idclient]) AS Ordre
FROM TblClient ORDER BY aleatoire([idclient]);
Créer un module standard nommé n'importe comment qui contient:
Option Compare Database
Option Explicit
Public Function aleatoire(IdClient As Long) As String
Randomize IdClient
aleatoire = Format((DCount("*", "tblclient") * Rnd) + 1, "000.000000")
End Function
créer l'événement suivant dans le formulaire FrmEnvoiClient
Private Sub Form_Load()
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim I As Integer
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("SELECT IdClient, Nompre, Societe,
aleatoire([idclient]) AS Ordre FROM TblClient ORDER BY
aleatoire([idclient]);")
If Not Rs.BOF Then
I = 1
Do Until Rs.EOF
Me("nompre" & I) = Rs("Nompre")
Me("Societe" & I) = Rs("societe")
I = I + 1
Rs.MoveNext
Loop
End If
Set Rs = Nothing
Set Db = Nothing
End Sub
c'est tout.
il n'y a pas de test de dépassement de la requête sur le nombre de
contrôles.
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!!
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" <gil.nat@caramail.com> a écrit dans le message de news:
1180465195.408809.21950@q75g2000hsh.googlegroups.com...
Oui pour la boulette, c'est bien :
Me. lstClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM
ReqClient ;"
-la limite dans le nombre de contrôles texte Nomprex et Societex est
le nombre d'enregistrements contenus dans ReqClient.
-Après le tirage, la liste est toujours remplie par le contenu du
départ (peu importe l'ordre ici je pense).
créer une requête nommée ReqListe qui contient: SELECT IdClient, Nompre, Societe, aleatoire([idclient]) AS Ordre FROM TblClient ORDER BY aleatoire([idclient]);
Créer un module standard nommé n'importe comment qui contient: Option Compare Database Option Explicit Public Function aleatoire(IdClient As Long) As String Randomize IdClient aleatoire = Format((DCount("*", "tblclient") * Rnd) + 1, "000.000000") End Function
créer l'événement suivant dans le formulaire FrmEnvoiClient Private Sub Form_Load() Dim Db As DAO.Database Dim Rs As DAO.Recordset Dim I As Integer Set Db = CurrentDb Set Rs = Db.OpenRecordset("SELECT IdClient, Nompre, Societe, aleatoire([idclient]) AS Ordre FROM TblClient ORDER BY aleatoire([idclient]);") If Not Rs.BOF Then I = 1 Do Until Rs.EOF Me("nompre" & I) = Rs("Nompre") Me("Societe" & I) = Rs("societe") I = I + 1 Rs.MoveNext Loop End If Set Rs = Nothing Set Db = Nothing End Sub
c'est tout.
il n'y a pas de test de dépassement de la requête sur le nombre de contrôles. -- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"LeSoviet" a écrit dans le message de news:
Oui pour la boulette, c'est bien : Me. lstClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM ReqClient ;"
-la limite dans le nombre de contrôles texte Nomprex et Societex est le nombre d'enregistrements contenus dans ReqClient. -Après le tirage, la liste est toujours remplie par le contenu du départ (peu importe l'ordre ici je pense).
Merci beaucoup pour ton aide
Raymond [mvp]
.../... la requête n'est pas obligatoire, elle fait double emploi. dans le code vba soit tu laisses le code comme ça soit tu le remplaces par le nom de la requête, au plus simple pour toi.
| Set Rs = Db.OpenRecordset("SELECT IdClient, Nompre, Societe, | aleatoire([idclient]) AS Ordre FROM TblClient ORDER BY | aleatoire([idclient]);")
ou Set Rs = Db.OpenRecordset("ReqListe")
-- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"Raymond [mvp]" a écrit dans le message de news: | Tu peux essayer ceci: | | créer une requête nommée ReqListe qui contient: | SELECT IdClient, Nompre, Societe, aleatoire([idclient]) AS Ordre | FROM TblClient ORDER BY aleatoire([idclient]); | | Créer un module standard nommé n'importe comment qui contient: | Option Compare Database | Option Explicit | Public Function aleatoire(IdClient As Long) As String | Randomize IdClient | aleatoire = Format((DCount("*", "tblclient") * Rnd) + 1, "000.000000") | End Function | | créer l'événement suivant dans le formulaire FrmEnvoiClient | Private Sub Form_Load() | Dim Db As DAO.Database | Dim Rs As DAO.Recordset | Dim I As Integer | Set Db = CurrentDb | Set Rs = Db.OpenRecordset("SELECT IdClient, Nompre, Societe, | aleatoire([idclient]) AS Ordre FROM TblClient ORDER BY | aleatoire([idclient]);") | If Not Rs.BOF Then | I = 1 | Do Until Rs.EOF | Me("nompre" & I) = Rs("Nompre") | Me("Societe" & I) = Rs("societe") | I = I + 1 | Rs.MoveNext | Loop | End If | Set Rs = Nothing | Set Db = Nothing | End Sub | | c'est tout. | | il n'y a pas de test de dépassement de la requête sur le nombre de | contrôles. | -- | @+ | Raymond Access MVP http://OfficeSystem.Access.free.fr/ | Pour débuter sur le forum: http://www.mpfa.info/ | | Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!! | http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273 | | | "LeSoviet" a écrit dans le message de news: | | Oui pour la boulette, c'est bien : | Me. lstClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM | ReqClient ;" | | -la limite dans le nombre de contrôles texte Nomprex et Societex est | le nombre d'enregistrements contenus dans ReqClient. | -Après le tirage, la liste est toujours remplie par le contenu du | départ (peu importe l'ordre ici je pense). | | Merci beaucoup pour ton aide | | | |
.../...
la requête n'est pas obligatoire, elle fait double emploi. dans le code vba
soit tu laisses le code comme ça soit tu le remplaces par le nom de la
requête, au plus simple pour toi.
| Set Rs = Db.OpenRecordset("SELECT IdClient, Nompre, Societe,
| aleatoire([idclient]) AS Ordre FROM TblClient ORDER BY
| aleatoire([idclient]);")
ou
Set Rs = Db.OpenRecordset("ReqListe")
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!!
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"Raymond [mvp]" <xyzofficesystem.accessxyz@free.fr> a écrit dans le message
de news: OztEiEjoHHA.4516@TK2MSFTNGP05.phx.gbl...
| Tu peux essayer ceci:
|
| créer une requête nommée ReqListe qui contient:
| SELECT IdClient, Nompre, Societe, aleatoire([idclient]) AS Ordre
| FROM TblClient ORDER BY aleatoire([idclient]);
|
| Créer un module standard nommé n'importe comment qui contient:
| Option Compare Database
| Option Explicit
| Public Function aleatoire(IdClient As Long) As String
| Randomize IdClient
| aleatoire = Format((DCount("*", "tblclient") * Rnd) + 1, "000.000000")
| End Function
|
| créer l'événement suivant dans le formulaire FrmEnvoiClient
| Private Sub Form_Load()
| Dim Db As DAO.Database
| Dim Rs As DAO.Recordset
| Dim I As Integer
| Set Db = CurrentDb
| Set Rs = Db.OpenRecordset("SELECT IdClient, Nompre, Societe,
| aleatoire([idclient]) AS Ordre FROM TblClient ORDER BY
| aleatoire([idclient]);")
| If Not Rs.BOF Then
| I = 1
| Do Until Rs.EOF
| Me("nompre" & I) = Rs("Nompre")
| Me("Societe" & I) = Rs("societe")
| I = I + 1
| Rs.MoveNext
| Loop
| End If
| Set Rs = Nothing
| Set Db = Nothing
| End Sub
|
| c'est tout.
|
| il n'y a pas de test de dépassement de la requête sur le nombre de
| contrôles.
| --
| @+
| Raymond Access MVP http://OfficeSystem.Access.free.fr/
| Pour débuter sur le forum: http://www.mpfa.info/
|
| Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!!
|
http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
|
|
| "LeSoviet" <gil.nat@caramail.com> a écrit dans le message de news:
| 1180465195.408809.21950@q75g2000hsh.googlegroups.com...
| Oui pour la boulette, c'est bien :
| Me. lstClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM
| ReqClient ;"
|
| -la limite dans le nombre de contrôles texte Nomprex et Societex est
| le nombre d'enregistrements contenus dans ReqClient.
| -Après le tirage, la liste est toujours remplie par le contenu du
| départ (peu importe l'ordre ici je pense).
|
| Merci beaucoup pour ton aide
|
|
|
|
.../... la requête n'est pas obligatoire, elle fait double emploi. dans le code vba soit tu laisses le code comme ça soit tu le remplaces par le nom de la requête, au plus simple pour toi.
| Set Rs = Db.OpenRecordset("SELECT IdClient, Nompre, Societe, | aleatoire([idclient]) AS Ordre FROM TblClient ORDER BY | aleatoire([idclient]);")
ou Set Rs = Db.OpenRecordset("ReqListe")
-- @+ Raymond Access MVP http://OfficeSystem.Access.free.fr/ Pour débuter sur le forum: http://www.mpfa.info/
Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!! http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273
"Raymond [mvp]" a écrit dans le message de news: | Tu peux essayer ceci: | | créer une requête nommée ReqListe qui contient: | SELECT IdClient, Nompre, Societe, aleatoire([idclient]) AS Ordre | FROM TblClient ORDER BY aleatoire([idclient]); | | Créer un module standard nommé n'importe comment qui contient: | Option Compare Database | Option Explicit | Public Function aleatoire(IdClient As Long) As String | Randomize IdClient | aleatoire = Format((DCount("*", "tblclient") * Rnd) + 1, "000.000000") | End Function | | créer l'événement suivant dans le formulaire FrmEnvoiClient | Private Sub Form_Load() | Dim Db As DAO.Database | Dim Rs As DAO.Recordset | Dim I As Integer | Set Db = CurrentDb | Set Rs = Db.OpenRecordset("SELECT IdClient, Nompre, Societe, | aleatoire([idclient]) AS Ordre FROM TblClient ORDER BY | aleatoire([idclient]);") | If Not Rs.BOF Then | I = 1 | Do Until Rs.EOF | Me("nompre" & I) = Rs("Nompre") | Me("Societe" & I) = Rs("societe") | I = I + 1 | Rs.MoveNext | Loop | End If | Set Rs = Nothing | Set Db = Nothing | End Sub | | c'est tout. | | il n'y a pas de test de dépassement de la requête sur le nombre de | contrôles. | -- | @+ | Raymond Access MVP http://OfficeSystem.Access.free.fr/ | Pour débuter sur le forum: http://www.mpfa.info/ | | Le multimédia vu par Windows Vista, Office 2007 et Windows Live !!! | http://www.comscamp.com/Tracker/Redirect.ashx?linkid°64304e-439a-45c7-9d2f-c3326db58273 | | | "LeSoviet" a écrit dans le message de news: | | Oui pour la boulette, c'est bien : | Me. lstClient.Rowsource = "SELECT IdClient, Nompre, Societe FROM | ReqClient ;" | | -la limite dans le nombre de contrôles texte Nomprex et Societex est | le nombre d'enregistrements contenus dans ReqClient. | -Après le tirage, la liste est toujours remplie par le contenu du | départ (peu importe l'ordre ici je pense). | | Merci beaucoup pour ton aide | | | |
LeSoviet
Bonjour Raymond,
J'ai suivi tes conseils (création de la fonction dans un module, création d'une requête ou non, code sur chargement du formulaire...) mais j'ai un message d'erreur (3061 : trop peu de paramètres. 1 attendu) sur cette ligne : Set Rs = Db.OpenRecordset("SELECT IdClient, Nompre, Societe, aleatoire([IdClient]) AS Ordre FROM TblClient ORDER BY aleatoire(IdClient]);")
Merci beaucoup pour ton aide
Bonjour Raymond,
J'ai suivi tes conseils (création de la fonction dans un module,
création d'une requête ou non, code sur chargement du formulaire...)
mais j'ai un message d'erreur (3061 : trop peu de paramètres. 1
attendu) sur cette ligne :
Set Rs = Db.OpenRecordset("SELECT IdClient, Nompre, Societe,
aleatoire([IdClient]) AS Ordre FROM TblClient ORDER BY
aleatoire(IdClient]);")
J'ai suivi tes conseils (création de la fonction dans un module, création d'une requête ou non, code sur chargement du formulaire...) mais j'ai un message d'erreur (3061 : trop peu de paramètres. 1 attendu) sur cette ligne : Set Rs = Db.OpenRecordset("SELECT IdClient, Nompre, Societe, aleatoire([IdClient]) AS Ordre FROM TblClient ORDER BY aleatoire(IdClient]);")