Liste combinaisons

quee

XLDnaute Nouveau
Bonsoir,

Comme je ne suis pas très douée en excel, je viens demander de l' aide sur ce forum.

J' aimerais pouvoir afficher la liste de toutes les combinaisons possibles en prenant 3 chiffres dans la liste des chiffres de 0 à 9.

Exemple :
111
112
113
114
115
116
117
118
119
110
121
122
123
124
125
126
127
128
129
120
131
132
133...

Cordialement,
 

CBernardT

XLDnaute Barbatruc
Re : Liste combinaisons

Bonsoir,

Le nombre des arrangements avec répétition de n objets d'ordre k se calcule comme suit :

Dans l'exemple choisi cela donne = 10^3 =1000

Le fichier joint donne la liste de ces arrangements.
 

Pièces jointes

  • ArrangementsAvecRépétitionV1.zip
    46.3 KB · Affichages: 853

ROGER2327

XLDnaute Barbatruc
Re : Liste combinaisons

Bonsoir à tous
Un code applicable au classeur de CBernardT :
Code:
[COLOR="DarkSlateGray"][B]Sub Arrangements0()
Dim b%, i&, j&, x&, uDat&, oDat()
   b = [Nbs].Value
   uDat = CLng(b ^ 3 - 1)
   ReDim oDat(0 To uDat + 1, 1 To 3)
   For i = 0 To uDat
      x = i
      For j = 3 To 1 Step -1
         oDat(i, j) = x Mod b
         x = (x - x Mod b) / b
      Next j
   Next i
   Application.ScreenUpdating = False
   With Sheets("CALCUL").Cells(3, 1)
      .Parent.Range(.Cells, .Parent.Cells(Rows.Count, 1).End(xlUp).Offset(1, 2)).ClearContents
      .Resize(uDat + 2, 3).Value = oDat
   End With
   Application.ScreenUpdating = True
End Sub[/B][/COLOR]

Dans le classeur joint, ce code :
Code:
[COLOR="DarkSlateGray"][B]Sub Arr(l&, b%)
Dim i&, j&, x&, uDat&, oDat()
   uDat = CLng(b ^ l - 1)
   ReDim oDat(0 To uDat + 1, 1 To WorksheetFunction.Max(1, l))
   For i = 0 To uDat
      x = i
      For j = l To 1 Step -1
         oDat(i, j) = x Mod b
         x = (x - x Mod b) / b
      Next j
   Next i
   With Cells(4, 1)
      Range(.Cells, Cells(Rows.Count, 1).End(xlUp).Offset(1, .End(xlToRight).Column - 1)).ClearContents
      .Resize(uDat + 2, WorksheetFunction.Max(1, l)).Value = oDat
   End With
End Sub[/B][/COLOR]
accepte un nombre d'objets et un nombre d'emplacements variables.​
ROGER2327
#4036


Dimanche 22 Phalle 137 (Dragonne, pyrophage, SS)
15 Fructidor An CCXVIII
2010-W35-3T01:35:44Z
 

Pièces jointes

  • Arrangements_avec_répétition_4036.xls
    18 KB · Affichages: 473
Dernière édition:

quee

XLDnaute Nouveau
Re : Liste combinaisons

Bonjour,

Merci CBernardT. Et si je veux prendre x chiffres au lieu de 3 dans y chiffres au lieu de 10, que dois- je remplacer dans les formules ?

Quand vous dites répétitions, vous parlez d' un chiffre qui apparait plus d' une fois dans une combinaison, n' est-ce pas ?

Cordialement,
 
Dernière édition:

quee

XLDnaute Nouveau
Re : Liste combinaisons

Bonsoir à tous
Un code applicable au classeur de CBernardT :
Code:
[COLOR="DarkSlateGray"][B]Sub Arrangements0()
Dim b%, i&, j&, x&, uDat&, oDat()
   b = [Nbs].Value
   uDat = CLng(b ^ 3 - 1)
   ReDim oDat(0 To uDat + 1, 1 To 3)
   For i = 0 To uDat
      x = i
      For j = 3 To 1 Step -1
         oDat(i, j) = x Mod b
         x = (x - x Mod b) / b
      Next j
   Next i
   Application.ScreenUpdating = False
   With Sheets("CALCUL").Cells(3, 1)
      .Parent.Range(.Cells, .Parent.Cells(Rows.Count, 1).End(xlUp).Offset(1, 2)).ClearContents
      .Resize(uDat + 2, 3).Value = oDat
   End With
   Application.ScreenUpdating = True
