Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

christian.bedere

XLDnaute Occasionnel
Salut le forum

Imaginons une feuille excel avec dans la colonne a:a, la liste des 26 lettres de l'alphabet.
Je souhaiterais savoir s'il existe une macro qui mélangerait toutes ces lettres et afficherait en cellule b3 une lettre tirée au sort.
Si vous pouvez m'aider, alors je vous en remercie infiniment.

Bonne soirée à tous
 
Salut JMPS !

Merci pour cette rapidité digne de la lumière, lol ...
Pourquoi l'encombrer ?? juste parce que je souhaite avoir plusieurs fois certaines lettres, voilà, le but est de confectionner un style de scrabble et il me faut 3 fois le 'x' .....
si tu as une idee de macro, tu seras super sympa, sinon ben, tu es super sympa quand même de m'aider..
à plus tard
Merci
 
Bonsoir Christian, José, 🙂

Une piste avec une autre adaptation du tirage de ce fil :

Lien supprimé

Dans le classeur joint, tu appuies sur CTRL+Maj+R à répétition et dans la colonne D tu auras des lettres qui vont s'empiler, prises au hasard et avec des doublons 😉

Pour faire le ménage dans la colonne D, tu appuies sur CTRL+Maj+O (la lettre).

édition : le plus serait de rajouter dans la colonne D peut-être une macro qui en fonction de la présence d'une lettre donnée éviterai des tirages non compatibles avec ton jeux, mais là on dépasse la question et on rentre dans les probas en fonction des lettres réellement dispo dans le jeu (suivant la langue...).

Bon WE,

Brico [file name=TriAleaCB.zip size=7025]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TriAleaCB.zip[/file]

Message édité par: Bricofire, à: 20/05/2006 20:24
 

Pièces jointes

Code:
[ul][/ul][ol][/ol][li][/li]
 
Bonsoir à tous,

