XL 2013 Recherche de combinaison possible

BER2D2

XLDnaute Nouveau
Bonjour à tous,

Je me permet de demander de l'aide, car ca fait 2 jours que je suis bloqué sur un problème Excel, et je n'ai aucune idée de comment résoudre mon problème ....

Je vous explique .....

Dans mon tableau j'ai des données en colonne C, D et F (pour info le tableau a toujours la même dimension, et seul les données de D et F peuvent changer)

L'objectif est de remplir le tableau "Résultat" de façon a :
Trouver toutes les combinaison ou avec 2 données pour les lignes (valeur des colonne C) et 2 données pour les colonnes (valeur des colonnes D ou F)
la somme des données de la colonne C divisé par la sommes des données des même ligne sur D ou F soit égale ou la plus proche possible de L2 .......

Je vous ai mis des exemples de combinaison en couleur car avec des mots ce n'est pas forcement évident a expliquer
En gros, si on prend le résultat en orange :
Si on prend la colonne A (Ligne), la ligne n° "5" on a 4 en C et 2 en D, et sur la ligne n° 27 on a 4 en C et 1 en F
et bien (4+4)/(2+1)=2,67 => valeur de L2 => c'est gagné
Donc l'objectif est de trouver toutes les combinaisons qui se rapprochent le plus possible du ration (L2) en indiquant dans le tableau de résultat a chaque fois pour les groupes (Ligne/format) le numéro de la ligne (valeur rouge sur colonne A) et le numéro de format (valeur rouge 1 ou 2 colonne D ou F)

Voila j'espère avoir été assez clair, et si vous avez une solution pour moi ca serait génial, car la c'est au dessus de mes compétences Excel.

A oui, s'il y a moyen de faire ca avec des formules Excel c'est encore mieux car je voudrai éviter de mettre des macros Excel (sauf si pas le choix) :)

Merci :)
 

Pièces jointes

  • Calcul.xlsx
    13.5 KB · Affichages: 22

BER2D2

XLDnaute Nouveau
J'ai oublié de préciser .. si dès le 1er coup on a le bon ration ca marche aussi ... exemple (1 seul valeur en C / 1 seul valeur sur son D ou F correspondant) = ratio => on s'arrête la pour cette combinaison et on passe a la combinaison suivante :)
 

BER2D2

XLDnaute Nouveau
Bonjour Be_R2D2,
Un essai avec une approche différente, via une matrice de résultats.
Peut être absolument nulle, peut être intéressante. A vous de voir.
Sylvanu,

Je viens de tester avec un tableau de correspondance, et effectivement (même s'il est énorme), il me permet de trouver les bonnes valeurs, mais visuellement, car après je n'arrive pas a reporter les réponse dans le tableau de résultat ...
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Un premier essai à tester, si j'ai bien tout compris. :)
VB:
Sub Combinaisons()
Ratio = [J1]: RatioMin = [J3]: RatioMax = [J4] ' Transfert des ratios
IndexW = 8 ' Index d'ecriture dans matrice résultats
For Index1 = 7 To 21            ' Toutes lignes du tableau 1
    For Index2 = 30 To 50       ' Toutes lignes du tableau 2
        For C = 4 To 6 Step 2   ' Les deux colonnes
            T11 = Cells(Index1, 3): T12 = Cells(Index1, C)
            T21 = Cells(Index2, 3): T22 = Cells(Index2, C)
            If T11 = "/" Or T12 = "/" Or T21 = "/" Or T22 = "/" Then GoTo NextOne   ' Si / on sort
            If T12 + T22 = 0 Then GoTo NextOne                                      ' On sort si diviseur=0
            RatioEnCours = (T11 + T21) / (T12 + T22)                                ' Calcul du ratio
            If RatioEnCours >= RatioMin And RatioEnCours <= RatioMax Then           ' Si dans les clous on stocke
                Range("J" & IndexW) = Range("A" & Index1)
                Range("K" & IndexW) = Cells(1, C)
                Range("M" & IndexW) = Range("A" & Index2)
                Range("N" & IndexW) = Cells(1, C)
                Range("O" & IndexW) = RatioEnCours
                Range("P" & IndexW) = Abs(RatioEnCours - Ratio) / Ratio
                IndexW = IndexW + 1
            End If
NextOne:
        Next C
    Next Index2
Next Index1
End Sub
 

Pièces jointes

  • Calcul (2) (3).xlsm
    27.9 KB · Affichages: 20

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 579
Membres
111 207
dernier inscrit
max008