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 !
C’est encore du bricolage, mais le résultat est plutôt satisfaisant pour l’instant. J’aimerais l’améliorer afin de pouvoir jouer à deux joueurs, avec un comptage des points. Si l’un des joueurs est l’ordinateur, ce n’est pas un problème : on le considère simplement comme un joueur à part entière.
Voici le code corrigé des fonctions PiocheVoyelle et PiocheConsonne.
VB:
Function PiocheVoyelle() As String
Dim i As Integer
Dim Tirage As Integer
PiocheVoyelle = ""
With Sheets(f_CARTES)
If .Range("TOTAL_VOYELLES") <= 0 Then
MsgBox "Il n'y a plus de voyelle dans le sabot !", vbExclamation, "Le Mot le Plus Long"
Else
Randomize
Tirage = Int(.Range("TOTAL_VOYELLES") * Rnd) + 1
' Balayage des voyelles
For i = 1 To Len(VOYELLES)
Select Case True
Case .Cells(6, i) >= Tirage And .Cells(5, i) > 0
'on est sur la voyelle tirée et est dans le sabot
PiocheVoyelle = .Cells(1, i)
.Cells(5, i) = .Cells(5, i) - 1
Application.Speech.Speak PiocheVoyelle
Exit For
Case .Cells(6, i) >= Tirage And .Cells(5, i) = 0
'La voyelle tirée n'est pas dans le sabot => il faut faire un nouveau tirage
'Ce cas ne doit pas arriver
Exit For
Case .Cells(6, i) < Tirage
'ce n'est pas la voyelle tirée => on passe à la suivante
End Select
Next i
End If
End With
End Function
Function PiocheConsonne() As String
Dim i As Integer
Dim Tirage As Integer
PiocheConsonne = ""
With Sheets(f_CARTES)
If .Range("TOTAL_CONSONNES") <= 0 Then
MsgBox "Il n'y a plus de consonne dans le sabot !", vbExclamation, "Le Mot le Plus Long"
Else
Randomize
Tirage = Int(.Range("TOTAL_CONSONNES") * Rnd) + 1
' Balayage des consonnes
For i = Len(VOYELLES) + 1 To Len(VOYELLES) + Len(CONSONNES)
Select Case True
Case .Cells(6, i) >= Tirage And .Cells(5, i) > 0
'on est sur la consonne tirée et est dans le sabot
PiocheConsonne = .Cells(1, i)
.Cells(5, i) = .Cells(5, i) - 1
Application.Speech.Speak PiocheConsonne
Exit For
Case .Cells(6, i) >= Tirage And .Cells(5, i) = 0
'La consonne tirée n'est pas dans le sabot => il faut faire un nouveau tirage
'Ce cas ne doit pas arriver
Exit For
Case .Cells(6, i) < Tirage
'ce n'est pas la consonne tirée => on passe à la suivante
End Select
Next i
End If
End With
End Function
Quelques explications sur le tirage des lettres
Il s'appuie sur le tableau de la feuille Cartes
Le sabot des voyelles / consonnes est constitué des voyelles / consonnes de la ligne 4. Vous pouvez indiquer les valeurs de votre choix (la ligne 3 donne les valeurs correspondant à la fréquence dans les mots de la langue française pour un jeu de 33 voyelles et 70 consonnes).
Le tirage aléatoire est effectué à partir des valeurs de la ligne 5
A chaque tirage d'une Voyelle ou Consonne, la valeur correspondante en ligne 5 est décrémentée de 1 (la lettre tirée est retirée du sabot).
La probabilité de tirer une lettre déjà tirée diminue donc et est nulle si la valeur est 0.
Pour le tirage d'un nouveau mot, Bouton Vider, la ligne 5 est réinitialisée avec les valeurs de la ligne 4 (on reconstitue le sabot).
Voici le code corrigé des fonctions PiocheVoyelle et PiocheConsonne.
VB:
Function PiocheVoyelle() As String
Dim i As Integer
Dim Tirage As Integer
PiocheVoyelle = ""
With Sheets(f_CARTES)
If .Range("TOTAL_VOYELLES") <= 0 Then
MsgBox "Il n'y a plus de voyelle dans le sabot !", vbExclamation, "Le Mot le Plus Long"
Else
Randomize
Tirage = Int(.Range("TOTAL_VOYELLES") * Rnd) + 1
' Balayage des voyelles
For i = 1 To Len(VOYELLES)
Select Case True
Case .Cells(6, i) >= Tirage And .Cells(5, i) > 0
'on est sur la voyelle tirée et est dans le sabot
PiocheVoyelle = .Cells(1, i)
.Cells(5, i) = .Cells(5, i) - 1
Application.Speech.Speak PiocheVoyelle
Exit For
Case .Cells(6, i) >= Tirage And .Cells(5, i) = 0
'La voyelle tirée n'est pas dans le sabot => il faut faire un nouveau tirage
'Ce cas ne doit pas arriver
Exit For
Case .Cells(6, i) < Tirage
'ce n'est pas la voyelle tirée => on passe à la suivante
End Select
Next i
End If
End With
End Function
Function PiocheConsonne() As String
Dim i As Integer
Dim Tirage As Integer
PiocheConsonne = ""
With Sheets(f_CARTES)
If .Range("TOTAL_CONSONNES") <= 0 Then
MsgBox "Il n'y a plus de consonne dans le sabot !", vbExclamation, "Le Mot le Plus Long"
Else
Randomize
Tirage = Int(.Range("TOTAL_CONSONNES") * Rnd) + 1
' Balayage des consonnes
For i = Len(VOYELLES) + 1 To Len(VOYELLES) + Len(CONSONNES)
Select Case True
Case .Cells(6, i) >= Tirage And .Cells(5, i) > 0
'on est sur la consonne tirée et est dans le sabot
PiocheConsonne = .Cells(1, i)
.Cells(5, i) = .Cells(5, i) - 1
Application.Speech.Speak PiocheConsonne
Exit For
Case .Cells(6, i) >= Tirage And .Cells(5, i) = 0
'La consonne tirée n'est pas dans le sabot => il faut faire un nouveau tirage
'Ce cas ne doit pas arriver
Exit For
Case .Cells(6, i) < Tirage
'ce n'est pas la consonne tirée => on passe à la suivante
End Select
Next i
End If
End With
End Function
Quelques explications sur le tirage des lettres
Il s'appuie sur le tableau de la feuille Cartes
Le sabot des voyelles / consonnes est constitué des voyelles / consonnes de la ligne 4. Vous pouvez indiquer les valeurs de votre choix (la ligne 3 donne les valeurs correspondant à la fréquence dans les mots de la langue française pour un jeu de 33 voyelles et 70 consonnes).
Le tirage aléatoire est effectué à partir des valeurs de la ligne 5
A chaque tirage d'une Voyelle ou Consonne, la valeur correspondante en ligne 5 est décrémentée de 1 (la lettre tirée est retirée du sabot).
La probabilité de tirer une lettre déjà tirée diminue donc et est nulle si la valeur est 0.
Pour le tirage d'un nouveau mot, Bouton Vider, la ligne 5 est réinitialisée avec les valeurs de la ligne 4 (on reconstitue le sabot).
Code modifié...merci... en revanche..... lorsqu'il y a plusieurs "mot le plus long", l'énumération est vite très longue....je pense que lister les mots, sans les prononcer serait plus rapide
- 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