Lister tous les cas possibles

rico83600

XLDnaute Occasionnel
Bonjour,

j'ai une liste de 8 questions, qu'on peut représenter tout simplement dans les colonnes par 1 , 2, 3, ....
Pour chaque question j'ai 2 réponses possibles : oui ou non

J'ai donc beaucoup de cas possibles, mais je souhaite tous les lister.

Existe t'il un moyen de créer automatiquement la liste de tous les cas possible autre que de tout taper à la main en changent à chaque fois les oui et les non ?

Merci d'avance
 

Dugenou

XLDnaute Barbatruc
Re : Lister tous les cas possibles

Bonjour,

entrer 1 dans une cellule, 2 dans celle de droite, sélectionner les deux cellules, avec la souris tirer vers la droite le carré noir qu'on voit dans le coin en bas à droite de la seconde cellule et ceci jusqu'a atteinde le chiffre voulu (8).
Copier cet ensemble, coller à droite pour avoir 2 fois la série.
Taper oui dans la premiere cellule de la ligne du dessous, selectionner cette cellule et les N suivantes (7 si tu as 8 questions), ctrl+D. Ecrire non en dessous du deuxieme 1, recommencer la manip précédente, trier l'ensemble sur la première ligne.
 

rico83600

XLDnaute Occasionnel
Re : Lister tous les cas possibles

Capturez.jpg

Bonjour,
merci pour cette reponse.
J'ai reussi jusqu'à l'étape "trier" (voir la piece jointe).

Il ne se passe rien quand j'essaye de trier (car je dois mal configurer les paramètres).

Si vous pouvez me donner un dernier coup de main.

Merci encore
 

Pièces jointes

  • Capturez.jpg
    Capturez.jpg
    26.1 KB · Affichages: 81
  • Capturez.jpg
    Capturez.jpg
    26.1 KB · Affichages: 77

job75

XLDnaute Barbatruc
Re : Lister tous les cas possibles

Bonjour rico83600, salut Dugenou,

Il y a évidemment 2^8 cas possibles, soit 256 cas.

Voici une macro assez "bourrin" pour les lister :

Code:
Sub Lister()
Dim a, b, c, d, e, f, g, h, lig, tablo(1 To 256, 1 To 8)
For a = 0 To 1
  For b = 0 To 1
    For c = 0 To 1
      For d = 0 To 1
        For e = 0 To 1
          For f = 0 To 1
            For g = 0 To 1
              For h = 0 To 1
                lig = lig + 1
                tablo(lig, 1) = IIf(a, "Non", "Oui")
                tablo(lig, 2) = IIf(b, "Non", "Oui")
                tablo(lig, 3) = IIf(c, "Non", "Oui")
                tablo(lig, 4) = IIf(d, "Non", "Oui")
                tablo(lig, 5) = IIf(e, "Non", "Oui")
                tablo(lig, 6) = IIf(f, "Non", "Oui")
                tablo(lig, 7) = IIf(g, "Non", "Oui")
                tablo(lig, 8) = IIf(h, "Non", "Oui")
              Next
            Next
          Next
        Next
      Next
    Next
  Next
Next
[B3:I258] = tablo
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Les 256 cas(1).xls
    59.5 KB · Affichages: 57

job75

XLDnaute Barbatruc
Re : Lister tous les cas possibles

Re,

Une autre solution qui utilise la fonction Excel DECBIN.

Les nombres entiers de 0 à 255 sont convertis en nombres binaires en colonne B.

Les chiffres 0 et 1 sont séparés par des espaces, ce qui permet d'utiliser ensuite la commande "Données-Convertir" :

Code:
Sub Lister()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With [B3:B258]
  .FormulaR1C1 = "=TEXT(DECBIN(RC1-1),""0\ 0\ 0\ 0\ 0\ 0\ 0\ 0"")"
  .Value = .Value 'supprime les formules
  .TextToColumns .Cells(1), xlFixedWidth 'Données-Convertir
  .Resize(, 8).Replace 0, "Oui"
  .Resize(, 8).Replace 1, "Non"
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Les 256 cas avec DECBIN(1).xls
    60 KB · Affichages: 39

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Lister tous les cas possibles

Bonjour rico83600, Dugenou, job75,

La même méthode que job75 :rolleyes: mais en formule en B3 à copier vers la droite et vers le bas:
Code:
=SI(STXT(REPT("0";8-NBCAR(DECBIN(LIGNE()-3)))&DECBIN(LIGNE()-3);10-COLONNE();1)="1";"oui";"non")
 

Pièces jointes

  • Les 256 cas avec DECBIN v1.xls
    172.5 KB · Affichages: 94

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Lister tous les cas possibles

Bonjour rico83600, Dugenou, job75,

Une autre formule (plus courte) basée sur la géométrie du tableau en alternant des blocs de "non" et des blocs de "oui". La taille des blocs doublent à chaque colonne.

Formule en B3 à copier vers la droite et vers le bas:
Code:
=SI(MOD((LIGNE()-3);2^(COLONNE()-1))<0,5 * 2^(COLONNE()-1);"non";"oui")
Le -3 correspond au numéro de la première ligne du tableau.
Le -1 correspond au numéro de la première colonne du tableau diminué de 1.
 

Pièces jointes

  • Les 256 cas avec DECBIN v2.xls
    136 KB · Affichages: 44

job75

XLDnaute Barbatruc
Re : Lister tous les cas possibles

Bonjour mapomme, le fil,

OK, moi je reste sur mon DECBIN :

Code:
=-STXT(TEXTE(DECBIN($A3-1);REPT(0;8));B$2;1)
Les cellules sont au format personnalisé ;"Non";"Oui"

Fichier (2).

A+
 

Pièces jointes

  • Les 256 cas avec DECBIN(2).xls
    177.5 KB · Affichages: 74
Dernière édition:

Discussions similaires

Réponses
16
Affichages
561

Statistiques des forums

Discussions
312 321
Messages
2 087 245
Membres
103 498
dernier inscrit
FAHDE