XL 2013 Mise à jour VBA

Lericounet06

XLDnaute Junior
Bonjour,

j'ai fait une VBA pour compter le nombre de cellules en couleur mais à chaque fois que j'enlève ou que je rajoute (manuellement) de la couleur, mon résultat ne se met pas à jour.

Pour faire ma mise à jour, je suis obligé d'aller dans ma cellule de résultat (=CompterCouleur('Feuill'!H7:H300;'Feuill'!C1)) et faire "enter"

Ma VBA :

Function CompterCouleur(PlageCouleur As Range, Couleur As Range)

Dim CodeCouleur As Integer
Dim NbrCouleur As Integer

CodeCouleur = Couleur.Interior.ColorIndex
Set CCell = PlageCouleur
For Each CCell In PlageCouleur
If CCell.Interior.ColorIndex = CodeCouleur Then
NbrCouleur = NbrCouleur + 1
End If
Next CCell
CompterCouleur = NbrCouleur


End Function


Pouvez-vous m'aider ?

Merci d'avance

Eric
 

xUpsilon

XLDnaute Accro
Bien, alors il faut juste faire ceci :

VB:
Function CompterCouleur(PlageCouleur As Range, Couleur As Range, Optional VolatileParameter As Variant)

Dim CodeCouleur As Integer
Dim NbrCouleur As Integer

CodeCouleur = Couleur.Interior.ColorIndex
Set CCell = PlageCouleur
For Each CCell In PlageCouleur
If CCell.Interior.ColorIndex = CodeCouleur Then
NbrCouleur = NbrCouleur + 1
End If
Next CCell
CompterCouleur = NbrCouleur


End Function

Et dans la formule Excel ceci : =CompterCouleur('Feuill'!H7:H300;'Feuill'!C1;MAINTENANT())

Ca devrait fonctionner correctement à présent.

Bonne journée,
 

Lericounet06

XLDnaute Junior
Bien, alors il faut juste faire ceci :

VB:
Function CompterCouleur(PlageCouleur As Range, Couleur As Range, Optional VolatileParameter As Variant)

Dim CodeCouleur As Integer
Dim NbrCouleur As Integer

CodeCouleur = Couleur.Interior.ColorIndex
Set CCell = PlageCouleur
For Each CCell In PlageCouleur
If CCell.Interior.ColorIndex = CodeCouleur Then
NbrCouleur = NbrCouleur + 1
End If
Next CCell
CompterCouleur = NbrCouleur


End Function

Et dans la formule Excel ceci : =CompterCouleur('Feuill'!H7:H300;'Feuill'!C1;MAINTENANT())

Ca devrait fonctionner correctement à présent.

Bonne journée,
Bonjour à toi et merci pour tes réponses.

J'ai mis en place cette modification, mais lorsque je colore ou enlève manuellement, çà ne change pas tout seul le résultat encore.
J'ai vu sur un autre post que çà ne le faisait pas automatiquement s'il s'agissait de colorer ou pas des cellules manuellement.
Aurais-tu une solution ?

Merci pour ton aide

Eric
 

xUpsilon

XLDnaute Accro
Re,

Question bête mais es-tu bien en mode de calcul Automatique ?
1693468607579.png


Sans ça, j'avoue ne pas avoir d'autres idées, je suppose que le changement de couleur sans changement de valeur ne trigger pas de recalcul.

Bonne journée,
 

patricktoulon

XLDnaute Barbatruc
Bonjour
ça ne peut pas marcher tout simplement par ce que changer la couleur ne peut en aucun cas déclencher le calculate aucune des astuces que j'ai trouvé ici et là ne fonctionnent réellement

il faut un changement de valeur pour que le calculate se mette en route
maintenant il y a des astuces
et dans la foirefouille de patricktoulon
il y a une astuce avec un events commandbars non implémenté
en effet mettre des timers sont très souvent bloquant ou ralentissent le fonctionnement du reste du fichier
alors il faut savoir que:
  1. a chaque fois que tu sélectionne une cellule
  2. tu change une valeur
  3. et toute autres actions sur une feuille
et bien tu modifie certains éléments des menus du ruban et des menu contextuels(même si tu ne le vois pas )
parti de la on implémente un event update des commandbars
parti de la a chaque fois que tu va faire quelque chose sur la feuille ben tu va exciter cet event
ben le reste est facile à comprendre tu fait ce que tu veux dans cet event ;)

le tout peut se faire dans le thisworkbook(qui est un module classe à part entière)

démonstration dans le fichier joint
tu va dans la feuil1 la surveillance commence tu va sur une autre feuille la surveillance s’arrête
tu change la couleur en c1(c'est la couleur recherchée en h7:h300 me semble t il)
tu change les couleur de cellules dans la plage H7:H300 et en B4 tu aura en permanence le nombre de cellule de même couleur que C en h7:h300

cette surveillance en permanence n'est pas bloquante car elle utilise un event
tu peux donc travailler sur ta feuille comme si de rien n'était
voila voila ;)
 

