Somme instantanée de cellules colorées
d28b
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
sous excel 2007 et étant plus que débutant, j'ai enfin trouvé sur ces forums,comment faire la somme de cellules d'une meme couleur avec le code ci-après.
Ca marche très bien, mais si par la suite, je modifie la couleur d'une cellule, la somme ne s'actualise pas.
Comment faire pour que dès que je modifie une couleur, ma somme s'actualise instantanément
Option Explicit
Function som_couleur(plage As Range, couleur As Integer) As Double
Dim r As Range, nb As Double
Application.Volatile
nb = 0
For Each r In plage
If r.Interior.ColorIndex = couleur Then nb = nb + r.Value
Next
som_couleur = nb
End Function
Function cellcouleur(c As Range)
cellcouleur = c.Interior.ColorIndex
End Function
merci de votre aide.
sous excel 2007 et étant plus que débutant, j'ai enfin trouvé sur ces forums,comment faire la somme de cellules d'une meme couleur avec le code ci-après.
Ca marche très bien, mais si par la suite, je modifie la couleur d'une cellule, la somme ne s'actualise pas.
Comment faire pour que dès que je modifie une couleur, ma somme s'actualise instantanément
Option Explicit
Function som_couleur(plage As Range, couleur As Integer) As Double
Dim r As Range, nb As Double
Application.Volatile
nb = 0
For Each r In plage
If r.Interior.ColorIndex = couleur Then nb = nb + r.Value
Next
som_couleur = nb
End Function
Function cellcouleur(c As Range)
cellcouleur = c.Interior.ColorIndex
End Function
merci de votre aide.
A voir également:
- Somme instantanée de cellules colorées
- Somme de plusieurs cellules excel - Guide
- Chat discussion instantanée - Accueil - Réseaux sociaux
- Excel somme si couleur cellule - Guide
- Verrouiller cellules excel - Guide
- Somme en anglais excel - Guide
7 réponses
Tu te places sur "This workbook" de l'explorateur (colonne de gauche) dans vba
Tu copie colle cette fonction :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox "tutu"
End Sub
tu remplaces MSGbox "tutu" par ta fonction.
En revanche, il faut que tu passe le range en parametre
Tu copie colle cette fonction :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox "tutu"
End Sub
tu remplaces MSGbox "tutu" par ta fonction.
En revanche, il faut que tu passe le range en parametre
Bonjour,
Non, il n'y a pas de raison, cela devrait se recalculer automatiquement. Soit le recalcul est trés long parceque la plage concernée en paramétre est trés vaste soit il faut regarder dans les options d'excel, dans la rubrique "Calcul" si c'est bien le mode "Automatique" qui est coché et non pas "Sur ordre".
A+
Non, il n'y a pas de raison, cela devrait se recalculer automatiquement. Soit le recalcul est trés long parceque la plage concernée en paramétre est trés vaste soit il faut regarder dans les options d'excel, dans la rubrique "Calcul" si c'est bien le mode "Automatique" qui est coché et non pas "Sur ordre".
A+
Salut,
Je suis bien en automatique et je travaille sur un tableau d'essai très light.
chose étrange, j'ai juste crée une ligne de cellules contenant une couleurs et des cellules sans couleur,
chaque cellule contient une valeur à additionner suivant la couleur
je rentre dans la cellule devant effectuer l'operation, je valide et tout fonctionne.
si je change une couleur manuelement ca ne s'actualise pas
si je tire la couleur a partir d'une cellule deja colorée, ca se réactualise automatiquement
.....
on m'a donné cette solution, mais j'ai un peu de mal a l'integrer (gros débutant)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
"ma fonction"
a ton avis?
Je suis bien en automatique et je travaille sur un tableau d'essai très light.
chose étrange, j'ai juste crée une ligne de cellules contenant une couleurs et des cellules sans couleur,
chaque cellule contient une valeur à additionner suivant la couleur
je rentre dans la cellule devant effectuer l'operation, je valide et tout fonctionne.
si je change une couleur manuelement ca ne s'actualise pas
si je tire la couleur a partir d'une cellule deja colorée, ca se réactualise automatiquement
.....
on m'a donné cette solution, mais j'ai un peu de mal a l'integrer (gros débutant)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
"ma fonction"
a ton avis?
Bonjour à tous
cette macro est à installer dans le module feuilX concerné (la feuille ou tu travailles)
pour l'exemple la plage est A1:F1 et le résultat est en B10
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("A1:F1")) Is Nothing Then: Exit Sub
Range("B10") = tafonction
End Sub
lorsque tu cliques dans la plage, la fonction se déclenche et compte le nombre de couleurs (soit le m^me si t'as rien changer)
c'est un premier à améliorer (paramètres de la plage a rentrer qu'une fois), j'y jette un oeil, sois patient...
cette macro est à installer dans le module feuilX concerné (la feuille ou tu travailles)
pour l'exemple la plage est A1:F1 et le résultat est en B10
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("A1:F1")) Is Nothing Then: Exit Sub
Range("B10") = tafonction
End Sub
lorsque tu cliques dans la plage, la fonction se déclenche et compte le nombre de couleurs (soit le m^me si t'as rien changer)
c'est un premier à améliorer (paramètres de la plage a rentrer qu'une fois), j'y jette un oeil, sois patient...
RE,
dans le module où tu as installé ta fonction et audessus de toute écriture tu écris
et dans le module feuille on a:
edit à 12:05: modifications en italique
dans le module où tu as installé ta fonction et audessus de toute écriture tu écris
Public Const plage As String = "A1:F1" 'a adapter Public Const couleur As Byte = ' a adapter Public Const cible As String = "B10" 'a adapter
et dans le module feuille on a:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range(plage)) Is Nothing Then: Exit Sub
Range(cible) = tafonction(plage, couleur)
End Sub
edit à 12:05: modifications en italique
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour Michel_m,
C'est exact, j'ai été un peu rapide car le changement de couleur ne provoque pas d'événement et donc pas de recalcul. Donc la seule solution est d'utiliser Worksheet_SelectionChange mais par contre si les fonctions ont été uilisées dans la feuille comme fonction personalisées, il serait peut être plus simple de forcer le calcul.
du style :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Worksheets("Feuil1").Calculate
End Sub
ou en faisant le test d'intersection de plage comme tu le propose
Qu'en penses-tu ?
C'est exact, j'ai été un peu rapide car le changement de couleur ne provoque pas d'événement et donc pas de recalcul. Donc la seule solution est d'utiliser Worksheet_SelectionChange mais par contre si les fonctions ont été uilisées dans la feuille comme fonction personalisées, il serait peut être plus simple de forcer le calcul.
du style :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Worksheets("Feuil1").Calculate
End Sub
ou en faisant le test d'intersection de plage comme tu le propose
Qu'en penses-tu ?
Salut Pilas,
oui peut-être, faudrait essayer (je n'ai pas enregistré...) mais à priori, je suis un peu sceptique car on ne change aucun paramêtre de la fonction (plage et couleur)
enfin, faut voir... pas sûr de moi
mais merci de ta remarque, je regarderai tout à l'heure
oui peut-être, faudrait essayer (je n'ai pas enregistré...) mais à priori, je suis un peu sceptique car on ne change aucun paramêtre de la fonction (plage et couleur)
enfin, faut voir... pas sûr de moi
mais merci de ta remarque, je regarderai tout à l'heure
Re,
Je viens de regarder en rentrant: la fonction activate par Worksheet_SelectionChange ou par la solution proposée par Deeper Workbook_SheetChange (Bonjour Deeper, excuses moi) ne réagissent qu'au changement de valeur et non au changement de format (ici,colorindex)...
ou il y a qqchose que je n'ai pas pigé, ce qui est très possible...
A moins que les couleurs soient issues d'une Mise En Forme Conditionnelle!!!
Je viens de regarder en rentrant: la fonction activate par Worksheet_SelectionChange ou par la solution proposée par Deeper Workbook_SheetChange (Bonjour Deeper, excuses moi) ne réagissent qu'au changement de valeur et non au changement de format (ici,colorindex)...
ou il y a qqchose que je n'ai pas pigé, ce qui est très possible...
A moins que les couleurs soient issues d'une Mise En Forme Conditionnelle!!!
ca doit ressembler à:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Function som_couleur(plage As Range, couleur As Integer) As Double
Dim r As Range, nb As Double
Application.Volatile
nb = 0
For Each r In plage
If r.Interior.ColorIndex = couleur Then nb = nb + r.Value
Next
som_couleur = nb
End Function
End Sub
Function cellcouleur(c As Range)
cellcouleur = c.Interior.ColorIndex
End Function
passer le range en parametre, c'est à dire?
merci bcp