Somme d'une colonne jusqu'a cellule test

Fermé
RussellD Messages postés 57 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 6 septembre 2010 - 15 avril 2010 à 17:43
dct33 Messages postés 41 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 20 avril 2010 - 16 avril 2010 à 19:13
Bonjour à tous,

je voulais savoir comment faire sous VBA pour qu'une cellule :
- fasse la somme de toutes les cellules situées en-dessous d'elle dans la même colonne
- que cette somme s'arrète des lors que la colonne possède une cellule grise

Merci d'avance pour vos réponses
A voir également:

3 réponses

dct33 Messages postés 41 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 20 avril 2010 39
15 avril 2010 à 19:25
Bonsoir,

' pour faire cela il faut définir un gris car une couleur une valeur
' pour connaitre la valeur en fonction de la couleur faire une macro et aller la lire
'et récupérer la valeur pour moi c'était 15

'dans l'exemple j'ai mis les valeurs colonne1 à partir de la ligne 2 et je fais le total 'ligne 1





Sub calcul()
X = 2
Total = 0
While Cells(X, 1).Interior.ColorIndex <> 15
Total = Total + Cells(X, 1)

X = X + 1
Wend

Cells(1, 1) = Total

end sub

'si par contre s'il faut trouver la première cellule colorée

Sub calcul()
X = 2
Total = 0
While Cells(X, 1).Interior.ColorIndex = XlNone
Total = Total + Cells(X, 1)

X = X + 1
Wend

Cells(1, 1) = Total

end sub

'Bonne programmation
0
RussellD Messages postés 57 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 6 septembre 2010 7
16 avril 2010 à 09:32
Merci dct33, cela fonctionne tres bien.

J'ai une autre question ; dans ton cas, la macro est faite en sachant que la cellule "Total" sera en A1. Mais imaginons que l'on ne sache pas à l'avance la ligne de cette cellule (la colonne si par contre).
Comment peut-on modifier ta macro pour la rendre utilisable pour n'importequelle cellule de la colonne 1.
J'ai essayer d'utiliser une formulation RC, avec quelquechose comme R[-i]C en implémentant sur i, mais je n'ai pas réussi à faire fonctionner ça correctement...

Cordialement
0
dct33 Messages postés 41 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 20 avril 2010 39
Modifié par dct33 le 18/04/2010 à 10:26
Bonjour,

Si tu connais la colonne mais pas la ligne où se trouve ta première donnée alors

tu fais un while à partir de la ligne 1 et tu descends tes lignes tant que tu as des cellules vides


Sub calcul()

Colonne = 1

X = 1
While UCase(cells(X, Colonne)) <> ""
X = X + 1
wend
PosTotal = X - 1


Total = 0
While Cells(X, 1).Interior.ColorIndex = XlNone
Total = Total + Cells(X, 1)

X = X + 1
Wend

Cells(PosTotal , Colonne ) = Total

end sub



La boucle while est exécutée tant que la condition est remplie
dans l'exemple je me balade de ligne en ligne en recherchant soit un mot soit une couleur
Attention quand on fait une while il faut être sur que la condition soit remplie un jour
si non plantage
dans l'exemple si je n'incrémente pas X dans mes boucles la condition est toujours vrai donc on ne peut pas sortir de la boucle

Bonne programmation
0