Somme instantanée de cellules colorées
Fermé
d28b
-
3 juin 2009 à 02:52
michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 - 3 juin 2009 à 16:50
michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 - 3 juin 2009 à 16:50
A voir également:
- Somme instantanée de cellules colorées
- Somme si couleur - Guide
- Somme excel - Guide
- Somme si ou ✓ - Forum Excel
- Somme recherchev - Forum Excel
- Verrouiller cellules 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
pilas31
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
636
3 juin 2009 à 10:54
3 juin 2009 à 10:54
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?
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mars 2023
3 292
3 juin 2009 à 11:41
3 juin 2009 à 11:41
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...
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mars 2023
3 292
3 juin 2009 à 11:53
3 juin 2009 à 11:53
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
pilas31
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
636
3 juin 2009 à 13:40
3 juin 2009 à 13:40
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 ?
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mars 2023
3 292
3 juin 2009 à 13:50
3 juin 2009 à 13:50
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
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mars 2023
3 292
3 juin 2009 à 16:50
3 juin 2009 à 16:50
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!!!
3 juin 2009 à 11:41
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