Generer des mots à partir de lettres dans Excel

Résolu
paolo_m Messages postés 16 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 21 février 2014 - 10 janv. 2014 à 13:07
paolo_m Messages postés 16 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 21 février 2014 - 16 févr. 2014 à 18:51
Bonjour,
Je suis débutant avec le langage VBA Office.
J'aimerai faire un petit programme qui me permet de retrouver tous les mots dans une série de lettres aléatoire. Est il possible d'utiliser le dictionnaire office ?

Merci.
A voir également:

5 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 10/01/2014 à 13:28
Bonjour,
ce "dictionnaire office" n'existe pas vraiment exploitable comme un objet dictionnary.
Tout ce que tu pourrais tenter de faire avec, serait de vérifier (avec Application.checkspelling) que le mot "proposé" ne donne pas lieu à une correction.
Je ne sais pas si tu te rends compte de ce que cela veut dire :
1) le nombre de "mots" composé de n lettres est égal à n! (factorielle n) ... ===>> énorme à partir de 8 lettres. Pour SEULEMENT les "tenter" (et donc les déterminer avant "test") çà va être lent, lent, très lent ...
2) et cette lenteur va se trouver accrue par ton "test"
Tu es mal barré, là ... Surtout si (ce que tu dis être) tu es un débutant.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 janv. 2014 à 14:41
Bonjour

en net j'arrive à obtenir les permutations d'une chaine de 10 letttres en 2 secondes
11 lettres out of memory
en vba je ne sais pas combien cela prendra
l'algo sur lequel je me suis basé
e principe on applique la rotation sur la chaine et les sous chaines
ex 1234

rotation 3 fois
phase initiale 1234 rotation 3 fois
4123
3412
2341
rotation des sous chaines
1 & rotation(234) rotation deux fois
1 423
1 432
la meme chose avec 4123 ,3412,2341
on reprend le premier résultat
"12" & rotation(34) rotation une fois
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 10/01/2014 à 18:15
Bonjour, cs_ShayW,
Je ne sais pas si cette méthode est vraiment plus rapide, mais de toutes manières :
1) on ne peut limiter à 10 la longueur des mots
2) j'espère qu'il ne s'agit pas d'un jeu tel le scrabble, jeu de chiffres et des lettres, etc ... car alors :
--- utiliser application.checkspelling serait une autre source de lenteur et (bien plus gênant) n'accepterait pas des mots sans accent lorsque l'accent est prévu (par exemple : thérapeute)
----ces jeux-là n'obligent pas à utiliser toutes les lettres ===>> il faudrait donc également recenser les autres mots possibles par longueur décroissante ===>> autre source de lenteur

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 janv. 2014 à 20:32
Bonjour Ucfoutu

Si je pense que c'est assez rapide,j'avais trouvé l'algo dans google
en vb6 j'atteins les 8 sec
pour 10 caractères bien sur c'est seulement les permutations sans verifier s'il le mot existe.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 11/01/2014 à 20:55
Bonjour, cs_ShayW,
Restent les autres aspects dont j'ai parlé. Et ils sont très loin d'être négligeables.
Et ne pas espérer pouvoir jouer avec les Ucase ou Lcase ...
Regarde (et continue) :

 MsgBox "Aaa " & Application.CheckSpelling("Aaa")
MsgBox "AAA " & Application.CheckSpelling("AAA")
MsgBox "Thé " & Application.CheckSpelling("Thé")
MsgBox "THE " & Application.CheckSpelling("THE")
MsgBox "THWOWO " & Application.CheckSpelling("THO")
MsgBox "thwowo " & Application.CheckSpelling("thwowo")
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
paolo_m Messages postés 16 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 21 février 2014
16 févr. 2014 à 18:51
Bonjour à tous.
Pour un premier essai je me suis peut être un peu trop emballé.
Merci pour vos réponse même si je n'y comprend pas la moitié.
Pour commencer je me suis lancé dans un petit programme de comptage d'heure de travail.
Encore merci.
0
Rejoignez-nous