Trouver des mots à partir des lettres

R@chid

XLDnaute Barbatruc
Bonjour les amis,
je me permet de poser la question, espérant que ce que je veux soit réalisable sur Excel.
je veux un code VBA qui peut combiner des lettres pour faire des mots et d'en extraire juste les mots qui fonts partis du dictionnaire français.

je joins un fichier.

Merci d'avance
 

Fichiers joints

R@chid

XLDnaute Barbatruc
Re : Trouver des mots à partir des lettres

Re,
merci l'ami je préfère le faire en VBA.
s'ils existent comme ces sites alors pourquoi les jeux ? il faut annuler sites alors :) pour donner valeur aux jeux.


@ + +
 

david84

XLDnaute Barbatruc
Re : Trouver des mots à partir des lettres

Bonjour Rachid,

le problème dans ta demande n'est pas tant la génération de mots que le traitement de chaque mot pour savoir si c'est un mot français ou pas. Donc avant de traiter de la génération de mots il faut déjà voir si une solution existe pour ensuite traiter correctement les mots générés.

Peut-être une piste à explorer en passant par le vérificateur d'orthographe. Le problème c'est que si l'utilisateur a dans son dictionnaire personnalisé des mots qui ne veulent rien dire ils seront tout de même ramenés.
Autrement dit la procédure ne va pas te dire si tel mot est français ou non mais simplement si ce mot figure dans le dictionnaire chargé de vérifier l'orthographe d'un texte.

Place des mots dans la colonne A et lance la procédure.
Les mots reconnus (car existant dans le dictionnaire) seront recopiés en colonne B.
Code:
Sub test()
Dim R As Range, C As Range, DerLig As Long, i As Long, T() As String
With Worksheets("Feuil1")
  DerLig = .Range("A" & .Cells.Rows.Count).End(xlUp).Row
  Set R = Worksheets("Feuil1").Range("A2:A" & DerLig)
  ReDim T(1 To DerLig)
  For Each C In R
    If MotExiste(C.Value) = True Then
      i = i + 1
      T(i) = C.Value
    End If
  Next C
  .Range("B2").Resize(i) = Application.Transpose(T)
End With
End Sub

Private Function MotExiste(ByVal strMot As String) As Boolean 'http://vb.developpez.com/faqvba/?page=3.1.2#CheckSpell
    MotExiste = Application.CheckSpelling(strMot, , False)
End Function
Après, voir si d'autres dictionnaires sont disponibles.

A+
 

R@chid

XLDnaute Barbatruc
Re : Trouver des mots à partir des lettres

Bonjour @ tous,
salut david84,
merci de ton intervention, mais en fait, la colonne A est réservée aux résultats du code VBA, cela dit que je ne prévois rien placer dans la colonne A d’où la question qu'il faut que le code combine les lettres et m'en sortir les mots du dictionnaire.

Merci
 

Paf

XLDnaute Barbatruc
Re : Trouver des mots à partir des lettres

Bonjour R@chid, Le_Troll_Du_27, david84,

Je ne sais pas si ça répond bien à la demande:
un vieil essai, basé sur une liste de mots récupérés sur un site (lequel ?). Tous les mots n'y sont pas, il y a des mots inutiles ...
On saisit une lettre par textbox (12)
on choisit la longueur des mots à rechercher

La recherche commence à être longue (voire très longue) à partir des mots de 7 lettres.

A+
 

Fichiers joints

david84

XLDnaute Barbatruc
Re : Trouver des mots à partir des lettres

merci de ton intervention, mais en fait, la colonne A est réservée aux résultats du code VBA
D'accord mais bon ça c'est du détail : l'important est de voir si le principe est fonctionnel, et ce avant d'envisager la génération aléatoire de chaînes de texte.
Une autre façon de faire serait peut-être d'utiliser des requêtes à partir d'un site (de type dictionnaire par exemple) qui permet de vérifier si la suite de lettres générée correspond à un mot français.

A+
 

R@chid

XLDnaute Barbatruc
Re : Trouver des mots à partir des lettres

Re,
Salut Paf merci de ta belle réponse, mais ce serait mieux de se référer au dictionnaire et pas une colonne Excel où on tape des mots, si on peut garder la même structure dans mon fichier ce serait impec.

@ david84 :
oui le principe de chercher les mots dans le dictionnaire me convient parfaitement même s'il contient des mots qui sont pas forcement français, mais je ne veux pas me référer à des sites.

Merci @ tous
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Trouver des mots à partir des lettres

tristesse.jpg Bonjour à tous,

Un essai dans le fichier en lien ci-dessous. Cliquez sur le lien ICI puis, dans la fenêtre du navigateur, cliquer dans le bandeau supérieur noir sur l’icône 'Enregistrer sous" tele.jpg

