bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un numéro de 1 a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe pas dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si c'est le cas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que les goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un numéro de 1 a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe pas dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si c'est le cas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que les goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un numéro de 1 a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe pas dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si c'est le cas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que les goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
bonjour
tu peux faire un exit for, pour sortir de la boucle ou un exit sub, pour
finir
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"yan" a écrit dans le message de
news:41b33a28$0$3411$bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un numéro de 1
a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe pas
dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si c'est le
cas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que les
goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
bonjour
tu peux faire un exit for, pour sortir de la boucle ou un exit sub, pour
finir
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"yan" <xyz@wanadoo.fr> a écrit dans le message de
news:41b33a28$0$3411$8fcfb975@news.wanadoo.fr...
bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un numéro de 1
a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe pas
dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si c'est le
cas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que les
goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
bonjour
tu peux faire un exit for, pour sortir de la boucle ou un exit sub, pour
finir
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"yan" a écrit dans le message de
news:41b33a28$0$3411$bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un numéro de 1
a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe pas
dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si c'est le
cas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que les
goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
Si j'ai bien compris exit for interromps ma boucle et me fais sortir
après
next
Mais moi je sort et je remonte a boucle:
ma façon de faire nuit-elle a mon programme.
Je note le "exit for" que je ne connaissais pas.
Merci a toi
A+
yannick
"Pierre CFI [mvp]" a écrit dans le
message de
news:bonjour
tu peux faire un exit for, pour sortir de la boucle ou un exit
sub, pour
finir
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"yan" a écrit dans le message de
news:41b33a28$0$3411$bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un
numéro de 1
a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n
dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe
pas
dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si
c'est le
cas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que
les
goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
Si j'ai bien compris exit for interromps ma boucle et me fais sortir
après
next
Mais moi je sort et je remonte a boucle:
ma façon de faire nuit-elle a mon programme.
Je note le "exit for" que je ne connaissais pas.
Merci a toi
A+
yannick
"Pierre CFI [mvp]" <XXX_pierresalaun@aol.com> a écrit dans le
message de
news: uAieBCv2EHA.1408@TK2MSFTNGP10.phx.gbl...
bonjour
tu peux faire un exit for, pour sortir de la boucle ou un exit
sub, pour
finir
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"yan" <xyz@wanadoo.fr> a écrit dans le message de
news:41b33a28$0$3411$8fcfb975@news.wanadoo.fr...
bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un
numéro de 1
a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n
dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe
pas
dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si
c'est le
cas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que
les
goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
Si j'ai bien compris exit for interromps ma boucle et me fais sortir
après
next
Mais moi je sort et je remonte a boucle:
ma façon de faire nuit-elle a mon programme.
Je note le "exit for" que je ne connaissais pas.
Merci a toi
A+
yannick
"Pierre CFI [mvp]" a écrit dans le
message de
news:bonjour
tu peux faire un exit for, pour sortir de la boucle ou un exit
sub, pour
finir
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"yan" a écrit dans le message de
news:41b33a28$0$3411$bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un
numéro de 1
a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n
dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe
pas
dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si
c'est le
cas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que
les
goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
Bonjour,Si j'ai bien compris exit for interromps ma boucle et me fais sortir
aprèsnext
Exact. C'est également vrai pour les autres "Exit", sauf exit sub.Mais moi je sort et je remonte a boucle:
ma façon de faire nuit-elle a mon programme.
Les puristes ont pris "goto" en grippe, surtout parce qu'avant
l'arrivée des programmes qui facilitaient la programmation structurée,
les programmes devenaient vite une sorte d'assiette de spaghettis; à
cause, justement, des goto. Mais ils n'avaient rien d'autre.
Avec les langages d'aujourdh'hui, il est tout à fait possible de
programmer sans goto, et, dans l'ensemble, c'est très positif. Ne
serait-ce que pour la facilité de lecture et de mise à jour; surtout
quand le programmeur a oublié quelle "belle passe" qu'un certain goto
8000 placé à ligne 3500 lui a permis de faire, ou que pire encore,
quelqu'un qui ignore tout de la "belle passe" en question doit
modifier le programme.
Pour un petit programme comme celui-ci, le goto ne cause pas grand
mal.
D'un autre côté, tu peux utiliser un tableau en mémoire dans une
boucle conditionnelle, pour tirer tes x nombres, et ensuite transférer
le tableau dans la feuille de calcul. Il y a sans doute des exemples
dans Excelabo.
Sinon, j'avais déjà écris jetire() que tu peux retrouver là. (Il y a
peut-être de meilleurs programmes ailleurs, je ne prétend pas détenir
la vérité):
http://groups.google.com/groups?q=+%22sub+jetire%22+group:microsoft.public.fr.excel+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&c2coff=1&selmì6JWLVnCHA.2420%40TK2MSFTNGP12&rnum=1
"yan" a écrit dans le message de
news:41b34d93$0$9038$Je note le "exit for" que je ne connaissais pas.
Merci a toi
A+
yannick
"Pierre CFI [mvp]" a écrit dans le
message denews:bonjour
tu peux faire un exit for, pour sortir de la boucle ou un exit
sub, pourfinir
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"yan" a écrit dans le message de
news:41b33a28$0$3411$bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un
numéro de 1a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n
dans la 1ercellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe
pasdans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si
c'est lecas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que
lesgoto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
Bonjour,
Si j'ai bien compris exit for interromps ma boucle et me fais sortir
après
next
Exact. C'est également vrai pour les autres "Exit", sauf exit sub.
Mais moi je sort et je remonte a boucle:
ma façon de faire nuit-elle a mon programme.
Les puristes ont pris "goto" en grippe, surtout parce qu'avant
l'arrivée des programmes qui facilitaient la programmation structurée,
les programmes devenaient vite une sorte d'assiette de spaghettis; à
cause, justement, des goto. Mais ils n'avaient rien d'autre.
Avec les langages d'aujourdh'hui, il est tout à fait possible de
programmer sans goto, et, dans l'ensemble, c'est très positif. Ne
serait-ce que pour la facilité de lecture et de mise à jour; surtout
quand le programmeur a oublié quelle "belle passe" qu'un certain goto
8000 placé à ligne 3500 lui a permis de faire, ou que pire encore,
quelqu'un qui ignore tout de la "belle passe" en question doit
modifier le programme.
Pour un petit programme comme celui-ci, le goto ne cause pas grand
mal.
D'un autre côté, tu peux utiliser un tableau en mémoire dans une
boucle conditionnelle, pour tirer tes x nombres, et ensuite transférer
le tableau dans la feuille de calcul. Il y a sans doute des exemples
dans Excelabo.
Sinon, j'avais déjà écris jetire() que tu peux retrouver là. (Il y a
peut-être de meilleurs programmes ailleurs, je ne prétend pas détenir
la vérité):
http://groups.google.com/groups?q=+%22sub+jetire%22+group:microsoft.public.fr.excel+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&c2coff=1&selmì6JWLVnCHA.2420%40TK2MSFTNGP12&rnum=1
"yan" <xyz@wanadoo.fr> a écrit dans le message de
news:41b34d93$0$9038$8fcfb975@news.wanadoo.fr...
Je note le "exit for" que je ne connaissais pas.
Merci a toi
A+
yannick
"Pierre CFI [mvp]" <XXX_pierresalaun@aol.com> a écrit dans le
message de
news: uAieBCv2EHA.1408@TK2MSFTNGP10.phx.gbl...
bonjour
tu peux faire un exit for, pour sortir de la boucle ou un exit
sub, pour
finir
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"yan" <xyz@wanadoo.fr> a écrit dans le message de
news:41b33a28$0$3411$8fcfb975@news.wanadoo.fr...
bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un
numéro de 1
a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n
dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe
pas
dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si
c'est le
cas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que
les
goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
Bonjour,Si j'ai bien compris exit for interromps ma boucle et me fais sortir
aprèsnext
Exact. C'est également vrai pour les autres "Exit", sauf exit sub.Mais moi je sort et je remonte a boucle:
ma façon de faire nuit-elle a mon programme.
Les puristes ont pris "goto" en grippe, surtout parce qu'avant
l'arrivée des programmes qui facilitaient la programmation structurée,
les programmes devenaient vite une sorte d'assiette de spaghettis; à
cause, justement, des goto. Mais ils n'avaient rien d'autre.
Avec les langages d'aujourdh'hui, il est tout à fait possible de
programmer sans goto, et, dans l'ensemble, c'est très positif. Ne
serait-ce que pour la facilité de lecture et de mise à jour; surtout
quand le programmeur a oublié quelle "belle passe" qu'un certain goto
8000 placé à ligne 3500 lui a permis de faire, ou que pire encore,
quelqu'un qui ignore tout de la "belle passe" en question doit
modifier le programme.
Pour un petit programme comme celui-ci, le goto ne cause pas grand
mal.
D'un autre côté, tu peux utiliser un tableau en mémoire dans une
boucle conditionnelle, pour tirer tes x nombres, et ensuite transférer
le tableau dans la feuille de calcul. Il y a sans doute des exemples
dans Excelabo.
Sinon, j'avais déjà écris jetire() que tu peux retrouver là. (Il y a
peut-être de meilleurs programmes ailleurs, je ne prétend pas détenir
la vérité):
http://groups.google.com/groups?q=+%22sub+jetire%22+group:microsoft.public.fr.excel+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&c2coff=1&selmì6JWLVnCHA.2420%40TK2MSFTNGP12&rnum=1
"yan" a écrit dans le message de
news:41b34d93$0$9038$Je note le "exit for" que je ne connaissais pas.
Merci a toi
A+
yannick
"Pierre CFI [mvp]" a écrit dans le
message denews:bonjour
tu peux faire un exit for, pour sortir de la boucle ou un exit
sub, pourfinir
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"yan" a écrit dans le message de
news:41b33a28$0$3411$bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un
numéro de 1a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n
dans la 1ercellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe
pasdans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si
c'est lecas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que
lesgoto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
Bonjour,Si j'ai bien compris exit for interromps ma boucle et me fais
sortir
aprèsnext
Exact. C'est également vrai pour les autres "Exit", sauf exit sub.Mais moi je sort et je remonte a boucle:
ma façon de faire nuit-elle a mon programme.
Les puristes ont pris "goto" en grippe, surtout parce qu'avant
l'arrivée des programmes qui facilitaient la programmation
structurée,
les programmes devenaient vite une sorte d'assiette de spaghettis; à
cause, justement, des goto. Mais ils n'avaient rien d'autre.
Avec les langages d'aujourdh'hui, il est tout à fait possible de
programmer sans goto, et, dans l'ensemble, c'est très positif. Ne
serait-ce que pour la facilité de lecture et de mise à jour; surtout
quand le programmeur a oublié quelle "belle passe" qu'un certain
goto
8000 placé à ligne 3500 lui a permis de faire, ou que pire encore,
quelqu'un qui ignore tout de la "belle passe" en question doit
modifier le programme.
Pour un petit programme comme celui-ci, le goto ne cause pas grand
mal.
D'un autre côté, tu peux utiliser un tableau en mémoire dans une
boucle conditionnelle, pour tirer tes x nombres, et ensuite
transférer
le tableau dans la feuille de calcul. Il y a sans doute des exemples
dans Excelabo.
Sinon, j'avais déjà écris jetire() que tu peux retrouver là. (Il y a
peut-être de meilleurs programmes ailleurs, je ne prétend pas
détenir
la vérité):
http://groups.google.com/groups?q=+%22sub+jetire%22+group:microsoft.public.fr.excel+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&c2coff=1&selmì6JWLVnCHA.2420%40TK2MSFTNGP12&rnum=1
"yan" a écrit dans le message de
news:41b34d93$0$9038$Je note le "exit for" que je ne connaissais pas.
Merci a toi
A+
yannick
"Pierre CFI [mvp]" a écrit dans le
message denews:bonjour
tu peux faire un exit for, pour sortir de la boucle ou un exit
sub, pourfinir
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"yan" a écrit dans le message de
news:41b33a28$0$3411$bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un
numéro de 1a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n
dans la 1ercellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v
n'existe
pasdans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si
c'est lecas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu
que
lesgoto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
Bonjour,
Si j'ai bien compris exit for interromps ma boucle et me fais
sortir
après
next
Exact. C'est également vrai pour les autres "Exit", sauf exit sub.
Mais moi je sort et je remonte a boucle:
ma façon de faire nuit-elle a mon programme.
Les puristes ont pris "goto" en grippe, surtout parce qu'avant
l'arrivée des programmes qui facilitaient la programmation
structurée,
les programmes devenaient vite une sorte d'assiette de spaghettis; à
cause, justement, des goto. Mais ils n'avaient rien d'autre.
Avec les langages d'aujourdh'hui, il est tout à fait possible de
programmer sans goto, et, dans l'ensemble, c'est très positif. Ne
serait-ce que pour la facilité de lecture et de mise à jour; surtout
quand le programmeur a oublié quelle "belle passe" qu'un certain
goto
8000 placé à ligne 3500 lui a permis de faire, ou que pire encore,
quelqu'un qui ignore tout de la "belle passe" en question doit
modifier le programme.
Pour un petit programme comme celui-ci, le goto ne cause pas grand
mal.
D'un autre côté, tu peux utiliser un tableau en mémoire dans une
boucle conditionnelle, pour tirer tes x nombres, et ensuite
transférer
le tableau dans la feuille de calcul. Il y a sans doute des exemples
dans Excelabo.
Sinon, j'avais déjà écris jetire() que tu peux retrouver là. (Il y a
peut-être de meilleurs programmes ailleurs, je ne prétend pas
détenir
la vérité):
http://groups.google.com/groups?q=+%22sub+jetire%22+group:microsoft.public.fr.excel+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&c2coff=1&selmì6JWLVnCHA.2420%40TK2MSFTNGP12&rnum=1
"yan" <xyz@wanadoo.fr> a écrit dans le message de
news:41b34d93$0$9038$8fcfb975@news.wanadoo.fr...
Je note le "exit for" que je ne connaissais pas.
Merci a toi
A+
yannick
"Pierre CFI [mvp]" <XXX_pierresalaun@aol.com> a écrit dans le
message de
news: uAieBCv2EHA.1408@TK2MSFTNGP10.phx.gbl...
bonjour
tu peux faire un exit for, pour sortir de la boucle ou un exit
sub, pour
finir
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"yan" <xyz@wanadoo.fr> a écrit dans le message de
news:41b33a28$0$3411$8fcfb975@news.wanadoo.fr...
bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un
numéro de 1
a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n
dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v
n'existe
pas
dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si
c'est le
cas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu
que
les
goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
Bonjour,Si j'ai bien compris exit for interromps ma boucle et me fais
sortir
aprèsnext
Exact. C'est également vrai pour les autres "Exit", sauf exit sub.Mais moi je sort et je remonte a boucle:
ma façon de faire nuit-elle a mon programme.
Les puristes ont pris "goto" en grippe, surtout parce qu'avant
l'arrivée des programmes qui facilitaient la programmation
structurée,
les programmes devenaient vite une sorte d'assiette de spaghettis; à
cause, justement, des goto. Mais ils n'avaient rien d'autre.
Avec les langages d'aujourdh'hui, il est tout à fait possible de
programmer sans goto, et, dans l'ensemble, c'est très positif. Ne
serait-ce que pour la facilité de lecture et de mise à jour; surtout
quand le programmeur a oublié quelle "belle passe" qu'un certain
goto
8000 placé à ligne 3500 lui a permis de faire, ou que pire encore,
quelqu'un qui ignore tout de la "belle passe" en question doit
modifier le programme.
Pour un petit programme comme celui-ci, le goto ne cause pas grand
mal.
D'un autre côté, tu peux utiliser un tableau en mémoire dans une
boucle conditionnelle, pour tirer tes x nombres, et ensuite
transférer
le tableau dans la feuille de calcul. Il y a sans doute des exemples
dans Excelabo.
Sinon, j'avais déjà écris jetire() que tu peux retrouver là. (Il y a
peut-être de meilleurs programmes ailleurs, je ne prétend pas
détenir
la vérité):
http://groups.google.com/groups?q=+%22sub+jetire%22+group:microsoft.public.fr.excel+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&c2coff=1&selmì6JWLVnCHA.2420%40TK2MSFTNGP12&rnum=1
"yan" a écrit dans le message de
news:41b34d93$0$9038$Je note le "exit for" que je ne connaissais pas.
Merci a toi
A+
yannick
"Pierre CFI [mvp]" a écrit dans le
message denews:bonjour
tu peux faire un exit for, pour sortir de la boucle ou un exit
sub, pourfinir
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"yan" a écrit dans le message de
news:41b33a28$0$3411$bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un
numéro de 1a
n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n
dans la 1ercellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v
n'existe
pasdans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si
c'est lecas
je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu
que
lesgoto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un numéro de 1
a n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe pas dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si c'est le
cas je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que les goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un numéro de 1
a n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe pas dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si c'est le
cas je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que les goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un numéro de 1
a n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe pas dans
les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si c'est le
cas je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que les goto
étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
Bonsoir,
Tu as plusieurs solutions
ton goto
un "exit for" et codage après la boucle
embarquer le code dans la boucle
de faire une procédure et de l'appeler Call ma_procedure
Soit dit en passant, je n'ai pas mémorisé ton code, mais si tu répètes
deux fois 2 lignes, c'est dans l'absolu plus rationnelle que de faire une
procédure qui fera 4 lignes...
Idem, le goto est utilisé, notamment pour remonter, il n'y a guère d'autre
solution, sauf à faire comme en C, 50 lignes de code pour éviter un goto,
jugé de mauvais goût, car jadis trop utilisé en Basic par les débutants;
non, quand tu as besoin d'un goto, vas y... lol
:o)
-------
"yan" a écrit dans le message de news:
41b33a28$0$3411$bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un numéro de 1
a n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe pas
dans les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si c'est le
cas je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que les
goto étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
Bonsoir,
Tu as plusieurs solutions
ton goto
un "exit for" et codage après la boucle
embarquer le code dans la boucle
de faire une procédure et de l'appeler Call ma_procedure
Soit dit en passant, je n'ai pas mémorisé ton code, mais si tu répètes
deux fois 2 lignes, c'est dans l'absolu plus rationnelle que de faire une
procédure qui fera 4 lignes...
Idem, le goto est utilisé, notamment pour remonter, il n'y a guère d'autre
solution, sauf à faire comme en C, 50 lignes de code pour éviter un goto,
jugé de mauvais goût, car jadis trop utilisé en Basic par les débutants;
non, quand tu as besoin d'un goto, vas y... lol
:o)
-------
"yan" <xyz@wanadoo.fr> a écrit dans le message de news:
41b33a28$0$3411$8fcfb975@news.wanadoo.fr...
bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un numéro de 1
a n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe pas
dans les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si c'est le
cas je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que les
goto étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick
Bonsoir,
Tu as plusieurs solutions
ton goto
un "exit for" et codage après la boucle
embarquer le code dans la boucle
de faire une procédure et de l'appeler Call ma_procedure
Soit dit en passant, je n'ai pas mémorisé ton code, mais si tu répètes
deux fois 2 lignes, c'est dans l'absolu plus rationnelle que de faire une
procédure qui fera 4 lignes...
Idem, le goto est utilisé, notamment pour remonter, il n'y a guère d'autre
solution, sauf à faire comme en C, 50 lignes de code pour éviter un goto,
jugé de mauvais goût, car jadis trop utilisé en Basic par les débutants;
non, quand tu as besoin d'un goto, vas y... lol
:o)
-------
"yan" a écrit dans le message de news:
41b33a28$0$3411$bonsoir a toutes et tous
J'ai a partir de B2 jusqu'a Bn une liste de personne.
J'ai fait ce bout de code pour affecter en face chaque nom un numéro de 1
a n (sans doublons) de façon aléatoire
Sub toto()
n = [B65536].End(3).Row - 1 'nombre de personnes
Randomize
Cells(2, 1) = Int(n * Rnd) + 1 'nombre aléatoire entre 1 et n dans la 1er
cellule(B2)
For x = 3 To n + 1
boucle:
v = Int(n * Rnd) + 1 'créer un nombre aléatoire entre 1 et n
For t = 2 To x
If Cells(t, 1).Value = v Then GoTo boucle 'vérifie que v n'existe pas
dans les cellules précédentes si oui goto
Next
Cells(x, 1) = v ' rentre la valeur dans la cellule suivante
Next
End Sub
Ce code marche fort bien j'ai ma liste sans doublons mais:
A l'aide d'un if je test si le numéro a déjà été attribué et si c'est le
cas je sort et par un goto(!)
Cette façon de faire me semble peut orthodoxe et j'ai déjà lu que les
goto étaient a éviter, mais je vois pas comment faire autrement
Vos avis et commentaire me seraient précieux
Merci
A+
yannick