[VBA]Comparer des sommes de cellules

xasak Messages postés 2 Date d'inscription dimanche 16 octobre 2011 Statut Membre Dernière intervention 15 novembre 2011 - 15 nov. 2011 à 01:22
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 16 nov. 2011 à 21:38
Bonjour, (J'utilise le vba d'excel)

J'ai créer un petit tableau qui fait apparaître 12 chiffres, de manière aléatoire, compris entre -100 et 100 dans la ligne 1
Je veux maintenant trouver la plus grande somme entre ces chiffres
Ex : Est-ce que A1+B1+C1 est plus grand que D1+E1+F1+G1+H1 ?
Les sommes doivent comprendre des chiffres adjacents (je ne peux sommer A1 et C1 sans sommer B1).
J'ai compris qu'il y a 66 sommes au total, soit 11 avec la case A1, 10 avec B1, 9 avec C1, etc. C'est une série arithmétique ((11*12/2)=66)
Comment trouve le max de ces sommes sans comparer 66 sommes entre elles. Au fond, comment faire court ?

Voici ce que j'ai essayé...

Sub Bouton1_Clic()
Dim SequenceMax(12) As Double
Dim j As Integer
Dim i As Integer



Randomize
For j = 0 To 11

SequenceMax(j) = Int((100 - (-100) + 1) * Rnd + -100)

For i = 0 To 11
With Sheets("Sequence")
.Cells(1, i + 1) = SequenceMax(i)

End With

Next i
Next j

k = b To l
l = c To l
m = d To l
n = e To l
o = f To l
p = g To l
q = h To l
r = i To l
s = j To l
t = k To l


Range("A2")= worksheetFunction.Max(
(Application.WorksheetFunction.Sum(Range("$A$1:k$1"))),
(Application.WorksheetFunction.Sum(Range("$B$1:l$1"))),
(Application.WorksheetFunction.Sum(Range("$C$1:m$1"))),
(Application.WorksheetFunction.Sum(Range("$D$1:n$1"))),
(Application.WorksheetFunction.Sum(Range("$E$1:o$1"))),
(Application.WorksheetFunction.Sum(Range("$F$1:p$1"))),
(Application.WorksheetFunction.Sum(Range("$G$1:q$1"))),
(Application.WorksheetFunction.Sum(Range("$H$1:r$1"))),
(Application.WorksheetFunction.Sum(Range("$I$1:s$1"))),
(Application.WorksheetFunction.Sum(Range("$J$1:t$1"))),
(Application.WorksheetFunction.Sum(Range("$K$1:l$1"))),
)

End Sub

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 nov. 2011 à 07:14
Bonjour,

Avant toute autre chose : tu développes donc sous VBA et non sous VB6 !
Nous te serions reconnaissant de bien vouloir dorénavant apporter le plus grand soin au choix de la section dans laquelle tu ouvres une discussion.

Nous te serions également reconnaissant de bien vouloir présenter un code indenté et entre balises codes.

Quelle est enfin la signification de ces lignes (que font-elles donc là ?) :

k = b To l
l = c To l
m = d To l
n = e To l
o = f To l
p = g To l
q = h To l
r = i To l
s = j To l
t = k To l 

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
xasak Messages postés 2 Date d'inscription dimanche 16 octobre 2011 Statut Membre Dernière intervention 15 novembre 2011
15 nov. 2011 à 14:26
Oubliez ce que j'ai fait, c'est vraiment n'importe quoi. Voici quelque chose qui résume mieux ce que je veux faire. Je l'ai fait pour la cellule A1 (11fois) maintenant il manque 55 sommes à faire (C'EST LONG !!!).


Sub Bouton1_Clic()
Dim SequenceMax(12) As Double
Dim j As Integer
Dim i As Integer

Randomize
For j = 0 To 11

SequenceMax(j) = Int((100 - (-100) + 1) * Rnd + -100)

For i = 0 To 11
With Sheets("Sequence")
.Cells(1, i + 1) = SequenceMax(i)

End With

Next i
Next j

k = WorksheetFunction.Sum(Cells(1, 1), Cells(1, 2))
l = WorksheetFunction.Sum(Cells(1, 1), Cells(1, 2), Cells(1, 3))
m = WorksheetFunction.Sum(Cells(1, 1), Cells(1, 2), Cells(1, 3), Cells(1, 4))
n = WorksheetFunction.Sum(Cells(1, 1), Cells(1, 2), Cells(1, 3), Cells(1, 4), Cells(1, 5))
o = WorksheetFunction.Sum(Cells(1, 1), Cells(1, 2), Cells(1, 3), Cells(1, 4), Cells(1, 5), Cells(1, 6))
p = WorksheetFunction.Sum(Cells(1, 1), Cells(1, 2), Cells(1, 3), Cells(1, 4), Cells(1, 5), Cells(1, 6), Cells(1, 7))
q = WorksheetFunction.Sum(Cells(1, 1), Cells(1, 2), Cells(1, 3), Cells(1, 4), Cells(1, 5), Cells(1, 6), Cells(1, 7), Cells(1, 8))
r = WorksheetFunction.Sum(Cells(1, 1), Cells(1, 2), Cells(1, 3), Cells(1, 4), Cells(1, 5), Cells(1, 6), Cells(1, 7), Cells(1, 8), Cells(1, 9))
s = WorksheetFunction.Sum(Cells(1, 1), Cells(1, 2), Cells(1, 3), Cells(1, 4), Cells(1, 5), Cells(1, 6), Cells(1, 7), Cells(1, 8), Cells(1, 9), Cells(1, 10))
t = WorksheetFunction.Sum(Cells(1, 1), Cells(1, 2), Cells(1, 3), Cells(1, 4), Cells(1, 5), Cells(1, 6), Cells(1, 7), Cells(1, 8), Cells(1, 9), Cells(1, 10), Cells(1, 11))
u = WorksheetFunction.Sum(Cells(1, 1), Cells(1, 2), Cells(1, 3), Cells(1, 4), Cells(1, 5), Cells(1, 6), Cells(1, 7), Cells(1, 8), Cells(1, 9), Cells(1, 10), Cells(1, 11), Cells(1, 12))

Range("A2") = WorksheetFunction.Max(k, l, m, n, o, p, q, r, s, t, u)

End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 nov. 2011 à 15:44
toujours pas de code indenté et entre balises
Bonne chance dans tes hésitations diverses, donc.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
16 nov. 2011 à 21:38
Bonjour,

Regardes le point 2 de ma signature.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
Rejoignez-nous