combinaison de chiffres ou lettres (anagrammes)

C@thy

XLDnaute Barbatruc
Bonjour le forum,

je reprends ici une discussion commencée sur un autre fil, mais dont la tournure nous amène à le partager sur le forum Excel.

donc, dans http://[URL="http://www.excel-downl...es-au-serieux-lexception-de-vous-memes-9.htm"Lien supprimé , je disais ceci :

figurez-vous qu'en cherchant toutes les combinaisons possibles sur 5 caractères, je me suis aperçue de ceci :

CATHY ==> YACHT !!!! Serait-ce un signe du destin? Dans ce cas, ça n'a pas marché ;(

Le 1er qui dit "ça fait aussi CHYTA" (ou CHYAT) reçoit une fessée!!!

Suivent ensuite des développements fort intéressants que nous allons reproduire ci-dessous

Bises

C@thy
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : combinaison de chiffres ou lettres (anagrammes)

Bonsour®
Salut
je suis nouveau dans votre forum magnifique , j'ai tout vos programmes et j'étais ému par vos performances .
je suis un étudiant , je veux un programme XL qui permet de faire tout les possibilités possibles avec les lettres a,b,c
on a des chaines de caractères de 13 lettres composé par ces 3 lettres seulement par exemple :
aaaaaaaaaaaaa
aaabbbcccabcbainsi de suite .
NB : on aura 2197 chaines de caractères
sans connaissance de la fréquence de répartition de ces trois lettres il y aura de nombreux doublons

solutionnent possible via VBA et Dictionnaire...

proposition ci-dessous via formule (anagramme aleatoire) transposable pour 1 à 13 lettres différentes
 

Pièces jointes

  • anagrammes1.xlsx
    25.2 KB · Affichages: 99

torjan

XLDnaute Nouveau
Re : combinaison de chiffres ou lettres (anagrammes)

