[B]Combinaisons de chiffres de 6 colonnes[/B]

keisia

XLDnaute Nouveau
Bonjour à tous!

J'ai réalisé un questionnaire sur excel, il y a 6 questions, pour la 1ère question 6 possibilités de réponse, pour la 2ème question 3 possibilités de réponse et pour les 4 autres 2 possibilités de réponse. Ma question est comment générer toutes les combinaisons de réponses possibles grâce à une macro (et là c'est le drame je n'y comprend rien :( )

Merci de jeter un oeil à mon fichier joint pour les amateurs de VBA!

MERCI INFINIMENT!
 

Pièces jointes

  • combinaisons.xls
    16.5 KB · Affichages: 97
  • combinaisons.xls
    16.5 KB · Affichages: 102
  • combinaisons.xls
    16.5 KB · Affichages: 104
G

Guest

Guest
Re : Combinaisons de chiffres de 6 colonnes

Bonjour,
Code:
Sub Combinaisons()
    Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer, f As Integer
    Dim t As String
    For a = 1 To 6
        For b = 1 To 3
            For c = 1 To 2
                For d = 1 To 2
                    For e = 1 To 2
                        For f = 1 To 2
                        Range("O" & Rows.Count).End(xlUp)(2) = a & b & c & d & e & f
                        Next
                    Next
                Next
            Next
        Next
    Next
End Sub
Soit 288 combinaisons en colonne O
A+
 
Dernière modification par un modérateur:

ROGER2327

XLDnaute Barbatruc
Re : Combinaisons de chiffres de 6 colonnes

Bonjour à tous
Une proposition permettant de moduler le nombre de questions, et le nombre de réponses à chaque question, sans modification du code.
Code:
[COLOR="DarkSlateGray"][B]Private Sub COMBINE_Click()
  tata Range("B4"), Range("J14") [COLOR="Sienna"]'première cellule des données, première cellule des réponses.[/COLOR]
End Sub

Private Sub tata(pDat As Range, rDat)
Dim i&, j&, m&, u&, x&, tmp$, Data(), nDat&(), sDat$(), oPlg As Range
  With pDat
    Set oPlg = .Resize(1, IIf(IsEmpty(.Offset(0, 1)), 1, .End(xlToRight).Column - .Column + 1))
    m = oPlg.Count
    ReDim Data(1 To 1, 1 To m)
    ReDim nDat(1 To m)
    For i = 1 To m
      With .Offset(0, i - 1)
        Data(1, i) = .Resize(IIf(IsEmpty(.Offset(1, 0)), 1, .End(xlDown).Row - .Row + 1), 2).Value
      End With
    Next i
  End With
  x = 1
  For i = 1 To m
    nDat(i) = UBound(Data(1, i), 1)
    x = x * nDat(i)
  Next i
  ReDim sDat(1 To x, 1 To 1)
  For i = 1 To x
    tmp = ""
    u = i
    For j = m To 1 Step -1
      tmp = Data(1, j)(1 + (u - 1) Mod (nDat(j)), 1) & " - " & tmp
      u = 1 + (u - 1) \ nDat(j)
    Next j
    sDat(i, 1) = Left$(tmp, Len(tmp) - 3)
  Next i
  With rDat
    .Resize(IIf(IsEmpty(.Offset(1, 0)), 1, .End(xlDown).Row - .Row + 1), 2).ClearContents
    .Resize(x, 1).Value = sDat
  End With
End Sub[/B][/COLOR]
ROGER2327
#4315


Mardi 10 Haha 138 (Saint Panmuphle, huissier, SQ)
24 Vendémiaire An CCXIX
2010-W41-5T15:14:47Z
 

Pièces jointes

  • Combinaisons_(données_variables).xls
    21.5 KB · Affichages: 100
Dernière édition:

Discussions similaires