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
 
- 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