XL 2016 Le Mot Le Plus Long

  • Initiateur de la discussion Initiateur de la discussion halecs93
  • Date de début Date de début

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 !

halecs93

XLDnaute Impliqué
Bonjour à tout le monde....

J'ai tenté de créer un fichier "le mot le plus long"....celui-ci doit permettre de trouver les solutions, après un tirage aléatoire", de 8 lettres de trouver le mot le plus long selon un dictionnaire (feuille nommée DICO).... mais c'est à moitié (au quart, au 1eme satisfaisant etc....car ça ne prend pas en compte les conjugaisons etc)

Une autre idée ?

Merci
 

Pièces jointes

Bonsoir


VB:
Function SupprimerAccents(Texte As String) As String
    Dim Accents As String, SansAccents As String
    Dim i As Long

    Accents = "àâäáãåçèéêëìíîïñòóôöõùúûüýÿœæÀÂÄÁÃÅÇÈÉÊËÌÍÎÏÑÒÓÔÖÕÙÚÛÜÝŸŒÆ"
    SansAccents = "aaaaaaceeeeiiiinooooouuuuyyoeaeAAAAAACEEEEIIIINOOOOOUUUUYYOEAE"

    For i = 1 To Len(Accents)
        Texte = Replace(Texte, Mid(Accents, i, 1), Mid(SansAccents, i, 1))
    Next i

    SupprimerAccents = Texte
End Function

Function MotPossible(Mot As String, Lettres As String) As Boolean
    Dim Temp As String
    Dim i As Long

    Mot = SupprimerAccents(Mot)
    Lettres = SupprimerAccents(Lettres)

    Temp = Lettres

    For i = 1 To Len(Mot)
        If InStr(Temp, Mid(Mot, i, 1)) = 0 Then
            MotPossible = False
            Exit Function
        Else
            Temp = Replace(Temp, Mid(Mot, i, 1), "", , 1)
        End If
    Next i

    MotPossible = True
End Function

Sub TrouverMotPlusLong()

    Dim ws As Worksheet
    Dim cell As Range
    Dim Mot As String
    Dim MeilleurMot As String
    Dim Tirage As String

    Set wsJeu = Worksheets("Feuil1") ' feuille du tirage A1:H1
    Set ws = Worksheets("DICO")  ' feuille du dictionnaire
'
    ' Récupérer les lettres tirées
    For i = 1 To 8
        Tirage = Tirage & wsJeu.Cells(1, i).Value
    Next i

    MeilleurMot = ""

    For Each cell In ws.UsedRange.Cells

        If cell.Value <> "" Then
            Mot = UCase(cell.Value)

            If Len(Mot) <= 8 Then
                If MotPossible(Mot, Tirage) Then
                    If Len(Mot) > Len(MeilleurMot) Then
                        MeilleurMot = Mot
                    End If
                End If
            End If

        End If
    Next cell

    MsgBox "Mot le plus long trouvé : " & MeilleurMot & _
           vbCrLf & "Longueur : " & Len(MeilleurMot)

End Sub
 
Selon Gemeni pour accélérer la recherche il faut substituer les lettres par les nombres primaires ,Cela semble bien fonctionner si le but est de test la présence d'une liste de caractères dans n'importe quel ordre et n'importe quelle position:
Avant de lancer le test, j'ai placé la liste des mots et leurs produits primaire dans un fichier texte séparé car le fichier Excel devient volumineux impossible de l’envoyer donc importer le fichier à partir de Données externes et placer-le dans la feuille Dico2 cellule A1.
 

Pièces jointes

Selon Gemeni pour accélérer la recherche il faut substituer les lettres par les nombres primaires ,Cela semble bien fonctionner si le but est de test la présence d'une liste de caractères dans n'importe quel ordre et n'importe quelle position:
Avant de lancer le test, j'ai placé la liste des mots et leurs produits primaire dans un fichier texte séparé car le fichier Excel devient volumineux impossible de l’envoyer donc importer le fichier à partir de Données externes et placer-le dans la feuille Dico2 cellule A1.
heu...pas tout compris
 
- 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
12
Affichages
1 K
Retour