XL 2016 Trouver nombre de combinaisons de lettres

Etoto

XLDnaute Barbatruc
Hello à tous,

Je demande de nouveau de l'aide sur le forum pour une question que je me pose. Est-ce possible de faire qu'Excel renvoie toutes les combinaisons possible d'anagrammes d'un mot ou nom ?

Exemple :

J'ai sur le fichier joint le prénom "Romain" et j'aimerai qu'Excel en colonne B renvoie tous les anagrammes possible de ce nom (sans doublons) comme j'avait déjà commencé en colonne B. J'avait utilisé la fonction Anagramme de @Magic_Doctor mais comme la fonction ALEA, elle renvoie des doublons.


Merci d'avance
 

Pièces jointes

  • Classeur1.xlsx
    8 KB · Affichages: 11

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Etoto,
Un bon exemple ici :
 

patricktoulon

XLDnaute Barbatruc
Bonjour
perso je suis allé tester un peu les liens que @sylvanu a donné
pour moi aucun ne donne le résultat des combi exact

normalement le nombre de combi est égal à (nombre de lettre) puissance (nombre de lettre )
et aucun ne donne ce résultat

d'autant plus que pour arrêter le moulin il faut connaitre a l'avance le nombre de combinaison
sauf que aucune fonction ne peut gérer un vice et versa dans une chaine
par exemple
la chaine= "Etoto"
les deux dernière syllabes sont identiques l'une avant l'autre et vice et versa donnera le même résultat
conclusion on atteint jamais dans une boucle le nombre final de combi
puisque qu'avec un dico ou une collection l'une des deux occurrences est supprimée
et c'est le serpents qui se mort la queue

on fait quoi on attribut un temps puis on arrete ?; au risque de zapper des combi?

A méditer ;)

