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
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 SubBonjour 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 SubRe bonjour h2so4
la correction fonctionne, merci pour le travail fait;
Mamarus