Cerise sur le gâteau:
Dans la liste des combinaisons, retirer celles qui sont correctement
orthographiées!
Merci d'avance
Cl@udy
Voici un exemple :
Voici le nombre de combinaisons possibles à partir
de 5 lettres regroupés dans une chaîne de 3 caractères.
Il s'agit d'étirer la procédure pour le nombre de caractères désirés.
Pour ce qui est : retirer celles qui sont correctement
orthographiées!
Aucune idée de ce que cela veut dire !!!
------------------------------
Sub Combinaison()
Dim t()
Application.ScreenUpdating = False
'Tu choisis les lettres que tu veux et le nombre
'que tu veux aussi. Il doit y avoir de boucle que de lettres
'pour avoir le nombre total de combinaisons possibles.
t = Array("A", "B", "C", "D", "E")
For A = 0 To UBound(t)
x = x + 1
Range("A" & x) = t(A)
For b = 0 To UBound(t)
x = x + 1
Range("A" & x) = t(A) & t(b)
For c = 0 To UBound(t)
x = x + 1
Range("A" & x) = t(A) & t(b) & t(c)
Next
Next
Next
End Sub
---------------------------
Salutations!
"Claudy" <wem...@skynet.be> a écrit dans le message de news: 3d397db3$1$221$ba62...@news.skynet.be...
Si tu dis vrai , et bien, c'est un problème pour toi !
un gars érudit , connaissant la langue française .
Salutations!
"sabatier" <jps...@wanadoo.fr> a écrit dans le message de news: 3D3989B0...@wanadoo.fr...
Au moins 4 macros pour faire des combinaisons/permutations à cette adresse :
http://perso.wanadoo.fr/frederic.sigonneau/Tris.htm
Celle de Myrna Larson pourrait, je pense, te convenir.
Pour retirer des combinaisons renvoyées celles qui correspondent à des mots du
dictionnaire correctement orthographiés (y compris les verbes conjugués), tu
peux te servir de la correction orthographique d'Excel, par exemple dans une
petite fonction personnalisée :
Function MotExiste(Mot$)
MotExiste = Application.CheckSpelling(Mot)
End Function
(fonctionne avec Excel 2002, à vérifier pour les versions antérieures)
FS
--
Frédéric Sigonneau [né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Claudy a écrit :
La fonction motexiste(mot$) fonctionne bien sous excel 2000
Voici la liste (partiel) des mots que le dictionnaire Excel a retenu de
ma petite procédure.
A
AA
AAB
AAD
AB
ABA
ABC
ABE
AC
ACB
ACD
ACE
AD
ADA
ADC
ADE
AE
AEB
AEC
AED
B
BAA
BAC
BAE
BBA
BBC
BBE
BC
BCB
BCD
BCE
BDA
BDC
BDE
BEA
BEC
BEE
C
CA
CAB
CAC
CAD
CB
CBB
CBD
CC
CCB
CCC
CCD
CCE
CD
Maintenant si JPS était assez généreux pour en donner une définition !!!
;-))
Salutations!
"Frédéric Sigonneau" <frederic....@wanadoo.fr> a écrit dans le message de news: 3D39B138...@wanadoo.fr...
Cl@udy
Denis Michon <denis....@cgocable.ca> a écrit dans le message :
q7j_8.1571$gM.1...@charlie.risq.qc.ca...
une proc récursive pour explorer les combinaisons
comme je ne la voie pas sur le forum
revoici ma proposition :
"===========================================
un petite proc récursive.... ça conviendrai ?
attention le résultat correspond à Factorielle(Nb caractères)
pour 16 caractères !!!! ====> 20922789888000 combinaisons
Excel risque d'etre un peu court !!!!
meme à 200 combinaisons par secondes ;-))))
en A1 une chaine de texte
au-dela de 8 caractères (40320 conbinaisons) tu peux allumer une cigarette,
ou commencer à lire le journal !!!!
les anagrammes se retrouvent en colonnes consécutives (10000 anagrammes par
colonne !!!)
"************* ici la procedure ************
Public pile() As Integer, mot as String, debut as String, partiel() As
String
Public ligne as Integer, colonne as Integer
Sub anagramme()
On Error Resume Next
mot = Cells(1, 1).Value
orig = mot
debut = ""
ligne = 1: colonne = 2
n = Len(mot)
ReDim pile(n), partiel(n)
s20:
If Len(mot) = 1 Then GoTo s40
debut = debut + Left(mot, 1)
p = p + 1
partiel(p) = mot
mot = Right(mot, Len(mot) - 1)
GoTo s20
s40:
ligne = ligne + 1
ecrire = debut & mot
If ligne > 10000 Then ligne = 1: colonne = colonne + 1
Cells(ligne + 1, colonne + 1).Value = ecrire
Application.StatusBar = colonne-2 & "x10000 + " & ligne
i = 2
s50:
mot = partiel(p)
p = p - 1
If Len(debut) = 1 Then GoTo s70
debut = Left(debut, Len(debut) - 1)
GoTo s80
s70:
debut = ""
s80:
pile(i) = pile(i) + 1
If pile(i) < i Then GoTo s110
pile(i) = 0
i = i + 1
If i > n Then Exit Sub
GoTo s50
s110:
mot = Right(mot, Len(mot) - 1) + Left(mot, 1)
GoTo s20
End Sub
@+ Modeste geedee
Denis Michon <denis....@cgocable.ca> a écrit dans le message :
KGf_8.1562$gM.1...@charlie.risq.qc.ca...