Constitution de trios pair et impair

Bonjour,

je reviens vers vous aujourd'hui concernant un problème dont j'avais fait appel au forum à l'époque , le but final étant de

constituer des trios d'après une liste de nombre pouvant aller jusqu'à 12, en combinant des N° pairs et N° impairs

avec plusieurs critères différents :

exemple de N° : 1 2 3 4 5 6 7 8 9 10 11 12

1 èr critère : Nous avons 3 bases (exemple: 1 2 3 ) qui apparaitront sur les combinaisons,

on les associera entre eux et avec les 9 autres N° restant, en constituant des trios qui respecteront des régles :

* en cas de combinaison de 2 n° impair, on associera en 3 ème tous les n° pair de l'exemple

ex : 1 3 / 2 4 6 8 10 12

* en cas de combinaison de 2 n° pair , on associera en 3 ème tous les n° impair de l'exemple

ex: 2 4 /5 7 9 11

* en cas de combinaison ou nous avons 1 N° pair et 1 N° impair, dans ce cas là on associera en 3 ème tous les autres N° de la combinaison.

ex: 1 2 / 3 4 5 6 7 8 9 10 11 12

En sachant que n'apparaitera dans le résultat final chaque combinaison sera unique c'est a dire sans doublon, je m'explique :

dans l'exemple : 1 3 / 2 4 6 8 10 12 , cela sous entend que nous avons des trios qui sont 1 3 2, 1 3 4 etc ...

dans l'autre exemple : ex: 1 2 / 3 4 5 6 7 8 9 10 11 12 , cela sous entend que nous avons des trios qui sont 1 2 3, 1 2 4 etc ...

les trios n'ayant pas d'ordre à respecter, nous nous apercevons que le trio 1 3 2 et 1 2 3 sont doublons, donc nous n'en gardons qu'un.

je joins un fichier du résultat souhaité ( cellule c1 à w29 ) , ainsi qu'un autre onglet ou avait été developpé cela en VBA , qui était demandé à l'époque pour 8 N° qui a été modifié et qui n'est plus adapté aujourd'hui .

D'avance merci pour l'attention qui sera donné à mon sujet

Mamarus

40classeurtrios.xlsm (69.99 Ko)

Bonjour,

je me permets de faire remonter le post, afin qu'il y ait quelqu'un qui puisse s'intéresser à mon sujet, je pense que cela doit passer par du VBA, si je me rappelle bien, à l'époque c'était PAPOU, qui m'avait dépanné.

J'avoue être bloquer et je n'ai pas la compétence en VBA

Merci par avance, à celui qui va s'en intéresser.

Mamarus

bonjour,

une proposition

Sub test()
'fait l'hypothèse que les nombres à prendre en compte se trouvent en ligne 1 à partir de la colonne 3
    l = 2
    For i = 1 To 3
        For j = i + 1 To 12
            n2 = Cells(1, j + 2)
            If n2 <> "" Then
                flag1 = True
                k2 = n2 Mod 2
                For k = j + 1 To 13
                    n3 = Cells(1, k + 2)
                    If n3 <> "" Then
                        Select Case k1 + k2
                        Case 0
                            If n3 Mod 2 = 1 Then flag = True Else flag = False
                        Case 1
                            flag = True
                        Case 2
                            If n3 Mod 2 = 0 Then flag = True Else flag = False
                        End Select
                        If flag Then
                            If flag1 Then
                                If c <> 9 Then l = l + 1
                                c = 7
                                n1 = Cells(1, i + 2)
                                k1 = n1 Mod 2
                                Cells(l, c) = n1
                                c = c + 1
                                Cells(l, c) = n2
                                c = c + 1
                                Cells(l, c) = "/"
                                flag1 = False  ' mettre en commentaire pour avoir une combinaison par ligne
                            End If
                            c = c + 1
                            Cells(l, c) = n3
                        End If
                    End If
                Next k
            End If
        Next j
    Next i
End Sub

Bonjour le Forum et h2so4,https://forum.excel-pratique.com/posting.php?mode=reply&f=2&t=66811#

Impeccable , cela fonctionne, c'est exactement ce que je recherchais

Merci encore et bonne journée

Mamarus

Bonjour h2s04,

en testant ma demande d'hier , je viens de m'apercevoir lorsque je la lance , il ya 1 condition en 1ère ligne dont elle ne tient pas compte.

ex: des N° : 1 2 4 5 6 7

c'est à dire si dans mes 3 1èrs chevaux , le 1èr n° est impair et les 2 autres pairs (ex : 1 2 4 ), elle ne me donnera pas la combinaison 1 2 4

elle donnera ceci :

1 2 / 5 6 7

1 4 / 5 6 7

1 5 / 6

1 6 / 7

2 4 / 5 7

2 5 / 6 7

2 6 / 7

4 5 / 6 7

4 6 / 7

A l'inverse si nous avons en 1èr, le 1èr n°pair et les 2 autres impairs de la base, cela fonctionne

Merci pour l'attention qui sera porté

Mamarus

Bonjour,

voici une correction

Sub test()
'fait l'hypothèse que les nombres à prendre en compte se trouvent en ligne 1 à partir de la colonne 3
    l = 2
    For i = 1 To 3
        n1 = Cells(1, i + 2)
        k1 = n1 Mod 2
        For j = i + 1 To 12
            n2 = Cells(1, j + 2)
            If n2 <> "" Then
                flag1 = True
                k2 = n2 Mod 2
                For k = j + 1 To 13
                    n3 = Cells(1, k + 2)
                    If n3 <> "" Then
                        Select Case k1 + k2
                        Case 0
                            If n3 Mod 2 = 1 Then flag = True Else flag = False
                        Case 1
                            flag = True
                        Case 2
                            If n3 Mod 2 = 0 Then flag = True Else flag = False
                        End Select
                        If flag Then
                            If flag1 Then
                                If c <> 9 Then l = l + 1
                                c = 7
                                n1 = Cells(1, i + 2)
                                k1 = n1 Mod 2
                                Cells(l, c) = n1
                                c = c + 1
                                Cells(l, c) = n2
                                c = c + 1
                                Cells(l, c) = "/"
                                flag1 = False  ' mettre en commentaire pour avoir une combinaison par ligne
                            End If
                            c = c + 1
                            Cells(l, c) = n3
                        End If
                    End If
                Next k
            End If
        Next j
    Next i
End Sub

Re bonjour h2so4

la correction fonctionne, merci pour le travail fait;

Mamarus

Rechercher des sujets similaires à "constitution trios pair impair"