J'ai en A1:A50 une liste de chiffre de 1 =E0 50.
J'utilise un bouton "Go" qui effectue un tirage au sort dans cette
liste et me donne le r=E9sultat en F14. Un nouveau numero sort a chaque
clic sur "Go"
J'utilise la macro ci dessous, mais il s'av=E8re que le tirage n'est pas
si al=E9atoire que cela car en fait excel sort toujours la m=EAme s=E9rie
de numeros et toujours dans le m=EAme ordre, m=EAme apr=E8s fermeture et
r=E9ouverture du fichier l'ordre de sortie est toujours identique.
Quelqu'un a t'il une id=E9e? (j'utilise Excel 2003)
Sub GO()
Dim C As New Collection
Dim Cell As Range, Rg As Range
Dim Nb As Integer, Rg1 As Range
Dim NomFeuille As String, R As Integer
Dim Adr1 As String, Adr As String
With Worksheets(NomFeuille)
Set Rg =3D .Range(Adr)
Set Rg1 =3D .Range(Adr1)
End With
Application.ScreenUpdating =3D False
On Error Resume Next
Nb =3D Rg.Rows.Count
For Each Cell In Rg1
Do
R =3D ((Nb * Rnd) + 1)
Cell.Value =3D Rg(R)
Loop Until Cell <> ""
Next
Set Rg =3D Nothing: Set Rg1 =3D Nothing
Sur l'exemple, les bénéfiaciaires sont en colonne A et les ressources en colonne E (démarre en E2):
Sub tirage_sort() Range("E2").Select Randomize Do While ActiveCell <> "" p = Int(Rnd(1) * Application.CountA(Range("A2:A100"))) 'position Do While Range("a2").Offset(p, 1).Value <> "" p = Int(Rnd(1) * Application.CountA(Range("A2:A100"))) Loop '-- Range("a2").Offset(p, 1).Value = ActiveCell Range("a2").Offset(p, 2).Value = Now ActiveCell.Offset(1, 0).Select Loop End Sub
JB
Il faut utiliser Randomize au départ:
Sur l'exemple, les bénéfiaciaires sont en colonne A et les ressources
en colonne E (démarre en E2):
Sub tirage_sort()
Range("E2").Select
Randomize
Do While ActiveCell <> ""
p = Int(Rnd(1) * Application.CountA(Range("A2:A100"))) 'position
Do While Range("a2").Offset(p, 1).Value <> ""
p = Int(Rnd(1) * Application.CountA(Range("A2:A100")))
Loop
'--
Range("a2").Offset(p, 1).Value = ActiveCell
Range("a2").Offset(p, 2).Value = Now
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Sur l'exemple, les bénéfiaciaires sont en colonne A et les ressources en colonne E (démarre en E2):
Sub tirage_sort() Range("E2").Select Randomize Do While ActiveCell <> "" p = Int(Rnd(1) * Application.CountA(Range("A2:A100"))) 'position Do While Range("a2").Offset(p, 1).Value <> "" p = Int(Rnd(1) * Application.CountA(Range("A2:A100"))) Loop '-- Range("a2").Offset(p, 1).Value = ActiveCell Range("a2").Offset(p, 2).Value = Now ActiveCell.Offset(1, 0).Select Loop End Sub
JB
eliaz90
Merci , mais j'utilise déjà randomize et j'ai essayé d'adapter ta macro, ca ne fonctionne pas. Randomize Do While ActiveCell <> "" p = Int(Rnd(1) * Application.CountA(Range("A1:A50"))) 'position Do While Range("a1").Offset(p, 1).Value <> "" p = Int(Rnd(1) * Application.CountA(Range("A1:A50"))) Loop '-- Range("a1").Offset(p, 1).Value = ActiveCell Range("a1").Offset(p, 2).Value = Now ActiveCell.Offset(1, 0).Select Loop
Merci , mais j'utilise déjà randomize et j'ai essayé d'adapter ta
macro, ca ne fonctionne pas.
Randomize
Do While ActiveCell <> ""
p = Int(Rnd(1) * Application.CountA(Range("A1:A50"))) 'position
Do While Range("a1").Offset(p, 1).Value <> ""
p = Int(Rnd(1) * Application.CountA(Range("A1:A50")))
Loop
'--
Range("a1").Offset(p, 1).Value = ActiveCell
Range("a1").Offset(p, 2).Value = Now
ActiveCell.Offset(1, 0).Select
Loop
Merci , mais j'utilise déjà randomize et j'ai essayé d'adapter ta macro, ca ne fonctionne pas. Randomize Do While ActiveCell <> "" p = Int(Rnd(1) * Application.CountA(Range("A1:A50"))) 'position Do While Range("a1").Offset(p, 1).Value <> "" p = Int(Rnd(1) * Application.CountA(Range("A1:A50"))) Loop '-- Range("a1").Offset(p, 1).Value = ActiveCell Range("a1").Offset(p, 2).Value = Now ActiveCell.Offset(1, 0).Select Loop
jb
Avec randomize, j'obtiens bien un tirage différent , même si je ferme Excel (Excel 2002)
http://cjoint.com/?kFopDlSn5b
JB
Avec randomize, j'obtiens bien un tirage différent , même si je ferme
Excel (Excel 2002)
Avec randomize, j'obtiens bien un tirage différent , même si je ferme Excel (Excel 2002)
http://cjoint.com/?kFopDlSn5b
JB
eliaz90
Je pense que l'on ne sait pas compris d'où mon problème, je n'ai pas de ressources spécifiée, je veux juste qu'a chaque clic sur le bouton "GO", un numero compris entre A1 et A50 soit tiré au sort et apparaisse en F14.
Voici la série qui sort a chaque fois quelque soit les circonstances: Clic "GO", F14 = 29 Clic "GO", F14 = 45 Clic "GO", F14 = 16 Clic "GO", F14 = 28 Et ainsi de suite
Cordialement, Eliaz90
Je pense que l'on ne sait pas compris d'où mon problème, je n'ai pas
de ressources spécifiée, je veux juste qu'a chaque clic sur le bouton
"GO", un numero compris entre A1 et A50 soit tiré au sort et
apparaisse en F14.
Voici la série qui sort a chaque fois quelque soit les circonstances:
Clic "GO", F14 = 29
Clic "GO", F14 = 45
Clic "GO", F14 = 16
Clic "GO", F14 = 28
Et ainsi de suite
Je pense que l'on ne sait pas compris d'où mon problème, je n'ai pas de ressources spécifiée, je veux juste qu'a chaque clic sur le bouton "GO", un numero compris entre A1 et A50 soit tiré au sort et apparaisse en F14.
Voici la série qui sort a chaque fois quelque soit les circonstances: Clic "GO", F14 = 29 Clic "GO", F14 = 45 Clic "GO", F14 = 16 Clic "GO", F14 = 28 Et ainsi de suite
Cordialement, Eliaz90
Elliac
Bonjour,
En chargeant la macro complémentaire "Utilitaires d'analyse" et avec la borne maxi en H2 : Range("g3") = "=ALEA.ENTRE.BORNES(1," & Range("h2") & ")"
Camille
"" wrote:
Merci , mais j'utilise déjà randomize et j'ai essayé d'adapter ta macro, ca ne fonctionne pas. Randomize Do While ActiveCell <> "" p = Int(Rnd(1) * Application.CountA(Range("A1:A50"))) 'position Do While Range("a1").Offset(p, 1).Value <> "" p = Int(Rnd(1) * Application.CountA(Range("A1:A50"))) Loop '-- Range("a1").Offset(p, 1).Value = ActiveCell Range("a1").Offset(p, 2).Value = Now ActiveCell.Offset(1, 0).Select Loop
Bonjour,
En chargeant la macro complémentaire "Utilitaires d'analyse" et avec la
borne maxi en H2 :
Range("g3") = "=ALEA.ENTRE.BORNES(1," & Range("h2") & ")"
Camille
"eliaz90@wanadoo.fr" wrote:
Merci , mais j'utilise déjà randomize et j'ai essayé d'adapter ta
macro, ca ne fonctionne pas.
Randomize
Do While ActiveCell <> ""
p = Int(Rnd(1) * Application.CountA(Range("A1:A50"))) 'position
Do While Range("a1").Offset(p, 1).Value <> ""
p = Int(Rnd(1) * Application.CountA(Range("A1:A50")))
Loop
'--
Range("a1").Offset(p, 1).Value = ActiveCell
Range("a1").Offset(p, 2).Value = Now
ActiveCell.Offset(1, 0).Select
Loop
En chargeant la macro complémentaire "Utilitaires d'analyse" et avec la borne maxi en H2 : Range("g3") = "=ALEA.ENTRE.BORNES(1," & Range("h2") & ")"
Camille
"" wrote:
Merci , mais j'utilise déjà randomize et j'ai essayé d'adapter ta macro, ca ne fonctionne pas. Randomize Do While ActiveCell <> "" p = Int(Rnd(1) * Application.CountA(Range("A1:A50"))) 'position Do While Range("a1").Offset(p, 1).Value <> "" p = Int(Rnd(1) * Application.CountA(Range("A1:A50"))) Loop '-- Range("a1").Offset(p, 1).Value = ActiveCell Range("a1").Offset(p, 2).Value = Now ActiveCell.Offset(1, 0).Select Loop
PS : juste la valeur Sub zz2() [F14] = [indirect("A" &int(rand()*(51-1)+1))] end sub
PSbis : tu fais l'économie (intéressante) des macros complémentaires AV
eliaz90
Merci , mais la methode de camille "ALEA.ENTRE.BORNES" me convient mieux car je ne fais pas un tirage uniquement sur des valeurs entre 1 et 50. Je fais également un tirage sur des années (entre 1955 et 2004) et dans ce cas cela devient:
Merci , mais la methode de camille "ALEA.ENTRE.BORNES" me convient
mieux car je ne fais pas un tirage uniquement sur des valeurs entre 1
et 50.
Je fais également un tirage sur des années (entre 1955 et 2004) et
dans ce cas cela devient:
Merci , mais la methode de camille "ALEA.ENTRE.BORNES" me convient mieux car je ne fais pas un tirage uniquement sur des valeurs entre 1 et 50. Je fais également un tirage sur des années (entre 1955 et 2004) et dans ce cas cela devient:
Merci , mais la methode de camille "ALEA.ENTRE.BORNES" me convient mieux car je ne fais pas un tirage uniquement sur des valeurs entre 1 et 50. Je fais également un tirage sur des années (entre 1955 et 2004) et dans ce cas cela devient:
Pfffff..... Je pense (et même je suis sur) que tu n'as pas du tout testé la solution proposée qui fait un tirage aléatoire des valeurs qui sont en A1:A50, qu'elles soient numériques ou texte, et ceci, sans faire appel à une macro complémentaire, qui, si elle n'est pas installée, entrainera un gros plouf !
AV
Merci , mais la methode de camille "ALEA.ENTRE.BORNES" me convient
mieux car je ne fais pas un tirage uniquement sur des valeurs entre 1
et 50.
Je fais également un tirage sur des années (entre 1955 et 2004) et
dans ce cas cela devient:
Pfffff.....
Je pense (et même je suis sur) que tu n'as pas du tout testé la solution
proposée qui fait un tirage aléatoire des valeurs qui sont en A1:A50, qu'elles
soient numériques ou texte, et ceci, sans faire appel à une macro
complémentaire, qui, si elle n'est pas installée, entrainera un gros plouf !
Merci , mais la methode de camille "ALEA.ENTRE.BORNES" me convient mieux car je ne fais pas un tirage uniquement sur des valeurs entre 1 et 50. Je fais également un tirage sur des années (entre 1955 et 2004) et dans ce cas cela devient:
Pfffff..... Je pense (et même je suis sur) que tu n'as pas du tout testé la solution proposée qui fait un tirage aléatoire des valeurs qui sont en A1:A50, qu'elles soient numériques ou texte, et ceci, sans faire appel à une macro complémentaire, qui, si elle n'est pas installée, entrainera un gros plouf !