Generer des mots à partir de lettres dans Excel [Résolu]

paolo_m 16 Messages postés dimanche 27 novembre 2011Date d'inscription 21 février 2014 Dernière intervention - 10 janv. 2014 à 13:07 - Dernière réponse : paolo_m 16 Messages postés dimanche 27 novembre 2011Date d'inscription 21 février 2014 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

6 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 10/01/2014 à 13:28
0
Merci
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
Commenter la réponse de ucfoutu
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 10 janv. 2014 à 14:41
0
Merci
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
Commenter la réponse de cs_ShayW
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 10/01/2014 à 18:15
0
Merci
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
Commenter la réponse de ucfoutu
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 11 janv. 2014 à 20:32
0
Merci
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.
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 11 janv. 2014 à 20:44
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")
Commenter la réponse de cs_ShayW
paolo_m 16 Messages postés dimanche 27 novembre 2011Date d'inscription 21 février 2014 Dernière intervention - 16 févr. 2014 à 18:51
0
Merci
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.
Commenter la réponse de paolo_m

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.