merci beaucoup Modeste geedee
mais c'est pas ce programme que je cherche :(
je voulais un programme qui m'affiche tout les solutions possibles d'une chaîne de caractère composé par les lettres a , b et c et non la décomposition des chaines de caractère composé par ces lettres :(
 

Modeste geedee

XLDnaute Barbatruc
Re : combinaison de chiffres ou lettres (anagrammes)

Bonsour®
Salut
je suis nouveau dans votre forum magnifique , j'ai tout vos programmes et j'étais ému par vos performances .
je suis un étudiant , je veux un programme XL qui permet de faire tout les possibilités possibles avec les lettres a,b,c
on a des chaines de caractères de 13 lettres composé par ces 3 lettres seulement par exemple :
aaaaaaaaaaaaa
aaabbbcccabcbainsi de suite .
NB : on aura 2197 chaines de caractères

il s'agit donc simplement d'un système de numération ternaire
dans lequel -
- les "0" deviennent "a"
- les "1" deviennent "b"
- les "2" deviennent "c"
le nombre de chaines différentes atteint : 1 594 323
et non 2197 !

13^3 # 3^13
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : combinaison de chiffres ou lettres (anagrammes)

Bonsour® Torjan
je voulais un programme qui m'affiche tout les solutions possibles d'une chaîne de 13 caractères composée par les lettres a , b et c

:cool:
53 fois beep
environ 3 à 4 minutes...

Option Explicit
VB:
Sub torjan()
Dim Idx As Long, ligne As Integer, colonne As Integer, x As Long
'x = 3 ^ 13
colonne = 1
ligne = 1
Idx = 1
ThisWorkbook.Sheets.Add
Application.ScreenUpdating = False
While Idx < 1594323
        If (ligne > 30000) Then
                'Application.ScreenUpdating = True
                Beep
                colonne = colonne + 1
                ligne = 1
                 'Application.ScreenUpdating = False
        End If
        x = Idx
        Cells(ligne, colonne) = Dec2ABC(x)
        ligne = ligne + 1
        Idx = Idx + 1
       'Application.StatusBar = Idx
Wend 'x
Application.ScreenUpdating = True

End Sub
VB:
Function Dec2ABC(Nbr As Long) As String
   Static Digits As Variant
   Dim i As Long, alHolder() As Long, sTemp As String
   Digits = VBA.Array("A", "B", "C")  '_
    i = 0
    Do
        ReDim Preserve alHolder(0 To i)
        alHolder(i) = Nbr Mod 3
        i = i + 1
        Nbr = Nbr \ 3
    Loop While Nbr > 0
    sTemp = ""
    For i = i - 1 To 0 Step -1
        sTemp = sTemp & Digits(alHolder(i))
    Next i
    Dec2ABC = Right(String(12, "A") & sTemp, 13)
End Function
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : combinaison de chiffres ou lettres (anagrammes)

Bonjour à tous.


À Modeste geedee : procédure testée. Sur ma machine, 70 secondes.
1 594 322 réponses trouvées. Il manque "AAAAAAAAAAAAA".

Une autre proposition, moins souple quant à la répartition en lignes et colonnes :​
VB:
Sub tyty()
Const b& = 4 '...pour renvoyer le résultat sur 3^b colonnes et 3^(13-b) lignes.
'Excel2003 : b = 3 à 5 ; Excel 2007-2013 : b = 1 à 8.

    ThisWorkbook.Sheets.Add
    [A1].Resize(3 ^ (13 - b), 3 ^ b).Value = Fonction1(b)
End Sub

Function Fonction1(b&) '...pour renvoyer un tableau de 3^b colonnes et 3^(13-b) lignes.
Dim i&, j&, k&, g&, h&, l&, x$, c$(2), v$()
    c(0) = "a": c(1) = "b": c(2) = "c"
    g = 13 - b: h = 3 ^ g - 1: l = 3 ^ b - 1
    ReDim v(h, l)
    For i = 0 To l
        x = "": k = i
        For j = 1 To b: x = c(k Mod 3) & x: k = k \ 3: Next
        For j = 0 To h: v(j, i) = x: Next
    Next
    For i = 0 To h
        x = "": k = i
        For j = 1 To g: x = c(k Mod 3) & x: k = k \ 3: Next
        For j = 0 To l: v(i, j) = v(i, j) & x: Next
    Next
    Fonction1 = v
End Function
Mais... une seconde pour l'exécution de Fonction1.
Compter 7 ou 8 secondes supplémentaires pour l'affichage. Merci, Bill ! Après les versions bêta, à quand une version finale ?


Bonne soirée.


ℝOGER2327
#7192


Mercredi 11 Pédale 141 (Testament de Saint P. Ucello, le mal illuminé - fête Suprême Quarte)
15 Ventôse An CCXXII, 6,9565h - chèvre
2014-W10-3T16:41:44Z
 

pierrejean

XLDnaute Barbatruc
Re : combinaison de chiffres ou lettres (anagrammes)

Bonjour à tous

Une autre version plus triviale mais néanmoins efficace (environ 3 fois plus rapide

Code:
Application.ScreenUpdating = False
ligne = 1
col = 1
t = Split("a b c")
For n1 = 0 To 2
 For n2 = 0 To 2
   For n3 = 0 To 2
    For n4 = 0 To 2
     For n5 = 0 To 2
      For n6 = 0 To 2
       For n7 = 0 To 2
        For n8 = 0 To 2
         For n9 = 0 To 2
          For n10 = 0 To 2
           For n11 = 0 To 2
            For n12 = 0 To 2
             For n13 = 0 To 2
               x = t(n1) & t(n2) & t(n3) & t(n4) & t(n5) & t(n6) & t(n7) & t(n8) & t(n9) & t(n10) & t(n11) & t(n12) & t(n13)
               Cells(ligne, col) = x
               ligne = ligne + 1
               If ligne > 30000 Then
               col = col + 1
               ligne = 1
               End If
             Next
            Next
           Next
          Next
         Next
        Next
       Next
      Next
     Next
    Next
   Next
  Next
 Next
Application.ScreenUpdating

Arf : j'arrive après ROGER

Roger qui a une machine plutôt rapide:
Chez moi
11 secondes pour tyty
70 secondes pour test
208 pour torjan
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : combinaison de chiffres ou lettres (anagrammes)

Bonsour®
Il manque "AAAAAAAAAAAAA".

;)

:(

Chez moi (en supprimant tout événement de suivi : beep, statusbar)
15 secondes pour tyty
2:03 secondes pour test
2:18 pour torjan

:cool:
plus de 24h pour le demandeur :rolleyes:
on a des chaines de caractères de 13 lettres composé par ces 3 lettres seulement par exemple :
aaaaaaaaaaaaa
aaabbbcccabcbainsi de suite .
NB : on aura 2197 chaines de caractères
mais Roger tu avouera quand même que 15 sec pour 2197 combinaisons c'est long ...:D :D :D
 

ROGER2327

XLDnaute Barbatruc
Re : combinaison de chiffres ou lettres (anagrammes)

Bonjour à tous.


(...)
Roger qui a une machine plutôt rapide:
Chez moi
11 secondes pour tyty
70 secondes pour test
208 pour torjan
À propos des durées d'exécution, j'ai refait des essais et j'obtiens :
  • 9 secondes pour tyty (dont 7 ou 8 rien que pour l'affichage du résultat) ;
  • 58 secondes pour votre test ;
  • 69 secondes pour torjan débarrassé des fioritures.
Ce qui m'étonne, ce ne sont pas les différences absolues de vitesse selon nos machines, mais ce sont les différences relatives. Je ne comprends pas pourquoi torjan est prés de trois fois plus lent que test chez vous, alors que l'écart est de l'ordre de 20% chez moi.
On explique quelquefois ces différences par la présence en arrière plan d'un classeur exécutant des procédures évènementielles, mais dans notre cas, je ne crois pas que ce soit pertinent : test et torjan écrivent tous les deux les résultats cellule par cellule. Donc déclenchent de la même façon d'éventuelles procédures évènementielles. Bref, mystère...


Ceci dit, un autre essai permettant le choix du nombre de lignes d'écriture :​
VB:
Sub tyty3A()
Const Lig& = 30000 '...pour renvoyer le résultat sur Lig lignes.
Dim i&, j&, k&, l&, m&, n&, x$, c$(2), w$()
    c(0) = "a": c(1) = "b": c(2) = "c"
    n = 3 ^ 13
    ReDim w(Lig, n \ Lig)
    For m = 0 To n \ Lig
    For l = 0 To Lig - 1
        If i = n Then Exit For
        x = "": k = i
        For j = 1 To 13: x = c(k Mod 3) & x: k = k \ 3: Next
        w(l, m) = x
        i = i + 1
    Next l, m
    ThisWorkbook.Sheets.Add
    [A1].Resize(Lig, m).Value = w
End Sub
S'exécute chez moi en treize petites secondes (dont, encore, 7 ou 8 pour la dernière ligne).​





(...)
mais Roger tu avouera quand même que 15 sec pour 2197 combinaisons c'est long ...:D :D :D
J'avoue tout ce qu'on veut, mais je ne vois pas le rapport avec ma proposition...​


Bonne journée.


ℝOGER2327
#7193


Jeudi 12 Pédale 141 (Saint Hari Sainteldon, psychohistorien galactique - fête Suprême Quarte)
16 Ventôse An CCXXII, 4,6125h - épinard
2014-W10-4T11:04:12Z
 

pierrejean

XLDnaute Barbatruc
Re : combinaison de chiffres ou lettres (anagrammes)

Re

Je présume que la différence de proportion entre test et torjan est due au fait que je ne m’étais pas permis de toucher au code de Modeste
Il faudra que je teste test et torjan sans fioritures
Par ailleurs , je ferai un essai en passant par un tableau écrit en finale de sub
Mais pour l'instant une p... de bronchite me parasite un tantinet
A + donc
 

ROGER2327

XLDnaute Barbatruc
Re : combinaison de chiffres ou lettres (anagrammes)

Re...


Re

Je présume que la différence de proportion entre test et torjan est due au fait que je ne m’étais pas permis de toucher au code de Modeste
(...)
Je n'avais pas pensé à ça...

Mais je viens de constater une amélioration spectaculaire en plaçant​
VB:
    With Application: .ScreenUpdating = 0: .EnableEvents = 0: .Calculation = -4135: End With
au début et​
VB:
With Application: .Calculation = -4105: .EnableEvents = 1: .ScreenUpdating = 1: End With
à la fin du code, au lieu de​
VB:
Application.ScreenUpdating = False
VB:
Application.ScreenUpdating = True
VB:
Gain de 13 secondes aussi bien sur Test que sur torjan.​


(...)
Par ailleurs , je ferai un essai en passant par un tableau écrit en finale de sub
(...)
Je pense que l'accélération sera importante (mais je n'ai pas vérifié).​


(...)
Mais pour l'instant une p... de bronchite me parasite un tantinet
A + donc
Soignez-vous bien !​


Bonne soirée.


ℝOGER2327
#7194


Jeudi 12 Pédale 141 (Saint Hari Sainteldon, psychohistorien galactique - fête Suprême Quarte)
16 Ventôse An CCXXII, 5,7702h - épinard
2014-W10-4T13:50:55Z
 

pierrejean

XLDnaute Barbatruc
Re : combinaison de chiffres ou lettres (anagrammes)

Re

Voici dans un fichier les 3 propositions (optimisées grâce à ROGER concernant test et torjan)

Palmarès:
tyty3A : 18 secondes
test : 25 secondes
trojan : 55 secondes
 

Pièces jointes

  • torjan.xls
    44 KB · Affichages: 76

ROGER2327

XLDnaute Barbatruc
Re : combinaison de chiffres ou lettres (anagrammes)

Re...


Durée d'exécution constatée chez moi :
  • torjan : 55 secondes
  • test : 18 secondes
  • tyty3A : 13 secondes

Comme prévu, le passage par un tableau apporte une nette amélioration de la vitesse.
À noter qu'avec cette nouvelle version de test, les lignes
Code:
With Application: .ScreenUpdating = 0: .EnableEvents = 0: .Calculation = -4135: End With
'...
With Application: .Calculation = -4105: .EnableEvents = 1: .ScreenUpdating = 1: End With
n'ont pratiquement pas d'influence sur la vitesse.


Ce qui m'amuse beaucoup, c'est l'acharnement que nous mettons à résoudre des problèmes sans intérêt. C'est juste par amour de l'Art, je présume.


Bonne nuit.


ℝOGER2327
#7195


Jeudi 12 Pédale 141 (Saint Hari Sainteldon, psychohistorien galactique - fête Suprême Quarte)
16 Ventôse An CCXXII, 7,3567h - épinard
2014-W10-4T17:39:22Z
 

quillin

XLDnaute Nouveau
Bonjour,

Je suis très intéressé par le fichier « Myna Llarson.xls ».

Je fais partie d’une petite association de badminton et nous organisons des petits tournois.

Je souhaiterais savoir si il serait possible de créer les combinaisons non pas dans une colonne mais sur deux colonne pour affecter les scores a côté de leurs noms respectifs et de manière aléatoire.

Je sais je demande beaucoup de chose mais je fais cela à la main et ça me prend beaucoup de temps.

Pourriez-vous m’aider ?

Merci
 

Statistiques des forums

Discussions
312 176
Messages
2 085 959
Membres
103 065
dernier inscrit
HB ARPF 95