pour info voici 3 petites fonctions qui vous donne le nombre de combi et toute les 3 me donnent le même résultat
VB:
Function Nbcombi1(N#, K#) As Double
   'FORMULE PATRICKTOULON DVP
    Dim Nb#, i#: Nb = N
    For i = 1 To K - 1: Nb = Nb * (N - i): Next: Nbcombi1 = Nb
End Function

Function Nbcombi2(base#, N#) As Double
    'FORMULE PATRICKTOULON DVP
    Dim res#, x#, y#
    x = Application.Combin(base, N)
    y = Evaluate("Fact(" & N & " )*Combin(" & N & "," & N & ")")
    Nbcombi2 = Val(x * y)
End Function

Function Nbcombi3(base#, N#) As Double
    'formule de Menhir DVP
   Dim res#
      res = Evaluate("Fact(" & base & ")/Fact(" & base & "-" & N & ")")
    Nbcombi3 = res
End Function

les sub pour tester
VB:
Dim chaine
Sub test1()
'combien  y a il de possibilité de combinaison avec une chaine (texte)
  chaine = "Etoto"
   MsgBox Nbcombi1(Len(chaine), Len(chaine)) & " Combinaison(s)"
End Sub

Sub test2()
'combien  y a il de possibilité de combinaison avec une chaine (texte)
  chaine = "Etoto"
   MsgBox Nbcombi2(Len(chaine), Len(chaine)) & " Combinaison(s)"
End Sub

Sub test3()
  'combien  y a il de possibilité de combinaison avec une chaine (texte)
  chaine = "Etoto"
   MsgBox Nbcombi3(Len(chaine), Len(chaine)) & " Combinaison(s)"
End Sub
 

Etoto

XLDnaute Barbatruc
Hello,
normalement le nombre de combi est égal à (nombre de lettre) puissance (nombre de lettre )
et aucun ne donne ce résultat
Dit-moi si je me trompe mais si on fait avec "Etoto" qui contient 5 lettres cela fait :

nbcombi = 5*4*3*2*1 = 120 combinaisons

Et 5 puissance 5 fait 3'125 combinaisons, ce qui n'est effectivement pas le cas dans le fichier mais l'autre calcul oui.

Non ?

Et la chaine Romain à 720 combinaisons possibles ce qui est le cas dans le fichier joint du lien du post de @sylvanu

Cordialement
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Etoto, bonjour Patrick,

Etes vous sur de votre formule N^N ?
le nombre de combi est égal à (nombre de lettre) puissance (nombre de lettre )
Pour moi le nombre de combi d'un mot de N lettres est de N!. ( soit Fact(N) sous XL )
Avec un mot de 4 lettres on a 4! combi soit 24, et non 4^4 soit 256.

Par contre la redondance est déjà traitée par le dico, par ex Etoto ne donne pas 120 combi mais seulement 30, les doublons ont été supprimés.
 

Etoto

XLDnaute Barbatruc
Pour moi le nombre de combi d'un mot de N lettres est de N!. ( soit Fact(N) sous XL )
Avec un mot de 4 lettres on a 4! combi soit 24, et non 4^4 soit 256.
Oui je suis d'accord avec toi.
Par contre la redondance est déjà traitée par le dico, par ex Etoto ne donne pas 120 combi mais seulement 30, les doublons ont été supprimés.
C'est logique, en effet, une chaine "aaaa" n'a qu'une combinaison.

Cordialement
 

patricktoulon

XLDnaute Barbatruc
re
Dit-moi si je me trompe mais si on fait avec "Etoto" qui contient 5 lettres cela fait :

nbcombi = 5*4*3*2*1 = 120 combinaisons
alors oui le calcul donne bien 120
MAIS!!!!!!!!
et bien non justement c'est pas bon , je viens d'expliquer pourquoi 🤣 🤣
la chaine E /to / to contient deux syllabes identiques
quand dans la boucle tu va mettre la dernière eu milieu et celle du milieu en dernier tu aura comme résultat la meme chaine donc un doublon!!!!!
ce qui fait qu'avec un dico ou une collection il sera supprimé donc on est plus a 120 mais 119
et pareil si to/to tombe devant et allez 118
et pour peux qu'il y ai plusieurs syllabes identiques (+ de 2) dans la chaine c'est -1 -1 - 1 a chaque fois

dis moi maintenant QUAND ARRÊTER LA BOUCLE!!!!!!!
quand le dico exist ou la collection error??
oui sauf que le dico exist ou collection error peut être déclenche par le résultat aléatoire déjà présent dans la collection ou dico mais pas par le problème des syllabes et hop !!! ENCORE WRONG WAY!!!

c'est bon c'est clair pour toi?

a ce jour je ne connais aucune fonction VB(A/S/6) capable de boucler et s’arrêter toute seule sans faire cette méprise

croire que vous allez trouver la fonction magique est une hérésie 🤣
 

Etoto

XLDnaute Barbatruc
quand dans la boucle tu va mettre la dernière eu milieu et celle du milieu en dernier tu aura comme résultat la meme chaine donc un doublon!!!!!
Je sui tout à fait d'accord avec toi, pour "Etoto" cela pose problème mais les chaines que je vais utiliser ont des lettres différentes comme "Milena" cela fait bien 720 combinaisons.

quand le dico exist ou la collection error??
oui sauf que le dico exist ou collection error peut être déclenche par le résultat aléatoire déjà présent dans la collection ou dico mais pas par le problème des syllabes et hop !!! ENCORE WRONG WAY!!!
T'as question est rhétorique 🙃? Sinon, je ne sais pas, si on test avec les deux possibilités pour voir laquelle est la meilleure.

c'est bon c'est clair pour toi?
Oui j'ai bien compris, c'est clair comme de l'eau ;).
 

patricktoulon

XLDnaute Barbatruc
voilà c'est là ou je voulais vous amener
avec les chaine string il est impossible de faire une fonction de combinaison 100% fiable
démarrant et s’arrêtant automatiquement
et croyez moi pas besoins d'aller chercher bien loin
il suffit qu'il y ai deux lettres( voir plus!!!) identiques dans une chaine
quand dans la boucle ces deux lettres seront cote à cote n'importe ou dans le résultat il y aura doublons
exemple: le mot identiquement (pour la blague)contient 3 "e"
d’après vous combien de fois les 3 "e" vont se trouver cote a cote ou meme 2 par 2 dans le moulin

donc la fin automatique ON OUBLIE !!!!! sauf exit forcé mais au risque de zapper des bonnes combi

conclusion je le redis pour du string ca n'existe pas
il existe même des algorhytmes très puissant traduit en vba et même eux se plantent

voila Messieurs ;)
 

Etoto

XLDnaute Barbatruc
voilà c'est là ou je voulais vous amener
avec les chaine string il est impossible de faire une fonction de combinaison 100% fiable
démarrant et s’arrêtant automatiquement
et croyez moi pas besoins d'aller chercher bien loin
il suffit qu'il y ai deux lettres( voir plus!!!) identiques dans une chaine
quand dans la boucle ces deux lettres seront cote à cote n'importe ou dans le résultat il y aura doublons
exemple: le mot identiquement (pour la blague)contient 3 "e"
d’après vous combien de fois les 3 "e" vont se trouver cote a cote ou meme 2 par 2 dans le moulin
Peut-être que ma question est idiote mais dans le fichier que nous a montré le lien du post de @sylvanu, on voit que toutes les combinaisons sont placées en colonne A et si j'écrit "Etoto" dans la fenêtre, il y'a 30 résultats et y'a aucun doublons, donc cela veut dire que le code à bien fait son code non ?
Capture.PNG
 

Discussions similaires

Réponses
9
Affichages
165
Réponses
15
Affichages
773
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 231
Messages
2 086 433
Membres
103 207
dernier inscrit
Michel67