XL 2016 Aléa() et doublant

Seddiki_adz

XLDnaute Impliqué
bonjour
le fichier joint obtenu par la formule aléa() mais j'ai des doublant
comment éviter les doublant ?
Merci pour tous
 

Pièces jointes

  • alea.xlsx
    25 KB · Affichages: 8

Sheldor

XLDnaute Occasionnel
Supporter XLD
bonjour,
Les explications sont un peu courtes... en tout cas peu probable d'avoir des doublons avec alea(), il y a des doublon dans la colonne rang (F) ce qui est normal vu que la formule ne regarde que les 10 lignes qui suivent.
en colonne G la formule ne commence pas à chercher en A2 mais se décale au fur et à mesure d'où les #N/A, il faut utiliser des $.
après si c'est juste pour écrire p5 il suffit de faire ="p"& rang( etc, sans s'embêter avec les colonnes A et B

nico
 

Seddiki_adz

XLDnaute Impliqué
bonjour,
Les explications sont un peu courtes... en tout cas peu probable d'avoir des doublons avec alea(), il y a des doublon dans la colonne rang (F) ce qui est normal vu que la formule ne regarde que les 10 lignes qui suivent.
en colonne G la formule ne commence pas à chercher en A2 mais se décale au fur et à mesure d'où les #N/A, il faut utiliser des $.
après si c'est juste pour écrire p5 il suffit de faire ="p"& rang( etc, sans s'embêter avec les colonnes A et B

nico
bonjour
je veut pas des des doublant ni en colonne ni en lignes
es ce si possible?
 

Deadpool_CC

XLDnaute Accro
Bonjour,

Les fonctions alea() et alea.entre.borne() ne permettent pas de faire de la génération de nombres uniques sur une plage

Rapidement je vois 2 solutions possibles :

1) soit tu te fais cela en code VBA car tu as besoin d'automatiser pour la faire tourner de nombreuse fois

2) soit tu contourne en méthode manuelle (tu doit le faire que quelques fois) :
colonne A => génère un Alea.entre.borne(0;999999999999)
Colonne B => tu y mets le N° de ligne
. ensuite tu copies les données et les colles en valeurs (ailleurs)
. tu tri tes valeurs (plage collée) par ordre croissant de la colonne des chiffres aléatoires et dans l'autre colonne (N°ligne) tu auras un ordre aléatoire.

Après d'autres auront peut-être de meilleurs idées ou te proposeront le code VBA qui va bien pour faire cela :)

bon courage
 

Seddiki_adz

XLDnaute Impliqué
Bonjour,

Les fonctions alea() et alea.entre.borne() ne permettent pas de faire de la génération de nombres uniques sur une plage

Rapidement je vois 2 solutions possibles :

1) soit tu te fais cela en code VBA car tu as besoin d'automatiser pour la faire tourner de nombreuse fois

2) soit tu contourne en méthode manuelle (tu doit le faire que quelques fois) :
colonne A => génère un Alea.entre.borne(0;999999999999)
Colonne B => tu y mets le N° de ligne
. ensuite tu copies les données et les colles en valeurs (ailleurs)
. tu tri tes valeurs (plage collée) par ordre croissant de la colonne des chiffres aléatoires et dans l'autre colonne (N°ligne) tu auras un ordre aléatoire.

Après d'autres auront peut-être de meilleurs idées ou te proposeront le code VBA qui va bien pour faire cela :)

bon courage
j'ai rectifier le fechier
mais si possible un code vba
 

Pièces jointes

  • alea.xlsx
    26.7 KB · Affichages: 4

Deadpool_CC

XLDnaute Accro
en fait c'est une autre question ... ou chaque Nom doit être sur max 3 surveillances max et sur horaires différents.
mieux vaut faire un fichier excel de l'attendu pour qu'on t'aide directement sur la bonne solution directement.

de plus en faisant une petite recherche sur le forum, t'aurais pu trouver un sujet équivalent résolu
 

Seddiki_adz

XLDnaute Impliqué
Sub Rnd_N_REP()
Dim myrange As Range, rr, cc, pp As Integer
rr = [B2]: cc = [B1]
pp = rr * cc + 1
' Range("C3").SpecialCells (xlCellTypeLastCell)

Set myrange = Range("C3:E7")
myrange.ClearContents
myrange.Interior.ColorIndex = xlNone

Set myrange = Range("C3", [c3].Offset(rr - 1, cc - 1))
myrange.Interior.ColorIndex = 6
Randomize
For i = 0 To pp - 2
rw = i Mod rr + 3
If rr = cc Then cl = Int(i / cc) + 3 Else cl = i Mod cc + 3
10 x = Int(Rnd * pp)
For Each ce In myrange
If ce = x Or x = 0 Then GoTo 10
Next ce

Cells(rw, cl).Value = x
Next i
[c3].Select
End Sub
 

Seddiki_adz

XLDnaute Impliqué
Sub Rnd_N_REP()
Dim myrange As Range, rr, cc, pp As Integer
rr = [B2]: cc = [B1]
pp = rr * cc + 1
' Range("C3").SpecialCells (xlCellTypeLastCell)

Set myrange = Range("C3:E7")
myrange.ClearContents
myrange.Interior.ColorIndex = xlNone

Set myrange = Range("C3", [c3].Offset(rr - 1, cc - 1))
myrange.Interior.ColorIndex = 6
Randomize
For i = 0 To pp - 2
rw = i Mod rr + 3
If rr = cc Then cl = Int(i / cc) + 3 Else cl = i Mod cc + 3
10 x = Int(Rnd * pp)
For Each ce In myrange
If ce = x Or x = 0 Then GoTo 10
Next ce

Cells(rw, cl).Value = x
Next i
[c3].Select
End Sub
 

Pièces jointes

  • alea4.xlsx
    28.7 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 384
Messages
2 087 841
Membres
103 667
dernier inscrit
datengo