Quelle sont les nombres dans une plage leures sommes equale

Bonjour

J’ai une plage A1 :A100 qui contienne des nombres

En C1 j’ai un nombre qui est le total de 6 valeurs ou mois de la plage A1 :A100

Comment faire une macro qui exécute les étapes suivantes :

  • Colorer ou sélectionnée les cellules leurs somme égale la valeur en C1
  • Afficher vers une autre plage E1 les cellules colorées ou sélectionnée
  • Supprimer les cellules colorées ou sélectionnée dans la plage principale A1 :A100 et chercher une autre combinaison si possible et l’affiche à côté de la premier combinaison
J’ai reçu un code par Mr Hervé Silve ce code travail sur la somme de trois valeurs et moi je le modifier pour 6 valeurs ou moins mais le reste je ne sais pas comment faire

Aidez-moi svp

Sub ChercherTotal()

    Dim Tbl1() As Double
    Dim Tbl2() As Double
    Dim Tbl3() As Double
    Dim Tbl4() As Double
    Dim Tbl5() As Double
    Dim Tbl6() As Double
    Dim plage As Range
    Dim I As Long
    Dim J As Long
    Dim K As Long
    Dim L As Long
    Dim M As Long
    Dim N As Long
    Dim Max As Long
    Dim OK As Boolean
    Dim Total As Double

    'plage en colonne A
    Set plage = Range([a1], Range("A" & Rows.Count).End(xlUp))

    'total cherché
    Total = Range("c1").Value

    'rempli le 1er tableau avec la plage
    '(plus rapide que de travailler après sur le range)
    For I = 1 To plage.Count

        ReDim Preserve Tbl1(1 To I)
        Tbl1(I) = plage(I)

    Next I

    'redimensionne les autres tableaux
    ReDim Tbl2(1 To UBound(Tbl1))
    ReDim Tbl3(1 To UBound(Tbl1))
    ReDim Tbl4(1 To UBound(Tbl1))
    ReDim Tbl5(1 To UBound(Tbl1))
    ReDim Tbl6(1 To UBound(Tbl1))
    'égalité pour les trois tableaux
    Tbl2 = Tbl1
    Tbl3 = Tbl1
    Tbl4 = Tbl1
    Tbl5 = Tbl1
    Tbl6 = Tbl1
    'dimension maximale pour les boucles
    Max = UBound(Tbl1)

    'moulinette...
    For I = 1 To Max

        For J = I + 1 To Max

            For K = J + 1 To Max

                For L = K + 1 To Max

                    For M = L + 1 To Max

                        For N = M + 1 To Max
                            'effectue la comparaison (total des 3 dimensions)
                            If Tbl1(I) + Tbl2(J) + Tbl3(K) + Tbl4(L) + Tbl5(M) + Tbl6(N) = Total Then

                            'colore en rouge les 3 cellules correspondantes
                            plage(I).Interior.ColorIndex = 4
                            plage(J).Interior.ColorIndex = 4
                            plage(K).Interior.ColorIndex = 4
                            plage(L).Interior.ColorIndex = 4
                            plage(M).Interior.ColorIndex = 4
                            plage(N).Interior.ColorIndex = 4
                            'afficher les plage vers une autre plage
                            Range("e1").Value = plage(I).Value
                            Range("e2").Value = plage(J).Value
                            Range("e3").Value = plage(K).Value
                            Range("e4").Value = plage(L).Value
                            Range("e5").Value = plage(M).Value
                            Range("e6").Value = plage(N).Value
                            'résultat OK, fin de procédure
                            OK = True
                            Exit Sub
                            End If
                        Next N

                    Next M

                Next L

            Next K

        Next J

    Next I
    'si pas trouvé
    If OK = False Then

        MsgBox "Aucune combinaison possible !"

    End If

End Sub
15exemple.xlsm (29.02 Ko)

Salut le forum

Même principe que celui fourni sur d'autres forums :

Mytå

oui

merci mon ami

et bonne nuit

Rechercher des sujets similaires à "quelle nombres plage leures sommes equale"