Autres Tirage aléatoire de 10 éléments sur 120

C@thy

XLDnaute Barbatruc
Bonjour ke faux rhum... ça faisait longtemps, vous m'avez manqué.

Voilà, ma question semble simple.
Vous connaissez le jeu dicodeclic?
Perso j'adore, mais il y a longtemps qu'on ne le trouve plus dans le commerce.

C'est un heu de 120 cartes comportant les lettres suivantes :

Lettres du DICODÉCLIC :120
A10 B2 C3 D3 E18 F2 G2 H2 I9 J1 K1 L7 M3 N8 O7 P3 Q1
R8 S8 T8 U8 V2 W,X,Y Z

On tire au hasard 10 lettres. Je vous explique juste après comment on y joue.
Pour l'instant je cherche à faire ceci :
Un tirage aléatoire de 10 lettres parmi les 120 puis 10 parmi les 110 qui restent etc... jusqu'à épuisement du stock.
Ça semble plutôt facile ou difficile???
J'ai une vieille version d'XL (2003) à la rigueur je peux emprunter un PC avec la version 2007...

Maintenant j'explique comment on y Joe, mais là le jeu semble difficile à faire car il faut rentrer le dictionnaire du scrabble jusqu'aux mots de 10 lettres..
Donc on tire 10 lettres.
L'idéal est de tout placer en 1 ou plusieurs mots. Sachant que A, O et Y forment un mot à eux tout seuls (je vais A Paris, j'Y vais, Ô rage, ô désespoir)
Si on place tout le 1er mot (le plus long) compte triple : 3 points par lettre, le mot suivant 1 point par lettre, les autres mots 0 points. Si on n'arrive pas à tout placer (il reste des lettres inutilusées) on cherche à faire le mot le plus long possible car il rapporte 1 point par lettre.
On se donne un temos (1 minute 20" par exemple) ensuite on passe les lettres à son voisin qui voit ce qu'il peut faire avec. Et ainsi de suite.
Quand tout le monde a eu tous les tirages on compare ce qu'on a fait et on compte les points obtenus par chacun pour chaque tirage.
Ex. On a le tirage : ACDEEMMNOR
si on fait MONDE MER et CA on a 5x3= 15+ 3 +0 = 18
Si on fait MODEM et ANCRE on a 20 pints
NOMMER et CEDA 22 points
DENOMMER et CA 24 points
RECOMMANDE = 10×3 : 30 Points.

Oili oilà.

J'espère que ce jeu vous plaira.

Biz et merci de m'avoir lu. Merci encore plus grand (immense) si vous pouvez m'aider.

C@thy


J'adore ce jeu.
 

job75

XLDnaute Barbatruc
Bonsoir C@thy, Bernard, JM,

Quel plaisir de te retrouver ici chère C@thy, j'espère que tu vas bien.

Le problème que tu poses est assez simple, vois le fichier joint et cette macro :
VB:
Sub Tirages()
Dim a$, L%, tablo, ub%, i%, r%, j%
a = "AAAAAAAAAABBCCCDDDEEEEEEEEEEEEEEEEEEFFGGHHIIIIIIIIIJKLLLLLLLMMMNNNNNNNNOOOOOOOPPPQRRRRRRRRSSSSSSSSTTTTTTTTUUUUUUUUVVWXYZ"
L = Len(a) '120
Randomize
With [B2:K13] 'tableau 12 x 10, à adapter
    tablo = .Value 'matrice, plus rapide
    ub = UBound(tablo, 2)
    For i = 1 To UBound(tablo)
        For j = 1 To ub
            r = Application.RandBetween(1, L)
            tablo(i, j) = Mid(a, r, 1)
            a = Left(a, r - 1) & Mid(a, r + 1)
            L = L - 1
    Next j, i
    .Value = tablo 'restitution
End With
End Sub
A+
 

Pièces jointes

  • DICODECLIC(1).xlsm
    17.6 KB · Affichages: 18

job75

XLDnaute Barbatruc
Bonjour C@thy, le forum,

Si l'on veut classer alphabétiquement les éléments de chaque ligne on utilisera la macro Quick sort :
VB:
Sub Tirages()
Dim a$, L%, tablo, ub%, b(), i%, r%, j%
a = "AAAAAAAAAABBCCCDDDEEEEEEEEEEEEEEEEEEFFGGHHIIIIIIIIIJKLLLLLLLMMMNNNNNNNNOOOOOOOPPPQRRRRRRRRSSSSSSSSTTTTTTTTUUUUUUUUVVWXYZ"
L = Len(a) '120
Randomize
With [B2:K13] 'tableau 12 x 10, à adapter
    tablo = .Value 'matrice, plus rapide
    ub = UBound(tablo, 2)
    ReDim b(ub - 1) 'matrice tempon
    For i = 1 To UBound(tablo)
        For j = 1 To ub
            r = Application.RandBetween(1, L)
            b(j - 1) = Mid(a, r, 1)
            a = Left(a, r - 1) & Mid(a, r + 1)
            L = L - 1
        Next j
        tri b, 0, ub - 1
        For j = 1 To ub
            tablo(i, j) = b(j - 1)
    Next j, i
    .Value = tablo 'restitution
End With
End Sub

Sub tri(a, gauc, droi) ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
C'est ce que l'on fait en général quand on joue au scrabble.

A+
 

Pièces jointes

  • DICODECLIC(2).xlsm
    19.5 KB · Affichages: 14

Discussions similaires

Statistiques des forums

Discussions
315 132
Messages
2 116 589
Membres
112 799
dernier inscrit
valdeff