Une autre piste,
dans le cas ou tu entres toutes tes lettres dans un tableau()
tu crées un second tableau de même taille mais de type boleen.
en suite tu utiliser un rnd() (je ne sais pas si sous excel il s'ecrit ainsi (le round pour donner un nombre alléatoire).
se nombre serait l'index de ton tableau
exemple
tableau(1)='a'
tableau(27)='a'

...
 
Bonsoir à tous,

Une autre piste,
dans le cas ou tu entres toutes tes lettres dans un tableau()
tu crées un second tableau de même taille mais de type boleen.
en suite tu utiliser un rnd() (je ne sais pas si sous excel il s'ecrit ainsi (le round pour donner un nombre alléatoire).
se nombre serait l'index de ton tableau
exemple
tableau(1)='a'
tableau(27)='a'

...
 
...
quand 1 est tiré au sort tu affiche tableau(1) soit a si tableau1=false puis tu passe tableau1 à true pour dire qu'il est deja utilisé sinon tu pioche un autre chiffre (ou tu anjoute 1 x foi en attente de tombrer sur un false afin d'afficher une lettre.
(de cette facon si tu ajoutes des boucles sur tableau1 tu peux afficher combien de lettre il reste)
Thomas
 
je suis désolé de prendre tant de place mais le server ne me laisse pas ecrir plus dans un seul message 😱

j'ai une autre idée plus simple
tu crée un tableau de 1 à 26
qui simbolise les lettres de l'alph..
mais a la place des lettres tu indiques le nombre de cette lettre exemple si tu veux 4 a
tu diras tableau(1)=4 soit 1(1er lettre de l'alph
soit 'a'
puis tu fais un rdn
mais la à chaque fois que 1 ton tu retir 1 de ton tableau soir tableau(1)=tableau(1)-1
si toute foi il n'est pas deja à 0 (biensur)
de cette facon tu sais en faisant une boucle combien il te reste de lettre (total et pour chaque lettre)

bien à vous
Thomas
PS : je ne peux plus me logger car le mon nom d'utilisateur du site etait Thomas +ch(174) mais les caracteres spéciau ne passe plus!!
 
Petite demo de ma propo,

Code:
Option Base 1
Dim lettre(26) As Byte
Dim total As Integer
Private Sub CommandButton1_Click()
Dim Myvalue As Byte
Myvalue = Int((26 * Rnd) + 1)
If lettre(Myvalue) > 0 Then
lettre(Myvalue) = lettre(Myvalue) - 1
afficher Myvalue
total = total - 1
Label56 = total
End If
End Sub

Sub afficher(Myvalue As Byte)
Select Case Myvalue
Case 1
Me.Label28 = 'A'
Me.Label30 = lettre(Myvalue)
Case 2
Me.Label28 = 'B'
Me.Label31 = lettre(Myvalue)
Case 3
Me.Label28 = 'C'
Me.Label32 = lettre(Myvalue)
Case 4
Me.Label28 = 'D'
Me.Label33 = lettre(Myvalue)
Case 5
Me.Label28 = 'E'
Me.Label34 = lettre(Myvalue)
Case 6
Me.Label28 = 'F'
Me.Label35 = lettre(Myvalue)
Case 7
Me.Label28 = 'G'
Me.Label36 = lettre(Myvalue)
Case 8
Me.Label28 = 'H'
Me.Label37 = lettre(Myvalue)
Case 9
Me.Label28 = 'I'
Me.Label38 = lettre(Myvalue)
Case 10
Me.Label28 = 'J'
Me.Label39 = lettre(Myvalue)
Case 11
Me.Label28 = 'K'
Me.Label40 = lettre(Myvalue)
Case 12
Me.Label28 = 'L'
Me.Label41 = lettre(Myvalue)
Case 13
Me.Label28 = 'M'
Me.Label42 = lettre(Myvalue)
Case 14
Me.Label28 = 'N'
Me.Label43 = lettre(Myvalue)
Case 15
Me.Label28 = 'O'
Me.Label44 = lettre(Myvalue)
Case 16
Me.Label28 = 'P'
Me.Label45 = lettre(Myvalue)
Case 17
Me.Label28 = 'Q'
Me.Label46 = lettre(Myvalue)
Case 18
Me.Label28 = 'R'
Me.Label47 = lettre(Myvalue)
Case 19
Me.Label28 = 'S'
Me.Label48 = lettre(Myvalue)
Case 20
Me.Label28 = 'T'
Me.Label49 = lettre(Myvalue)
Case 21
Me.Label28 = 'U'
Me.Label50 = lettre(Myvalue)
Case 22
Me.Label28 = 'V'
Me.Label51 = lettre(Myvalue)
Case 23
Me.Label28 = 'W'
Me.Label52 = lettre(Myvalue)
Case 24
Me.Label28 = 'X'
Me.Label53 = lettre(Myvalue)
Case 25
Me.Label28 = 'Y'
Me.Label54 = lettre(Myvalue)
Case 26
Me.Label28 = 'Z'
Me.Label55 = lettre(Myvalue)
Case Else
Me.Label28 = 'Gros bugs'
End Select
End Sub

Private Sub UserForm_Activate()
Dim i As Byte
Me.Label28 = Chr(1) & Chr(2) & Chr(26)
lettre(1) = 5
lettre(2) = 5
lettre(3) = 5
lettre(4) = 5
lettre(5) = 5
lettre(6) = 5
lettre(7) = 5
lettre(8) = 5
lettre(9) = 5
lettre(10) = 5
lettre(11) = 5
lettre(12) = 5
lettre(13) = 5
lettre(14) = 5
lettre(15) = 5
lettre(16) = 5
lettre(17) = 5
lettre(18) = 5
lettre(19) = 5
lettre(20) = 5
lettre(21) = 5
lettre(22) = 5
lettre(23) = 5
lettre(24) = 5
lettre(25) = 5
lettre(26) = 5
For i = 1 To 26
afficher i
total = total + lettre(i)
Next i
Label28 = ''
Label56 = total
End Sub
Bonne nuit
Thomas [file name=XLS.zip size=12935]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/XLS.zip[/file]
 

Pièces jointes

Salut le forum,et Thomas

Félicitations ! Quel boulot ! çà a du te prendre du temps, j'avoue sincèrement ne pas tout comprendre car le vba est assez difficile pour moi mais bravo, tu grand ART...
Je vois ce que je peux faire avec çà. Je n'avais pas pensé à tirer les lettres par USF, mais je vais m'adapter avec çà.
Bon dimanche à vous et encore merci Thomas !
 
Re tout le monde, 🙂

Pour le Fun 🙂
Une petite application simpliste de premier jet au cas du scrabble, sur une base de 102 objets,

On lance un tirage en appuyant sur CTRL+Maj+R

On rétabli l'ordre alpha en appuyant sur CTRL+Maj+O

Après lancement du tirage, on a en colonne B l'historique de 102 pioches venant à bout du jeu de lettres dispo au départ, En faisant un tirage 'à blanc' préliminaire, on peut considérer qu'on a mélangé le jeu LoL !

Bon WE,

Brico [file name=AleaScrabble.zip size=15113]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/AleaScrabble.zip[/file]
 

Pièces jointes

Re-bonjour,

Le Userform n'est pas obligé.
de plus dans le code la plus grande partie n'est là que pout la mise en forme (les compteurs de lettre).

si tu peux joindre ton fichier.
dans la PJ j'ai mis à jour mon fichier car dans l'exemple precedent il ne gerait pas quand la lettre etait epuisé.
de plus j'ai fait un test sur le nombre de lettre restant.

Code:
Private Sub CommandButton1_Click()
Label28 = ''
Dim Myvalue As Byte
ligne:
Myvalue = Int((26 * Rnd) + 1)
If lettre(Myvalue) > 0 Then
lettre(Myvalue) = lettre(Myvalue) - 1
afficher Myvalue
total = total - 1
Label56 = total
ElseIf total = 0 Then
MsgBox 'Plus de lettre'
Exit Sub
Else
GoTo ligne
End If
End Sub

Thomas

PS: si tu veux comprendre le code je peux te le documenter. Je suis désolé mais dans la precipitation je n'ai pas pris le temps de le faire.
PS: si quelqu'un sait comment je peux recupérer mon login pour ce site ? [file name=XLS_20060521131521.zip size=15026]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/XLS_20060521131521.zip[/file]
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
1 K
Réponses
2
Affichages
878
Réponses
6
Affichages
975
Réponses
30
Affichages
3 K
Retour