XL 2010 Générateur de mots

apt

XLDnaute Impliqué
Bonjour à tous,

J'aimerais utilisé Excel pour générer des mots à partir d'une série de lettres.

Comment puis-je procéder ?

Merci d'avance.
 
Solution
Bonsoir le fil

En cherchant dans les archives, je suis tombé sur cette réponse que j'avais posté en 2011.
J'ai pris le temps de retirer la poussière et de le franciser
Code:
Dim CurrentRow

Sub GetString()
    Dim InString As String
    InString = InputBox("Saisir le texte à permuter")
    If Len(InString) < 2 Then Exit Sub
    If Len(InString) >= 8 Then
        MsgBox "Pas plus de 8 caractères!", vbCritical
        Exit Sub
    Else
        ActiveSheet.Columns(1).Clear
        CurrentRow = 1
        Call GetPermutation("", InString)
    End If
End Sub

Sub GetPermutation(x As String, y As String)
'   The source of this algorithm is unknown...

soan

XLDnaute Barbatruc
Inactif
Bonjour,

c'est le jeu du Scrabble ? ou le jeu "Le Mot le plus long" ? de toutes façons, apparemment, il s'agit de créer des mots à partir de lettres ; mais s'agit-il de mots français compréhensibles (qui font partie d'un dictionnaire de la langue française) ou de n'importe quel « mot » ? dans le second cas, ça revient à trouver tous les anagrammes possibles à partir des lettres proposées ; c'est alors un problème de permutations (au sens statistiques).

c'est juste quelques éléments de réflexion ; remarque : tu devrais mettre un fichier Excel exemple !

je laisse la suite à un autre contributeur. :)

soan
 

Staple1600

XLDnaute Barbatruc
Bonjour

Comme toujours, les archives du forum méritent d'être exploitées
NB: Il y a d'autres discussions sur ce thème.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

En cherchant dans les archives, je suis tombé sur cette réponse que j'avais posté en 2011.
J'ai pris le temps de retirer la poussière et de le franciser
Code:
Dim CurrentRow

Sub GetString()
    Dim InString As String
    InString = InputBox("Saisir le texte à permuter")
    If Len(InString) < 2 Then Exit Sub
    If Len(InString) >= 8 Then
        MsgBox "Pas plus de 8 caractères!", vbCritical
        Exit Sub
    Else
        ActiveSheet.Columns(1).Clear
        CurrentRow = 1
        Call GetPermutation("", InString)
    End If
End Sub

Sub GetPermutation(x As String, y As String)
'   The source of this algorithm is unknown
    Dim i As Integer, j As Integer
    j = Len(y)
    If j < 2 Then
        Cells(CurrentRow, 1) = x & y
        CurrentRow = CurrentRow + 1
    Else
        For i = 1 To j
            Call GetPermutation(x + Mid(y, i, 1), _
            Left(y, i - 1) + Right(y, j - i))
        Next
    End If
End Sub
1er résultat: 120 "mots" (avec présence de doublons)
Une fois, les doublons supprimés (avec Données/Supprimer les doublons)
Il reste 60 valeurs.
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
430
Réponses
2
Affichages
91

Statistiques des forums

Discussions
312 525
Messages
2 089 341
Membres
104 127
dernier inscrit
Tantetine