Excel et les arrangements en probabilté

  • Initiateur de la discussion Initiateur de la discussion brossard56
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

brossard56

XLDnaute Nouveau
Bonjour à tous,

Je cherche la possibilité de réaliser avec Excel tous les arrangements possibles de 10 parmi 10. Je sais que le nombre d'arrangements est impressionnant (10 ! soit 3 628 800 si mes cours de proba ne sont pas trop loin).
Est-il donc possible de les lister tous avec Excel ?

Merci par avance

Brossard56
 
Re : Excel et les arrangements en probabilté

Bonjour brossard56 et le forum,

Excel peut presque tout !

Avec Excel 2003, tous les arrangements ne pourront pas être affichés dans une seule feuille (manque de colonne) mais c'est possible sur plusieurs feuilles.

Avec Excel 2007 dont le nombre de lignes est de 1 048 576 cela devrait être possible sur 40 colonnes.

A noter également que, selon la puissance de la machine le traitement de ce calcul pourra durer plusieurs minutes.

Maintenant, la question de fond à se poser est : l'affichage de presque 4 millions d'arrangements de la factorielle 10 est-il indispensable ?
 
Dernière édition:
Re : Excel et les arrangements en probabilté

Re,

Un essai de réalisation des arrangements possibles de factorielle 10 m'a amené au résultat suivant :

- 80 minutes de travail avec un matériel correct, (3Mo de mémoire vive et un microprocesseur Intel core quad ;
- fichier final de 198 Mo, vide 22,2 Ko ;
- 90 secondes pour afficher le fichier à l'écran (Deux disques dur en Raid 0) ;
- une relative instabilité dans le déroulement.

Ci-joint le fichier vide.
 

Pièces jointes

Re : Excel et les arrangements en probabilté

Bonjour brossard56, salut Bernard,

Cette macro sur Excel 2003 :

Code:
Private Sub CommandButton1_Click()
Dim tp As Double, T, i As Byte, j As Byte, k As Byte, l As Byte, m As Byte, n As Byte
Dim o As Byte, p As Byte, q As Byte, r As Byte, col As Byte, lig As Long, tablo$(59999)
tp = Timer
T = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
Range("A2:IV65536").ClearContents
For i = 0 To 9
  For j = 0 To 9
    If j <> i Then
      For k = 0 To 9
        If k <> i And k <> j Then
          For l = 0 To 9
            If l <> i And l <> j And l <> k Then
              For m = 0 To 9
                If m <> i And m <> j And m <> k And m <> l Then
                  For n = 0 To 9
                    If n <> i And n <> j And n <> k And n <> l And n <> m Then
                      For o = 0 To 9
                        If o <> i And o <> j And o <> k And o <> l And o <> m And o <> n Then
                          For p = 0 To 9
                            If p <> i And p <> j And p <> k And p <> l And p <> m And p <> n And p <> o Then
                              For q = 0 To 9
                                If q <> i And q <> j And q <> k And q <> l And q <> m And q <> n And q <> o And q <> p Then
                                  For r = 0 To 9
                                    If r <> i And r <> j And r <> k And r <> l And r <> m And r <> n And r <> o And r <> p And r <> q Then
                                      tablo(lig) = T(i) & T(j) & T(k) & T(l) & T(m) & T(n) & T(o) & T(p) & T(q) & T(r)
                                      If lig = 59999 Then
                                        Cells(1, col + 1).Select 'pour suivre la progression
                                        Range("A2:A60001").Offset(, col) = Application.Transpose(tablo)
                                        lig = 0
                                        col = col + 1
                                      Else
                                        lig = lig + 1
                                      End If
                                    End If
                                  Next r
                                End If
                              Next q
                            End If
                          Next p
                        End If
                      Next o
                    End If
                  Next n
                End If
              Next m
            End If
          Next l
        End If
      Next k
    End If
  Next j
Next i
Range("A2").Offset(, col).Resize(lig + 1) = Application.Transpose(tablo) 'la dernière colonne
MsgBox "Durée du traitement : " & Int(Timer - tp) & " s"
End Sub

Fichier joint.

Le résultat est un tableau de 60000 lignes et 61 colonnes.

Il s'affiche colonne par colonne, mais je n'ai pas eu la patience d'aller jusqu'à la 61ème...

A+
 

Pièces jointes

Re : Excel et les arrangements en probabilté

Bonjour le fil, le forum,

J'ai fait tourner l'ordi jusqu'au bout : il a fallu 3h30 (mon ordi a déjà 3 ans, 2 Ghz, 512 k de RAM...).

Le résultat est un fichier de 100 Mo (60000 lignes x 61 colonnes). Zippé il fait encore 30 Mo et ne passera donc pas sur cijoint.fr.

Je pense que la version (2) ci-jointe devrait être un peu plus rapide (tableau de 30000 x 121) car la variable lig est Integer au lieu de Long.

A noter aussi qu'il y avait une petite erreur dans l'affichage de la dernière colonne (une ligne de trop).

A+
 

Pièces jointes

Re : Excel et les arrangements en probabilté

Bonjour à tous

Bravo à Bernard et Job pour votre travail, le genre de code que j'aime, cela peut toujours servir.

Citation:
Oui l'affichage de de tous les arrangements est est indispensable au risque de faire chauffer un peu le PC
Et peut-on savoir la finalité de la chose 😕

A quoi cela peut-il bien servir ?

Alors Jean Marie, c'est l'hopital qui se fout de la charité 🙂.

Quand on voit ce que tu demandes dans le salon 😛!

Ah sinon, Job, avec les touches Windows + Pause, tu aurais su tout de suite quel est la mémoire de ton PC 😉.
 
Dernière édition:
Re : Excel et les arrangements en probabilté

Bonsoir à tous

MJ13
Je pose juste une question sur la finalité de la chose.
(Car statistiquement tout a été dit sur la quête du Graal de la martingale pour trouver les numéros du Loto 😀)

Quand à mes fils du salon , j'indique toujours leur finalité même si celle-ci peut se révéler futile (la finalité principale étant d'apprendre VBA/Excel un peu plus chaque jour grâce aux diverses interprétations du problème posé)

Et je persiste à ne pas comprendre
Code:
Oui l'affichage de de tous les arrangements est est  indispensable
Car qui a le temps et la patience de lire 60000*61 cellules 😕
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
507
Retour