J'ai une matrice de compatibilité de plusieurs option :
KO veut dire que les options ne sont pas compatibles
Je cherche à coder en VBA le calcul de toutes les combinaisons possibles en prenant en compte les incompatibilités de certaines.
Dans le cas simple en exemple (Option1 et Option6 non compatibles / Option2 et Option3 non compatibles) cela devrait me ressortir les combinaisons suivantes :
Bonjour Rod,
Un essai en PJ.
Par contre pour votre seconde ligne, je trouve
Option2;Option4;Option5;Option6;Option7;Option8 et non Option2;Option1;Option4;Option5;Option6;Option7;Option8 car je trouve OK en Option1/Option2.
Quelque chose qui m'a échappé ?
Merci de votre retour, je vais regarder cela dès que possible.
Pour la seconde ligne, ce que vous trouvez ne marche pas car votre combinaison comprend l'option 1 et l'option 6 alors qu'elles ne sont pas compatible
Bonjour,
Exact, je n'avais pas vu et compris cette subtilité.
Donc bad PJ. To rework
Mais alors dans ce cas, pour la seconde ligne on peut avoir :
Option 2;Option 4;Option 5;Option 6;Option 7;Option 8 mais aussi
Option 2;Option 1;Option 4;Option 5;Option 7;Option 8
Je me rend compte que je n'ai pas précisé quelque chose (désolé) : si l'option est OK alors elle doit faire partie de la combinaison.
Et de plus :
Option1;Option2;Option4;Option5;Option7;Option8
ou
Option1;Option2;Option4;Option5;Option8;Option7
Sont 2 combinaisons considérées identiques
C'est pour cela que l'exemple que je donne correspond a uniquement 4 combinaisons possibles :
Je recycle ma procédure de recherche des combinaisons de P parmi N. Cliquer sur le bouton Hop!
Le tableau des compatibilités doit avoir pour origine la cellule A1. Une ligne vide à droite du tableau et une ligne vide en dessous du tableau sont obligatoires.
S'il faut s'arrêter après le premier groupe d'options (celui qui est composé du nombre max d'options possibles), alors ajouter l'instruction Exit Sub avant le dernierEnd If du code.
Le code est dans Module1.
Attention! C'est le genre de programme qui peut vite devenir interminable et/ou dépasser les capacités d'une machine.