Somme d'une colonne jusqu'a cellule test
RussellD
Messages postés
60
Statut
Membre
-
dct33 Messages postés 42 Statut Membre -
dct33 Messages postés 42 Statut Membre -
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
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:
- Somme d'une colonne jusqu'a cellule test
- Déplacer une colonne excel - Guide
- Formule somme excel colonne - Guide
- Test performance pc - Guide
- Steam deck oled test - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
3 réponses
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
' 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
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
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
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
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