End Sub[/B][/COLOR]

Dans le classeur joint, ce code :
Code:
[COLOR="DarkSlateGray"][B]Sub Arr(l&, b%)
Dim i&, j&, x&, uDat&, oDat()
   uDat = CLng(b ^ l - 1)
   ReDim oDat(0 To uDat + 1, 1 To WorksheetFunction.Max(1, l))
   For i = 0 To uDat
      x = i
      For j = l To 1 Step -1
         oDat(i, j) = x Mod b
         x = (x - x Mod b) / b
      Next j
   Next i
   With Cells(4, 1)
      Range(.Cells, Cells(Rows.Count, 1).End(xlUp).Offset(1, .End(xlToRight).Column - 1)).ClearContents
      .Resize(uDat + 2, WorksheetFunction.Max(1, l)).Value = oDat
   End With
End Sub[/B][/COLOR]
accepte un nombre d'objets et un nombre d'emplacements variable.​
ROGER2327
#4036


Dimanche 22 Phalle 137 (Dragonne, pyrophage, SS)
15 Fructidor An CCXVIII
2010-W35-3T01:35:44Z

Bonjour ROGER2327,

Où dois-je insérer ce code ? Faut- il aller dans insertion ou autre commande ?

Cordialement,
 

CBernardT

XLDnaute Barbatruc
Re : Liste combinaisons

Bonjour Quee, ROGER2327 et le forum,

Dans une série d’arrangements avec répétition, le nombre d’apparition d’un chiffre dans un arrangement n’a pas d’importance à condition que chaque arrangement soit différent des autres arrangements constituant la série.

Si tu veux prendre X nombres au lieu de 3 dans Y nombres au lieu de 10, je te conseille de regarder le fichier du dernier post de ROGER 2327 qui est une perle de fichier.
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Liste combinaisons

Re...
(...)
Où dois-je insérer ce code ? Faut- il aller dans insertion ou autre commande ?
(...)
Le classeur Arrangements_avec_répétition_4036.xls (voir le message #4) étant ouvert, vous accédez au code en ouvrant l'éditeur VisualBasic par Alt F11.

Affichez l'éditeur de projet par Ctrl R.

Dans l'éditeur de projet, repérez le dossier VBAProject (Arrangements_avec_répétition_4036.xls).
Ouvrez ce dossier.

Sélectionnez Module1 et affichez le code par F7.

Ce code est appelé par le bouton Calcul de la feuille Feuil1.
Pour afficher le code du bouton Calcul, sélectionnez Feuil1 dans l'éditeur de projet et afficher le code par F7.

Tout ceci sous réserve que Excel2010 se comporte comme Excel2003...​
ROGER2327
#4038


Dimanche 22 Phalle 137 (Dragonne, pyrophage, SS)
15 Fructidor An CCXVIII
2010-W35-3T12:41:15Z
 
Dernière édition:

quee

XLDnaute Nouveau
Re : Liste combinaisons

Bonjour ROGER2327, CBernardT et le forum,

Tout d' abord, désolé de répondre aussi tard.

Merci CBernardT pour votre explication.

Merci ROGER2327 pour votre code. Cependant Windows lance le débogage quand le nombre d' ojbets est trop grand mais bon, je devrais en avoir besoin que pour un nombre d' objets inférieur à 10.

Cordialement,
 

ROGER2327

XLDnaute Barbatruc
Re : Liste combinaisons

Re...
Il y a évidemment des limites pratiques :

____Nb. d'objets_____Nb. d'emplacements_
__________2__________________15_________
__________3__________________10_________
__________4___________________7_________
________5 à 6_________________6_________
________7 à 9_________________5_________
_______10 à 15________________4_________
_______16 à 40________________3_________
______41 à 255________________2_________
_____256 à 32767______________1_________

ROGER2327
#4054


Jeudi 26 Phalle 137 (Disparition de l'Ancien Breughel, incendiaire, SQ)
19 Fructidor An CCXVIII
2010-W35-7T15:53:12Z
 

Statistiques des forums

Discussions
312 330
Messages
2 087 349
Membres
103 526
dernier inscrit
HEC