Pièces jointes

  • foire fouille les astuces de patricktoulon.xlsm
    20 KB · Affichages: 3

Lericounet06

XLDnaute Junior
Bonjour
ça ne peut pas marcher tout simplement par ce que changer la couleur ne peut en aucun cas déclencher le calculate aucune des astuces que j'ai trouvé ici et là ne fonctionnent réellement

il faut un changement de valeur pour que le calculate se mette en route
maintenant il y a des astuces
et dans la foirefouille de patricktoulon
il y a une astuce avec un events commandbars non implémenté
en effet mettre des timers sont très souvent bloquant ou ralentissent le fonctionnement du reste du fichier
alors il faut savoir que:
  1. a chaque fois que tu sélectionne une cellule
  2. tu change une valeur
  3. et toute autres actions sur une feuille
et bien tu modifie certains éléments des menus du ruban et des menu contextuels(même si tu ne le vois pas )
parti de la on implémente un event update des commandbars
parti de la a chaque fois que tu va faire quelque chose sur la feuille ben tu va exciter cet event
ben le reste est facile à comprendre tu fait ce que tu veux dans cet event ;)

le tout peut se faire dans le thisworkbook(qui est un module classe à part entière)

démonstration dans le fichier joint
tu va dans la feuil1 la surveillance commence tu va sur une autre feuille la surveillance s’arrête
tu change la couleur en c1(c'est la couleur recherchée en h7:h300 me semble t il)
tu change les couleur de cellules dans la plage H7:H300 et en B4 tu aura en permanence le nombre de cellule de même couleur que C en h7:h300

cette surveillance en permanence n'est pas bloquante car elle utilise un event
tu peux donc travailler sur ta feuille comme si de rien n'était
voila voila ;)
Salut à toi,
Super çà à l'air de fonctionner mais je ne comprends pas comment tu arrives à ce comportement .
Comment mettre des events commandbars ?

Merci pour ta réponse

Eric
 

Lericounet06

XLDnaute Junior
Bonjour
ça ne peut pas marcher tout simplement par ce que changer la couleur ne peut en aucun cas déclencher le calculate aucune des astuces que j'ai trouvé ici et là ne fonctionnent réellement

il faut un changement de valeur pour que le calculate se mette en route
maintenant il y a des astuces
et dans la foirefouille de patricktoulon
il y a une astuce avec un events commandbars non implémenté
en effet mettre des timers sont très souvent bloquant ou ralentissent le fonctionnement du reste du fichier
alors il faut savoir que:
  1. a chaque fois que tu sélectionne une cellule
  2. tu change une valeur
  3. et toute autres actions sur une feuille
et bien tu modifie certains éléments des menus du ruban et des menu contextuels(même si tu ne le vois pas )
parti de la on implémente un event update des commandbars
parti de la a chaque fois que tu va faire quelque chose sur la feuille ben tu va exciter cet event
ben le reste est facile à comprendre tu fait ce que tu veux dans cet event ;)

le tout peut se faire dans le thisworkbook(qui est un module classe à part entière)

démonstration dans le fichier joint
tu va dans la feuil1 la surveillance commence tu va sur une autre feuille la surveillance s’arrête
tu change la couleur en c1(c'est la couleur recherchée en h7:h300 me semble t il)
tu change les couleur de cellules dans la plage H7:H300 et en B4 tu aura en permanence le nombre de cellule de même couleur que C en h7:h300

cette surveillance en permanence n'est pas bloquante car elle utilise un event
tu peux donc travailler sur ta feuille comme si de rien n'était
voila voila ;)
J'ai finalement réussi à comprendre comment faire par rapport à ton fichier et je te dis un grand merci.

Je dois faire la même chose pour la feuille 2 et 3, que dois-je copier dans la VGA ?
 

Lericounet06

XLDnaute Junior
Bonjour,


A mon avis y a comme un soucy, voire deux. ;)
si c'est la meme cellule ref et la même plage mais pour la feuille 1 2 et 3
change la sub sheetActivate c'est tout ;)
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If " Feuil1 Feuil2 Feuil3 "  like"* " & " Sh.Name & " *" =Then
Set CMB = Application.CommandBars
Else
Set CMB = Nothing
End If
End Sub
Salut Patrick,

çà ne fonctionne pas mais je vais te joindre le fichier original.

la VGA fonctionne nickel sur la feuille "L1" (2 plages de cellules avec résultats en B11 et B13) mais je n'arrive pas à la multiplier sur la feuille "L2" (3 plages de cellules avec résultats en I11, I13 et I15) et "L3" (2 plages de cellules avec résultats en B20 et B22)

Merci pour ta réponse

Eric
 

Pièces jointes

  • Test.xlsm
    103.1 KB · Affichages: 1

Discussions similaires

Réponses
19
Affichages
746

Statistiques des forums

Discussions
315 095
Messages
2 116 169
Membres
112 676
dernier inscrit
little_b