[Catégorie modifiée .Net -> VBA] fonction Sum incrémentation verticale vba

Résolu
cs_piiierro Messages postés 25 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 17 juillet 2013 - 18 mai 2011 à 10:54
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 23 mai 2011 à 22:42
J'ai un petit soucis... Je suis débutant et je me demande comment faire une somme avec la fonction SUM pour qu'elle s'exécute sur plusieurs ligne. je m'explique.

A B C D
1
2 1 1 1
3 2 2
4 3 3
5 4 ....

Dans la colonne A je voudrais faire la somme des colonnes B, C, D : A1 = B1+C1+D1
A2 = B2+C2+D2 etc...

Comment faire pour programmer l'affichage de valeur en "diagonale" et comment programmer cette somme qui serait du style :
For k = 1 To
Range("A1").Offset(k + 0) = WorksheetFunction.Sum(Feuil1.Range("Lk:Mk"))
Next k

merci d'avance....

12 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
19 mai 2011 à 19:03
Bonjour,

Essayes :
Si Index est ton compteur de ligne avec comme valeur de départ 1.

Range("L" & Index & ":" & chr$(asc("K")+Index) & Index)

Tu devrait obtenir le résultat désiré.

Mon site
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
18 mai 2011 à 12:55
Bonjour,

Concaténation de chaine :
MaChaine="Chaine1" & Valeur1 & "Chaine2"

Mon site
0
cs_piiierro Messages postés 25 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 17 juillet 2013
18 mai 2011 à 14:42
en fait je me suis mal exprimé. Les valeurs que je dois rentrer dans ce tableau je les récupère ailleur. Je les saisie pas.
De plus, je voulais savoir si on pouvais avoir une somme du style

for k = 1 to 10 (par exemple)
Range("A1").Offset(,k + 0) = WorksheetFunction.Sum(Feuil1.Range("Bk:Dk"))
Next k

C'est possible ca ????
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
18 mai 2011 à 14:46
Bonjour,

Pour la concaténation, je parlais ce cette chaine :
"Bk:Dk"

pourquoi "k+0" et pas tout simplement "k" ?

Mon site
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_piiierro Messages postés 25 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 17 juillet 2013
18 mai 2011 à 14:50
ok. j'avoue que "k" suffit amplement ^^

Mais apres je comprend pas cette histoire de concaténation
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
18 mai 2011 à 14:58
Bonjour,

Quelque soit la valeur de k, tu fais référence à la même plage de cellules.
"Bk:Dk"

Mais jamais à "B1:K1", "B2:K2", ...

Range("A1").Offset(,k + 0) = WorksheetFunction.Sum(Feuil1.Range("B" & k & ":D" & k))

là ça fonctionnera mieux, je pense.

Mon site
0
cs_piiierro Messages postés 25 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 17 juillet 2013
18 mai 2011 à 16:38
j'ai appliqué ton astuce à mon cas mais ca ne fonctionne pas. Quand j'execute il ne fait pas la somme de B et D. je te montre mon cas :

For m = 1 To j

Range("L1").Offset(m, m - 1) = CO2NonRejete

Range("K1").Offset(m) = WorksheetFunction.Sum(Feuil1.Range("L" & m & ":U" & m))

Next m

Ba ca ca ne marche pas..... Il ne fait pas la somme de la plage de cellule Lm à Um
0
cs_piiierro Messages postés 25 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 17 juillet 2013
18 mai 2011 à 17:12
En fait je voudrai que pour :

m = 1
L2 = CO2NonRejete
avec K2 = L2

m = 2
L3 L2 et M3 CO2NonRejete
avec K3 = L3 + M3

m = 3
L4 L3 et M4 M3 et N4 = CO2NonRejete
avec K4 = L4 + M4 + N4
Er cela ainsi de suite jusqu'à m = j
0
cs_piiierro Messages postés 25 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 17 juillet 2013
19 mai 2011 à 11:05
slt. En fait j'ai trouver une méthode grace à ta concaténation. Seulement en fait je veut copier une plage de cellules et pas seulement un ou 2...

w = m + 1

Sheets("Feuil1").Range("L" & m & ":L" & w).Copy Sheets("Feuil1").Range("L" & w & ":L" & w)

Je me suis grandement inspiré de ton aide. seulement je copie pas une plage....

please help
0
cs_piiierro Messages postés 25 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 17 juillet 2013
23 mai 2011 à 09:19
Bonjour,

Merci de ton aide.

J'ai essayé ta ligne de code.
Il me dit " utilisation incorrecte de la propriété" et il me sélectionne "Range"....

Grrrr. Je sais pas de quoi ca vient...

Merci encore
0
cs_piiierro Messages postés 25 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 17 juillet 2013
23 mai 2011 à 09:52
Merci beaucoup !!!

Ca marche super...

Par contre je peut rien écrir dans la colonne M.
Si je décalle à la colonne N ca marche mais M.....
Bizare.

En tout cas merci beaucoup.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
23 mai 2011 à 22:42
Bonjour,

Alors, là, je ne comprend pas.

Peux-tu mettre le code que tu as confectionné pour comprendre ?

Mon site
0
Rejoignez-nous