(m'informer si le fichier est inaccessible svp)
 

R@chid

XLDnaute Barbatruc
Re : Trouver des mots à partir des lettres

Bonjour,
merci j'ai bien téléchargé le fichier.
il fonctionne parfaitement, j'ai constaté que tu te réfères à une base de mots sur l'autre onglet.
je garde la solution en espérant en avoir une autre qui cherche directement sur le dictionnaire :)



Mille Merci et merci :)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Trouver des mots à partir des lettres

Bonjour R@chid,

C'était la première fois que j'utilisais Google Drive. C'est bon, ça fonctionne. Merci.

Je ne suis pas certain que construire tous les arrangements des lettres de départ et vérifier que chaque arrangement fait partie ou non du dictionnaire soit plus rapide qu'une méthode de recherche dans une liste de mots. D'autant plus qu'il faut, (selon ma pomme), tenir compte des lettres accentuées, des mots avec un ou plusieurs tirets, etc. ; ce qui augmente considérablement le nombre d’arrangements à tester. Mais quelqu'un démontrera sans doute que je me trompe...
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Trouver des mots à partir des lettres

Bonjour,
je partage l'avis de mapomme : le fait de travailler par rapport à une liste de mots permet d'accélérer la procédure. De plus dans le dictionnaire utilisé dans Excel peuvent figurer des termes qui ne sont pas des mots mais que l'utilisateur a pu accepter à un moment donné.
On pourrait envisager d'inclure dans la procédure l'import du fichier texte qui contient cette liste à partir d'internet mais si son chemin change la procédure ne fonctionne plus.

Après on peut débattre sur le fait de "désaccentuer" les mot pour les traiter car cela a bien entendu une influence sur le résultat (faite et faîte, mat et mât par exemple sont des mots différents) et si je choisis un "î" dans les lettres à prendre en compte la procédure pourrait éventuellement en tenir compte.

A+
 

R@chid

XLDnaute Barbatruc
Re : Trouver des mots à partir des lettres

Bonsoir @ tous,
merci mes chers amis pour votre aide et vos conseils
comme vous le dites c'est vrai que le fait de chercher les mots sur le fichier sera plus rapide que de chercher dans le dictionnaire.
pour le problème des accents il faut juste une grande base de données avec des mots accentués pour faire marcher la macro de l'ami mapomme je pense.


Merci les amis et @ plus
 

david84

XLDnaute Barbatruc
Re : Trouver des mots à partir des lettres

pour le problème des accents il faut juste une grande base de données avec des mots accentués pour faire marcher la macro de l'ami mapomme je pense.
Non il faut que la procédure ne remplace pas les voyelles accentuées par celles non accentuées.
A+
 

R@chid

XLDnaute Barbatruc
Re : Trouver des mots à partir des lettres

Re,
oui david84, je viens de jeter un coup d’œil sur le code de l'ami mapomme et j'ai trouvé qu'il remplace les lettres accentuées par des lettres non accentuées.
 

Marc L

XLDnaute Occasionnel
Re : Trouver des mots à partir des lettres


Bonjour !

Rachid, si tu disposes de Firefox ou de Thunderbird sur l'ordinateur,
tu peux directement utiliser le fichier texte de leur dictionnaire …

 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Trouver des mots à partir des lettres

Bonsoir david84 :), R@chid :), à tous,

pour le problème des accents il faut juste une grande base de données avec des mots accentués pour faire marcher la macro de l'ami mapomme je pense.
Non il faut que la procédure ne remplace pas les voyelles accentuées par celles non accentuées.
A+
J'ai construit la macro dans l'esprit du jeu télévisé "Des chiffres et des lettres" où on ne distingue pas les lettres accentuées des autres.

Si on veut tenir compte des lettres accentuées, il suffit de:

1) remplacer dans la macro :
VB:
Const avecAccent = "à â ä ç é è è ê ê ë ë ë î ï ô ö ù û ü"
Const SansAccent = "à â ä ç é è è ê ê ë ë ë î ï ô ö ù û ü"
par
VB:
Const avecAccent = ""
Const SansAccent = ""
2) rajouter les lettres accentuées minuscules dans la liste de validation nommée Alphabet

Errata : je viens de m'apercevoir qu'il y a des doublons dans la liste des lettres accentuées. On peut les ôter dans la constante avecAccent ainsi que leur lettre correspondante dans la constante sansAccent.

On devrait donc n'avoir que 15 lettres accentuées:

VB:
Const avecAccent = "â ä ç é è ê ë î ï ô ö ù û ü"
Const SansAccent = "a a c e e e e i i o o u u u"
 
Dernière édition:

R@chid

XLDnaute Barbatruc
Re : Trouver des mots à partir des lettres

Bonsoir,
merci mapomme c'est parfait :)

Merci Marc L, on peut aussi télécharger une base sur internet ce serait mieux.

@ + +
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas