Calcul d'un critère avec combinaisons multiples de matrices

Bonjour,

Je cherche à trouver le critère mini d'une somme de produits, issue de deux matrices dont les colonnes/lignes de l'une d'entre-elle vont être permutées autant de fois qu'il y a de solutions de permutation (4 ! = 24 dans le cas de mon fichier)

Je suppose qu'avec le solveur il doit exister une solution à la résolution de ce problème, mais il ne fonctionne pas sur mon poste (je n'y ai pas accès) et je préfèrerais une solution visuelle comme sur le fichier joint avec remplissage automatique de la deuxième matrice.

Je n'arrive pas à démarrer une macro capable de remplir les deuxièmes matrices automatiquement.

Sans solution toute faite (sauf si elle existe quelque-part sur le forum), pourriez-vous au moins me mettre sur la voie afin que j'arrive à démarrer car là je bloque totalement.

Nota : Dans mon fichier, la première matrice bleu (1, 2, 3, 4) ne change pas, la deuxième (A, B, C, D) change.

Premiers calculs : A1 B2 C3 D4 ; critère = 4070

Deuxième : A1 B2 D3 C4 ; critère = 3970

Troisième : A1 C2 B3 D4 ; critère = 4430

Quatrième : .....

Merci d'avance pour votre aide.

Christophe

15testcraft.xlsx (15.42 Ko)

Merci Arturo,

Il faut que je décode ta prose qui pour l'instant m'interpelle.

Je reviens dès que possible.

J'ai retravaillé le code de la macro "Calcul" en mettant dans un tableau à deux dimensions (tab1) les 24 combinaisons possibles.

Puis je rempli les matrices avec ces valeurs, avec deux boucles imbriquées dans la partie "Enregistrement des valeurs du tableau aux matrice n°2"

La première lecture/écriture se fait bien mais dés la première itération ça plante à ce niveau : Cells(L, C) = tab1(i, j) qui me dit "erreur d'exécution n°9, l'indice n'appartient pas à la sélection".

Je ne vois pas l'erreur ? Pourriez-vous m'éclairer ?

Sub Calcul()
    Dim i As Integer, j As Integer, k As Integer, C As Integer, L As Integer    
    Dim tab1()
    ReDim tab1(nbl, nbc)

    k = ((nbl - 1) * 7 + 3)
    i = 0
    j = 0

'Enregistrement des valeurs dans le tableau
For C = 0 To nbc - 1
    For L = 0 To nbl - 1
        tab1(L, C) = Cells(L + 3, 24 + C).Value
    Next L
Next C

'Enregistrement des valeurs du tableau aux matrice n°2
For C = 8 To (nbc + 8)
    For L = 3 To k Step 7
        Cells(L, C) = tab1(i, j)
        i = i + 1
    Next L
    j = j + 1
Next C
...

Bonjour,

Pour faire des essais de mon côté, ça commence mal, ou se trouve le nombre de lignes et le nombre de colonnes : nbl, nbc?

Car à la première boucle "For C = 0 To nbc - 1" nbc=vide elle n'est donc pas traitée.

Idem pour la deuxième et troisième boucle, "For C = 8 To (nbc + 8)" et "For L = 3 To k Step 7" nbc=vide et k est négatif.

Cdlt

Ce sont des variables générales.

nbc = 4 (nbre de colonnes)

nbl = 24 (nbre de lignes)

Pardon de l'oubli.

Bon, et pourquoi 24 + C dans la ligne suivante, y a t-il 24 colonnes?

tab1(L, C) = Cells(24 + L + 3, 24 + C).Value

Reprenez votre macro et faites du pas à pas.

C'est vrai qu'avec le fichier, ce serait sans doute mieux. Je ne l'avais pas mis.

La 24ème colonne (X) est celle où commence le tableau des données.

Il faut réinitialiser la variable i à 0 à chaque changement de colonne

'Enregistrement des valeurs du tableau aux matrice n°2
For C = 8 To (nbc + 8)
    For L = 3 To k Step 7
        Cells(L, C) = tab1(i, j)
        i = i + 1
    Next L
    i = 0
    j = j + 1
Next C

Cdlt

Houla oui, merci Arturo.

J'ai fait le code pour remplir les A, B, C, D etc... des titre de colonnes et de lignes des matrices avec ce code. C'est bon, ça marche. En principe, les matrices seront des 3x3 à 4x4.

'Enregistrement des valeurs du tableau aux titres des matrices n°2
    kc = ((nbl - 1) * 7 + 3)
    i = 0
    j = 0
For C = 8 To (nbc + 8)
    For M = 3 To kc Step 7
        Cells(M, C) = tab1(i, j)
        i = i + 1
    Next M
    i = 0
    j = j + 1
Next C
'--------------------------------
kc = ((nbl - 1) * 7 + 4)
i = 0
j = 0
For M = 4 To kc Step 7
    For L = 1 To nbc
        Cells(M + j, 7) = tab1(i, j)
        j = j + 1
    Next L
    j = 0
    i = i + 1
Next M

Mais pour remplir l'intérieur, des matrices des colonnes (G:K), je sèche un peu.

Les matrices sont donc par définition toutes différentes. Seule la première est connue et peut se définir de deux façons :

- par une matrice exemple en (AH3:AL7)

- ou par les valeurs des couples de lettres en (AN3:AO8)

J'essaie en faisant comme ceci : (ce n'est pas concluant pour l'instant)

1) définir un tableau (5x5) dont les valeurs (0,1), (0,2), (0,3), (0,4) sont chargée des valeurs (H3:K3) et les valeurs (1,0), (2,0), (3,0), (4,0) sont chargée des valeurs (G4:G7)

- Chercher le "A" dans le tableau en (0,1), (0,2), (0,3), (0,4)

- Chercher le "B" dans le tableau en (1,0), (2,0), (3,0), (4,0)

- Ecrire la valeur du AB en (AO3) à l'intersection.

2) Refaire ça pour toutes les autres combinaisons (AC, AD, BC, BD...)

3) Refaire ça pour toutes les matrices suivantes avec un pas de 7 ligne vers le bas.

Je ne sais pas si c'est la méthode à suivre et j'ai en plus du mal à la mettre en application pour l'instant.

Peut-être y a t-il une méthode pour faire ceci ?

Bonjour,

J'aurai préféré que vous mettiez le fichier avec le code que vous avez déjà écrit, même s'il est faux, c'est plus simple de le corriger que de tout recommencer.

Mais avant toute chose, si j'ai bien compris le tableau en AI3:AL7 est bien celui qui sert de référence et on doit mettre les différentes combinaisons dans les tableaux des colonne G à K, c'est bien ça?

Cdlt

Rechercher des sujets similaires à "calcul critere combinaisons multiples matrices"