Je voudrais générer un nombre aléatoire compris entre 1 et une valeur
définie au début de la macro (variable nbphien). Le but étant de générer
tous les nombres de 1 à 19 par exemple et de les affecter a personne 1,
personne 2 ... personne 19, la personne n n'ayant pas forcément la
valeur n. Je vous joins le code que j'utilise:
Function RandomNumber(Lowest As Integer, Highest As Integer)
Randomize
RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sheets("Pharmaciens").Select
Range("A2:A30").Select
Selection.ClearContents
'Attribution aléatoire d'un numéro à un pharmacien
Dim nbphien As Integer
nbphien = InputBox("Combien de pharmaciens participent au tour de
garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone
géographique concernée")
Dim a As Integer
Dim b As Integer
b = 0
boucle:
a = RandomNumber(1, nbphien)
With Sheets("Pharmaciens").Range("A1:A30")
Set x = .Find(a, LookIn:=xlValues)
If x Is Nothing Then GoTo boucle1
GoTo boucle
End With
boucle1:
Range("A2").Offset(b, 0) = a
b = b + 1
If b = nbphien Then GoTo Calendrier
GoTo boucle
Calendrier:
End Sub
Le probleme renonctré est le suivant:
Le programme génère environ 13 ou 14 valeurs différentes comme il faut
et ensuite, même si le nombre généré n'existe pas dans la plage A2 a
A30, il ne va pas sur la boucle1: et continue sur la boucle:
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LSteph
Bonjour,
..et ca pourrait durer longtemps..!!!
Supposons donc tes pharmaciens en A2:A30 et libre pour numéroter en B2:B30 cela fait 29 pas 19, mais là n'est pas le souci on va aller de 1 à 29 par un nombre aléatoire.
Sub Macro1() Dim i As Long, maval Randomize With Feuil2.[b2:b30] .FormulaLocal = "=alea()" .Copy .PasteSpecial xlValues
For i = 1 To .Count maval = WorksheetFunction.Match(WorksheetFunction.Min([b2:b30]), [b2:b30], 0) .Replace .Cells(maval).Value, i Next
End With End Sub
'LSteph
On 14 mai, 16:43, Guillaume wrote:
Bonjour a tous,
Je voudrais générer un nombre aléatoire compris entre 1 et une vale ur définie au début de la macro (variable nbphien). Le but étant de g énérer tous les nombres de 1 à 19 par exemple et de les affecter a personne 1, personne 2 ... personne 19, la personne n n'ayant pas forcément la valeur n. Je vous joins le code que j'utilise:
Function RandomNumber(Lowest As Integer, Highest As Integer) Randomize RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sheets("Pharmaciens").Select Range("A2:A30").Select Selection.ClearContents 'Attribution aléatoire d'un numéro à un pharmacien Dim nbphien As Integer nbphien = InputBox("Combien de pharmaciens participent au to ur de garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone géographique concernée") Dim a As Integer Dim b As Integer b = 0 boucle: a = RandomNumber(1, nbphien) With Sheets("Pharmaciens").Range("A1:A30") Set x = .Find(a, LookIn:=xlValues) If x Is Nothing Then GoTo boucle1 GoTo boucle End With boucle1: Range("A2").Offset(b, 0) = a b = b + 1 If b = nbphien Then GoTo Calendrier GoTo boucle Calendrier: End Sub
Le probleme renonctré est le suivant:
Le programme génère environ 13 ou 14 valeurs différentes comme il f aut et ensuite, même si le nombre généré n'existe pas dans la plage A 2 a A30, il ne va pas sur la boucle1: et continue sur la boucle:
Pourquoi??
Merci a tous pour votre aide
Guillaume
Bonjour,
..et ca pourrait durer longtemps..!!!
Supposons donc tes pharmaciens en A2:A30 et libre pour numéroter en
B2:B30
cela fait 29 pas 19, mais là n'est pas le souci on va aller de 1 à 29
par un nombre aléatoire.
Sub Macro1()
Dim i As Long, maval
Randomize
With Feuil2.[b2:b30]
.FormulaLocal = "=alea()"
.Copy
.PasteSpecial xlValues
For i = 1 To .Count
maval = WorksheetFunction.Match(WorksheetFunction.Min([b2:b30]),
[b2:b30], 0)
.Replace .Cells(maval).Value, i
Next
End With
End Sub
'LSteph
On 14 mai, 16:43, Guillaume <guima...@cegetel.net> wrote:
Bonjour a tous,
Je voudrais générer un nombre aléatoire compris entre 1 et une vale ur
définie au début de la macro (variable nbphien). Le but étant de g énérer
tous les nombres de 1 à 19 par exemple et de les affecter a personne 1,
personne 2 ... personne 19, la personne n n'ayant pas forcément la
valeur n. Je vous joins le code que j'utilise:
Function RandomNumber(Lowest As Integer, Highest As Integer)
Randomize
RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sheets("Pharmaciens").Select
Range("A2:A30").Select
Selection.ClearContents
'Attribution aléatoire d'un numéro à un pharmacien
Dim nbphien As Integer
nbphien = InputBox("Combien de pharmaciens participent au to ur de
garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone
géographique concernée")
Dim a As Integer
Dim b As Integer
b = 0
boucle:
a = RandomNumber(1, nbphien)
With Sheets("Pharmaciens").Range("A1:A30")
Set x = .Find(a, LookIn:=xlValues)
If x Is Nothing Then GoTo boucle1
GoTo boucle
End With
boucle1:
Range("A2").Offset(b, 0) = a
b = b + 1
If b = nbphien Then GoTo Calendrier
GoTo boucle
Calendrier:
End Sub
Le probleme renonctré est le suivant:
Le programme génère environ 13 ou 14 valeurs différentes comme il f aut
et ensuite, même si le nombre généré n'existe pas dans la plage A 2 a
A30, il ne va pas sur la boucle1: et continue sur la boucle:
Supposons donc tes pharmaciens en A2:A30 et libre pour numéroter en B2:B30 cela fait 29 pas 19, mais là n'est pas le souci on va aller de 1 à 29 par un nombre aléatoire.
Sub Macro1() Dim i As Long, maval Randomize With Feuil2.[b2:b30] .FormulaLocal = "=alea()" .Copy .PasteSpecial xlValues
For i = 1 To .Count maval = WorksheetFunction.Match(WorksheetFunction.Min([b2:b30]), [b2:b30], 0) .Replace .Cells(maval).Value, i Next
End With End Sub
'LSteph
On 14 mai, 16:43, Guillaume wrote:
Bonjour a tous,
Je voudrais générer un nombre aléatoire compris entre 1 et une vale ur définie au début de la macro (variable nbphien). Le but étant de g énérer tous les nombres de 1 à 19 par exemple et de les affecter a personne 1, personne 2 ... personne 19, la personne n n'ayant pas forcément la valeur n. Je vous joins le code que j'utilise:
Function RandomNumber(Lowest As Integer, Highest As Integer) Randomize RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sheets("Pharmaciens").Select Range("A2:A30").Select Selection.ClearContents 'Attribution aléatoire d'un numéro à un pharmacien Dim nbphien As Integer nbphien = InputBox("Combien de pharmaciens participent au to ur de garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone géographique concernée") Dim a As Integer Dim b As Integer b = 0 boucle: a = RandomNumber(1, nbphien) With Sheets("Pharmaciens").Range("A1:A30") Set x = .Find(a, LookIn:=xlValues) If x Is Nothing Then GoTo boucle1 GoTo boucle End With boucle1: Range("A2").Offset(b, 0) = a b = b + 1 If b = nbphien Then GoTo Calendrier GoTo boucle Calendrier: End Sub
Le probleme renonctré est le suivant:
Le programme génère environ 13 ou 14 valeurs différentes comme il f aut et ensuite, même si le nombre généré n'existe pas dans la plage A 2 a A30, il ne va pas sur la boucle1: et continue sur la boucle:
Supposons donc tes pharmaciens en A2:A30 et libre pour numéroter en B2:B30 cela fait 29 pas 19, mais là n'est pas le souci on va aller de 1 à 29 par un nombre aléatoire.
Sub Macro1() Dim i As Long, maval Randomize With Feuil2.[b2:b30] .FormulaLocal = "=alea()" .Copy .PasteSpecial xlValues
For i = 1 To .Count maval = WorksheetFunction.Match(WorksheetFunction.Min([b2:b30]), [b2:b30], 0) .Replace .Cells(maval).Value, i Next
End With End Sub
'LSteph
On 14 mai, 16:43, Guillaume wrote:
> Bonjour a tous,
> Je voudrais générer un nombre aléatoire compris entre 1 et une va leur > définie au début de la macro (variable nbphien). Le but étant de générer > tous les nombres de 1 à 19 par exemple et de les affecter a personne 1, > personne 2 ... personne 19, la personne n n'ayant pas forcément la > valeur n. Je vous joins le code que j'utilise:
> Function RandomNumber(Lowest As Integer, Highest As Integer) > Randomize > RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
> End Function
> Sheets("Pharmaciens").Select > Range("A2:A30").Select > Selection.ClearContents > 'Attribution aléatoire d'un numéro à un pharmacien > Dim nbphien As Integer > nbphien = InputBox("Combien de pharmaciens participent au tour de > garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone > géographique concernée") > Dim a As Integer > Dim b As Integer > b = 0 > boucle: > a = RandomNumber(1, nbphien) > With Sheets("Pharmaciens").Range("A1:A30") > Set x = .Find(a, LookIn:=xlValues) > If x Is Nothing Then GoTo boucle1 > GoTo boucle > End With > boucle1: > Range("A2").Offset(b, 0) = a > b = b + 1 > If b = nbphien Then GoTo Calendrier > GoTo boucle > Calendrier: > End Sub
> Le probleme renonctré est le suivant:
> Le programme génère environ 13 ou 14 valeurs différentes comme il faut > et ensuite, même si le nombre généré n'existe pas dans la plage A2 a > A30, il ne va pas sur la boucle1: et continue sur la boucle:
> Pourquoi??
> Merci a tous pour votre aide
> Guillaume- Masquer le texte des messages précédents -
On 14 mai, 17:26, LSteph <gmlst...@gmail.com> wrote:
Bonjour,
..et ca pourrait durer longtemps..!!!
Supposons donc tes pharmaciens en A2:A30 et libre pour numéroter en
B2:B30
cela fait 29 pas 19, mais là n'est pas le souci on va aller de 1 à 29
par un nombre aléatoire.
Sub Macro1()
Dim i As Long, maval
Randomize
With Feuil2.[b2:b30]
.FormulaLocal = "=alea()"
.Copy
.PasteSpecial xlValues
For i = 1 To .Count
maval = WorksheetFunction.Match(WorksheetFunction.Min([b2:b30]),
[b2:b30], 0)
.Replace .Cells(maval).Value, i
Next
End With
End Sub
'LSteph
On 14 mai, 16:43, Guillaume <guima...@cegetel.net> wrote:
> Bonjour a tous,
> Je voudrais générer un nombre aléatoire compris entre 1 et une va leur
> définie au début de la macro (variable nbphien). Le but étant de générer
> tous les nombres de 1 à 19 par exemple et de les affecter a personne 1,
> personne 2 ... personne 19, la personne n n'ayant pas forcément la
> valeur n. Je vous joins le code que j'utilise:
> Function RandomNumber(Lowest As Integer, Highest As Integer)
> Randomize
> RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
> End Function
> Sheets("Pharmaciens").Select
> Range("A2:A30").Select
> Selection.ClearContents
> 'Attribution aléatoire d'un numéro à un pharmacien
> Dim nbphien As Integer
> nbphien = InputBox("Combien de pharmaciens participent au tour de
> garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone
> géographique concernée")
> Dim a As Integer
> Dim b As Integer
> b = 0
> boucle:
> a = RandomNumber(1, nbphien)
> With Sheets("Pharmaciens").Range("A1:A30")
> Set x = .Find(a, LookIn:=xlValues)
> If x Is Nothing Then GoTo boucle1
> GoTo boucle
> End With
> boucle1:
> Range("A2").Offset(b, 0) = a
> b = b + 1
> If b = nbphien Then GoTo Calendrier
> GoTo boucle
> Calendrier:
> End Sub
> Le probleme renonctré est le suivant:
> Le programme génère environ 13 ou 14 valeurs différentes comme il faut
> et ensuite, même si le nombre généré n'existe pas dans la plage A2 a
> A30, il ne va pas sur la boucle1: et continue sur la boucle:
> Pourquoi??
> Merci a tous pour votre aide
> Guillaume- Masquer le texte des messages précédents -
Supposons donc tes pharmaciens en A2:A30 et libre pour numéroter en B2:B30 cela fait 29 pas 19, mais là n'est pas le souci on va aller de 1 à 29 par un nombre aléatoire.
Sub Macro1() Dim i As Long, maval Randomize With Feuil2.[b2:b30] .FormulaLocal = "=alea()" .Copy .PasteSpecial xlValues
For i = 1 To .Count maval = WorksheetFunction.Match(WorksheetFunction.Min([b2:b30]), [b2:b30], 0) .Replace .Cells(maval).Value, i Next
End With End Sub
'LSteph
On 14 mai, 16:43, Guillaume wrote:
> Bonjour a tous,
> Je voudrais générer un nombre aléatoire compris entre 1 et une va leur > définie au début de la macro (variable nbphien). Le but étant de générer > tous les nombres de 1 à 19 par exemple et de les affecter a personne 1, > personne 2 ... personne 19, la personne n n'ayant pas forcément la > valeur n. Je vous joins le code que j'utilise:
> Function RandomNumber(Lowest As Integer, Highest As Integer) > Randomize > RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
> End Function
> Sheets("Pharmaciens").Select > Range("A2:A30").Select > Selection.ClearContents > 'Attribution aléatoire d'un numéro à un pharmacien > Dim nbphien As Integer > nbphien = InputBox("Combien de pharmaciens participent au tour de > garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone > géographique concernée") > Dim a As Integer > Dim b As Integer > b = 0 > boucle: > a = RandomNumber(1, nbphien) > With Sheets("Pharmaciens").Range("A1:A30") > Set x = .Find(a, LookIn:=xlValues) > If x Is Nothing Then GoTo boucle1 > GoTo boucle > End With > boucle1: > Range("A2").Offset(b, 0) = a > b = b + 1 > If b = nbphien Then GoTo Calendrier > GoTo boucle > Calendrier: > End Sub
> Le probleme renonctré est le suivant:
> Le programme génère environ 13 ou 14 valeurs différentes comme il faut > et ensuite, même si le nombre généré n'existe pas dans la plage A2 a > A30, il ne va pas sur la boucle1: et continue sur la boucle:
> Pourquoi??
> Merci a tous pour votre aide
> Guillaume- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
LSteph
..donc pour généraliser à une plage de longueur variable on nommera la plage à nuuméroter (adjacente aux éléments ou pas)
Sub Macro1() Dim i As Long, maval
With [maplage] .FormulaLocal = "=alea()" .Copy .PasteSpecial xlValues For i = 1 To .Count With WorksheetFunction maval = .Match(.Min([maplage]), _ [maplage], 0) End With .Replace .Cells(maval).Value, i Next End With End Sub
'LSteph
On 14 mai, 16:43, Guillaume wrote:
Bonjour a tous,
Je voudrais générer un nombre aléatoire compris entre 1 et une vale ur définie au début de la macro (variable nbphien). Le but étant de g énérer tous les nombres de 1 à 19 par exemple et de les affecter a personne 1, personne 2 ... personne 19, la personne n n'ayant pas forcément la valeur n. Je vous joins le code que j'utilise:
Function RandomNumber(Lowest As Integer, Highest As Integer) Randomize RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sheets("Pharmaciens").Select Range("A2:A30").Select Selection.ClearContents 'Attribution aléatoire d'un numéro à un pharmacien Dim nbphien As Integer nbphien = InputBox("Combien de pharmaciens participent au to ur de garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone géographique concernée") Dim a As Integer Dim b As Integer b = 0 boucle: a = RandomNumber(1, nbphien) With Sheets("Pharmaciens").Range("A1:A30") Set x = .Find(a, LookIn:=xlValues) If x Is Nothing Then GoTo boucle1 GoTo boucle End With boucle1: Range("A2").Offset(b, 0) = a b = b + 1 If b = nbphien Then GoTo Calendrier GoTo boucle Calendrier: End Sub
Le probleme renonctré est le suivant:
Le programme génère environ 13 ou 14 valeurs différentes comme il f aut et ensuite, même si le nombre généré n'existe pas dans la plage A 2 a A30, il ne va pas sur la boucle1: et continue sur la boucle:
Pourquoi??
Merci a tous pour votre aide
Guillaume
..donc pour généraliser à une plage de longueur variable
on nommera la plage à nuuméroter (adjacente aux éléments ou pas)
Sub Macro1()
Dim i As Long, maval
With [maplage]
.FormulaLocal = "=alea()"
.Copy
.PasteSpecial xlValues
For i = 1 To .Count
With WorksheetFunction
maval = .Match(.Min([maplage]), _
[maplage], 0)
End With
.Replace .Cells(maval).Value, i
Next
End With
End Sub
'LSteph
On 14 mai, 16:43, Guillaume <guima...@cegetel.net> wrote:
Bonjour a tous,
Je voudrais générer un nombre aléatoire compris entre 1 et une vale ur
définie au début de la macro (variable nbphien). Le but étant de g énérer
tous les nombres de 1 à 19 par exemple et de les affecter a personne 1,
personne 2 ... personne 19, la personne n n'ayant pas forcément la
valeur n. Je vous joins le code que j'utilise:
Function RandomNumber(Lowest As Integer, Highest As Integer)
Randomize
RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sheets("Pharmaciens").Select
Range("A2:A30").Select
Selection.ClearContents
'Attribution aléatoire d'un numéro à un pharmacien
Dim nbphien As Integer
nbphien = InputBox("Combien de pharmaciens participent au to ur de
garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone
géographique concernée")
Dim a As Integer
Dim b As Integer
b = 0
boucle:
a = RandomNumber(1, nbphien)
With Sheets("Pharmaciens").Range("A1:A30")
Set x = .Find(a, LookIn:=xlValues)
If x Is Nothing Then GoTo boucle1
GoTo boucle
End With
boucle1:
Range("A2").Offset(b, 0) = a
b = b + 1
If b = nbphien Then GoTo Calendrier
GoTo boucle
Calendrier:
End Sub
Le probleme renonctré est le suivant:
Le programme génère environ 13 ou 14 valeurs différentes comme il f aut
et ensuite, même si le nombre généré n'existe pas dans la plage A 2 a
A30, il ne va pas sur la boucle1: et continue sur la boucle:
..donc pour généraliser à une plage de longueur variable on nommera la plage à nuuméroter (adjacente aux éléments ou pas)
Sub Macro1() Dim i As Long, maval
With [maplage] .FormulaLocal = "=alea()" .Copy .PasteSpecial xlValues For i = 1 To .Count With WorksheetFunction maval = .Match(.Min([maplage]), _ [maplage], 0) End With .Replace .Cells(maval).Value, i Next End With End Sub
'LSteph
On 14 mai, 16:43, Guillaume wrote:
Bonjour a tous,
Je voudrais générer un nombre aléatoire compris entre 1 et une vale ur définie au début de la macro (variable nbphien). Le but étant de g énérer tous les nombres de 1 à 19 par exemple et de les affecter a personne 1, personne 2 ... personne 19, la personne n n'ayant pas forcément la valeur n. Je vous joins le code que j'utilise:
Function RandomNumber(Lowest As Integer, Highest As Integer) Randomize RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sheets("Pharmaciens").Select Range("A2:A30").Select Selection.ClearContents 'Attribution aléatoire d'un numéro à un pharmacien Dim nbphien As Integer nbphien = InputBox("Combien de pharmaciens participent au to ur de garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone géographique concernée") Dim a As Integer Dim b As Integer b = 0 boucle: a = RandomNumber(1, nbphien) With Sheets("Pharmaciens").Range("A1:A30") Set x = .Find(a, LookIn:=xlValues) If x Is Nothing Then GoTo boucle1 GoTo boucle End With boucle1: Range("A2").Offset(b, 0) = a b = b + 1 If b = nbphien Then GoTo Calendrier GoTo boucle Calendrier: End Sub
Le probleme renonctré est le suivant:
Le programme génère environ 13 ou 14 valeurs différentes comme il f aut et ensuite, même si le nombre généré n'existe pas dans la plage A 2 a A30, il ne va pas sur la boucle1: et continue sur la boucle:
Pourquoi??
Merci a tous pour votre aide
Guillaume
LE TROLL
Bonjour,
Pour cmpléter : La génération de nombres peudo-aléatoires décortiquée :
Dim hasard As integer dim maximum as integer dim minimum as integer minimum = x maximum = y Randomize hasard = Int((maximum - minimum + 1) * Rnd + minimum)
Je voudrais générer un nombre aléatoire compris entre 1 et une valeur définie au début de la macro (variable nbphien). Le but étant de générer tous les nombres de 1 à 19 par exemple et de les affecter a personne 1, personne 2 ... personne 19, la personne n n'ayant pas forcément la valeur n. Je vous joins le code que j'utilise:
Function RandomNumber(Lowest As Integer, Highest As Integer) Randomize RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sheets("Pharmaciens").Select Range("A2:A30").Select Selection.ClearContents 'Attribution aléatoire d'un numéro à un pharmacien Dim nbphien As Integer nbphien = InputBox("Combien de pharmaciens participent au tour de garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone géographique concernée") Dim a As Integer Dim b As Integer b = 0 boucle: a = RandomNumber(1, nbphien) With Sheets("Pharmaciens").Range("A1:A30") Set x = .Find(a, LookIn:=xlValues) If x Is Nothing Then GoTo boucle1 GoTo boucle End With boucle1: Range("A2").Offset(b, 0) = a b = b + 1 If b = nbphien Then GoTo Calendrier GoTo boucle Calendrier: End Sub
Le probleme renonctré est le suivant:
Le programme génère environ 13 ou 14 valeurs différentes comme il faut et ensuite, même si le nombre généré n'existe pas dans la plage A2 a A30, il ne va pas sur la boucle1: et continue sur la boucle:
Pourquoi??
Merci a tous pour votre aide
Guillaume
Bonjour,
Pour cmpléter :
La génération de nombres peudo-aléatoires décortiquée :
Dim hasard As integer
dim maximum as integer
dim minimum as integer
minimum = x
maximum = y
Randomize
hasard = Int((maximum - minimum + 1) * Rnd + minimum)
"Guillaume" <guimaric@cegetel.net> a écrit dans le message de
news:OO4hDP38KHA.5848@TK2MSFTNGP06.phx.gbl...
Bonjour a tous,
Je voudrais générer un nombre aléatoire compris entre 1 et une valeur
définie au début de la macro (variable nbphien). Le but étant de générer
tous les nombres de 1 à 19 par exemple et de les affecter a personne 1,
personne 2 ... personne 19, la personne n n'ayant pas forcément la valeur
n. Je vous joins le code que j'utilise:
Function RandomNumber(Lowest As Integer, Highest As Integer)
Randomize
RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sheets("Pharmaciens").Select
Range("A2:A30").Select
Selection.ClearContents
'Attribution aléatoire d'un numéro à un pharmacien
Dim nbphien As Integer
nbphien = InputBox("Combien de pharmaciens participent au tour de
garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone
géographique concernée")
Dim a As Integer
Dim b As Integer
b = 0
boucle:
a = RandomNumber(1, nbphien)
With Sheets("Pharmaciens").Range("A1:A30")
Set x = .Find(a, LookIn:=xlValues)
If x Is Nothing Then GoTo boucle1
GoTo boucle
End With
boucle1:
Range("A2").Offset(b, 0) = a
b = b + 1
If b = nbphien Then GoTo Calendrier
GoTo boucle
Calendrier:
End Sub
Le probleme renonctré est le suivant:
Le programme génère environ 13 ou 14 valeurs différentes comme il faut et
ensuite, même si le nombre généré n'existe pas dans la plage A2 a A30, il
ne va pas sur la boucle1: et continue sur la boucle:
Pour cmpléter : La génération de nombres peudo-aléatoires décortiquée :
Dim hasard As integer dim maximum as integer dim minimum as integer minimum = x maximum = y Randomize hasard = Int((maximum - minimum + 1) * Rnd + minimum)
Je voudrais générer un nombre aléatoire compris entre 1 et une valeur définie au début de la macro (variable nbphien). Le but étant de générer tous les nombres de 1 à 19 par exemple et de les affecter a personne 1, personne 2 ... personne 19, la personne n n'ayant pas forcément la valeur n. Je vous joins le code que j'utilise:
Function RandomNumber(Lowest As Integer, Highest As Integer) Randomize RandomNumber = Int(Rnd * (Highest + 1 - Lowest)) + Lowest
End Function
Sheets("Pharmaciens").Select Range("A2:A30").Select Selection.ClearContents 'Attribution aléatoire d'un numéro à un pharmacien Dim nbphien As Integer nbphien = InputBox("Combien de pharmaciens participent au tour de garde dans ce secteur:", "Saisir le nombre de pharmacien de la zone géographique concernée") Dim a As Integer Dim b As Integer b = 0 boucle: a = RandomNumber(1, nbphien) With Sheets("Pharmaciens").Range("A1:A30") Set x = .Find(a, LookIn:=xlValues) If x Is Nothing Then GoTo boucle1 GoTo boucle End With boucle1: Range("A2").Offset(b, 0) = a b = b + 1 If b = nbphien Then GoTo Calendrier GoTo boucle Calendrier: End Sub
Le probleme renonctré est le suivant:
Le programme génère environ 13 ou 14 valeurs différentes comme il faut et ensuite, même si le nombre généré n'existe pas dans la plage A2 a A30, il ne va pas sur la boucle1: et continue sur la boucle: