[VBA]Comparer des sommes de cellules

Signaler
Messages postés
2
Date d'inscription
dimanche 16 octobre 2011
Statut
Membre
Dernière intervention
15 novembre 2011
-
Messages postés
14832
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
5 décembre 2021
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
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
Messages postés
2
Date d'inscription
dimanche 16 octobre 2011
Statut
Membre
Dernière intervention
15 novembre 2011

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
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
Messages postés
14832
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
5 décembre 2021
157
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