Décomposition d'une somme selon une liste donnée

Bonjour à tous,

Cela fait un moment que je cherche une solution à mon problème, en vain.

Alors voilà, j'aimerai développer un outil de travail "thermique" qui pourrait m'aider à trouver la dimension des radiateurs (selon une liste donnée) pour des pièces d'un pavillon. Comme ça ça a l'air plutôt simple...

Pour les pièces où ne se trouvent qu'un seul radiateur pas de soucis, j'ai trouvé. Mais pour les pièces ouvertes où il y a plusieurs radiateurs c'est plus complexe (exemple : séjour + cuisine + couloir). Il me faudrait déterminer les meilleures combinaisons de radiateurs pour satisfaire la puissance minimale demandée. MAIS, je dois respecter un nombre de radiateurs, car je dispose des plans où ils sont implantés. DONC voici les informations dont je dispose :

  • les dimensions des radiateurs
  • leur puissance thermique
  • la puissance thermique demandée dans la pièce ouverte
  • le nombre de radiateurs implanté
Pensez-vous qu'il est possible de créer un macro qui pourrait me trouver un résultat ?

Merci d'avance, et si quelqu'un désire mon fichier, c'est possible.

PS : je ne maîtrise pas vraiment les macros, d'où cet appel aux secours, du coup, au lieu d'avoir utilisé des macros pour les pièces n'ayant qu'un radiateur, j'ai utilisé les formules (qui font 3km) ... pas de moquage svp

Bonjour

Des formules de calcul devraient suffire mais joins un fichier avec quelques lignes d'exemples.

Bonjour,

Ci-joint le document avec un exemple fait "à la main"

Merci,

6radiateurs-1.xlsx (25.86 Ko)

bonjour,

une solution via une macro. qui donne une autre solution pour ton exemple que celle que tu as calculée à la main. la macro recherche la combinaison de radiateurs qui donne la plus petite puissance supérieure ou égale à la puissance demandée, mais je suppose que le véritable objectif est de trouver la combinaison de radiateurs qui donne au minimum la puissance demandée au mondre coût.

Dim sol
Sub cherchesolution(pmax, n, a, cu, Optional niveau = 1, Optional min = 9000000000#, Optional p = 0)
    For i = LBound(a, 1) To UBound(a, 1)
        If n = 1 Then p = 0
        If a(i, 2) <> "" Then
            cu(niveau) = i
            p = p + a(i, 2)
            If p <= pmax Then
                If niveau < n Then
                    cherchesolution pmax, n, a, cu, niveau + 1, min, p
                End If
            Else
                If p - pmax > 0 And p - pmax < min And niveau = n Then
                    min = p - pmax
                    For j = 1 To n
                        sol(j) = cu(j)
                    Next j
                End If
            End If
            p = p - a(i, 2)
        End If
    Next i
End Sub

Sub aargh()
    Dim r As Range
    Dim cu, a, b
    Set r = Range("B4:C13")
    p = Val(InputBox("puissance requise"))
    n = Val(InputBox("nombre de radiateurs"))
    If p <> 0 And n <> 0 Then
        ReDim sol(n), cu(n)
        a = r
        cherchesolution p, n, a, cu
        s = ""
        pc = 0
        For i = 1 To UBound(sol)
            pc = pc + a(sol(i), 2)
            s = s & IIf(Len(s) > 0, "/", "") & a(sol(i), 1)
        Next i
        s = s & "(puissance " & pc & ")"
        MsgBox s
    End If
End Sub
5radiateurs-1.xlsm (36.31 Ko)

Bonjour

Un essai avec le solveur

J'ai viré les MFC qui me génaient, sorry

12radiateurs.xlsx (81.22 Ko)

MERCI !

C'est exactement ce qu'il me fallait, c'est parfait

Par contre j'ai deux autres feuilles dans mon fichier (qui sont en masqué), et quand je copie la macro dans ces feuilles ça ne fonctionne pas. Que faut-il que je modifie pour l'adapter ?

Encore merci

Lorsque je les "copie-colle" le débogage me surligne cette ligne...

debogage

bonjour,

fichier adapté, suppression des colonnes C et D inutiles. déclenchement de la macro quand un nombre de radiateurs est introduit en L11. ( radiateurs seche serviettes non pris en compte)

7radiateurs-1.xlsm (32.35 Ko)

Je ne comprends pas car je n'ai plus le bouton pour dimensionner les radiateurs.

Je cherchais simplement à le copier coller dans mes autres feuilles mais ça ne fonctionne pas et dans le dernier fichier que vous m'avez transmis il n'y est plus...

Ou alors je suis vraiment bête.... :/

Bonjour,

j'ai supprimé les boutons, la macro s'enclenche quand un nombre de radiateurs est introduit en L11. et fera le calcul pour la feuille sur laquelle cette valeur est introduite.

Merci énormément, depuis le temps que je cherche !

Problème résolu !

Merci pour votre réactivité et votre patience


Merci beaucoup pour votre patience et votre réactivité !

Problème résolu

Bonjour !

C'est encore moi !

J'aurai voulu ajouter une fonction à mon tableur.

Avant, pour la partie droite, les résultats confondaient les radiateurs de hauteur 500 et 600. Or, j'aurai besoin qu'il sorte des résultats en distinguant les deux (comme montré dans l'excel que j'ai joint). Est-ce possible de le rajouter à la macro ?

Merci beaucoup

Lison

Bonjour,

veux-tu 2 solutions, une avec des radiateurs 500 et une autre avec des radiateurs 600 ou une seule solution avec les radiateurs 500 et 600 sur des listes différentes ?

Ah vous m'avez répondu ! (je venais de vous envoyer un message privé)

c'est pour trouver uniquement des réponses avec des 500 d'un coté et des 600 de l'autre

re-bonjour,

une version adaptée.

5radiateurs-2.xlsm (34.17 Ko)

Super !! C'est parfait

Encore une fois, un grand merci pour votre réactivité et votre talent ahah

Bonne journée à vous

Rechercher des sujets similaires à "decomposition somme liste donnee"