Incrémentation en fonction de la couleur d'une cellule

Marina01

XLDnaute Occasionnel
Bonjour Forum,

Je travaille sur Excel 2010 ou parfois Excel 2007. Je souhaite mettre une valeur en fonction de la couleur d'une cellule.
Il ne s'agit pas d'une mise en forme conditionnelle mais d'une valeur à attribuer selon si la cellule est bleu ou rouge.

Est ce possible sans macro .? si non pouvez vous me donner des pistes par un code info a travers les macro svp ? Merci beaucoup

Marine Pouette.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Incrémentation en fonction de la couleur d'une cellule

Bonsoir Marina, bonsoir le forum,

Pourrais-tu nous fournir un petit fichier exemple pour qu'on puisse mieux comprendre quelles sont les couleurs et les valeurs...
 

Marina01

XLDnaute Occasionnel
Re : Incrémentation en fonction de la couleur d'une cellule

Bonjour JHA

Bien vu ta commande.

Est il possible par un bouton "maj" d'actionner les modifications car au moment d'un changement de couleur, le tableau de synthèse se met pas à jour.

A plus

Marine
 

Doudou1

XLDnaute Nouveau
Re : Incrémentation en fonction de la couleur d'une cellule

Bonjour

C'est ma première connexion et je suis sur une problématique similaire dans le cadre de mon travail. J'ai bien visualiser le fichier mais j'ai un prb avec ce code
If IsNumeric(c.Value) Then temp = temp + 1
car dans le meme esprit je vais chercher le nombre de cellule colorée mais la couleur n'est pas mise manuellement mais automatiquement par la mise en forme conditionnelle. Et donc, le programme ne fonctionne plus. Pouvez vous me dire quoi appliquer svp ? Je ne trouve pas la solution.


Regarde la pièce jointe classeur compte couleur-1.xlsm
 

Marina01

XLDnaute Occasionnel
Re : Incrémentation en fonction de la couleur d'une cellule

Bonjour

Mon souci a moi c'est que lorsque je mets une valeur quelconque dans la cellule a la place de "A faire" etc..., et bien c'est la synthèse qui fait un calcul de trop. Le fameux "+1"

Comment dois je faire ? et quelle ligne supprimer pour éviter cela svp ?

Marine
 

Doudou1

XLDnaute Nouveau
Re : Incrémentation en fonction de la couleur d'une cellule

Un message pour JHA:

Ton code fonctionne mais effectivement suite au message ci dessus de Marina, je me suis aperçu que lorsque tu insère un nombre entier ca fausse le calcul. As tu une autre solution ou est ce impossible de modifier quoique ce soit?

Merci

A plus

Douddou
 

job75

XLDnaute Barbatruc
Re : Incrémentation en fonction de la couleur d'une cellule

Bonsoir à tous,

La macro proposée par JHA ne va pas du tout, je ne sais pas qui l'a pondue :rolleyes:.

Avec des cellules fusionnées il ne faut compter que la cellule en haut à gauche de la plage.

Utilisez donc, qu'il y ait ou non des cellules fusionnées et quel que soit leur contenu :

Code:
Function CompteCouleurFondRef(champ As Range, couleurFond As Range)
  Application.Volatile
  Dim c As Range
  For Each c In champ
    If c.Interior.ColorIndex = couleurFond.Interior.ColorIndex Then _
      If c.Address = c.MergeArea(1).Address Then _
        CompteCouleurFondRef = CompteCouleurFondRef + 1
  Next
End Function
Edit : temp = 0 et la variable temp elle-même étaient tout à fait inutiles...

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Incrémentation en fonction de la couleur d'une cellule

Bonjour le fil, le forum,

Est il possible par un bouton "maj" d'actionner les modifications car au moment d'un changement de couleur, le tableau de synthèse se met pas à jour.

La fonction étant volatile il suffit d'appuyer sur la touche F9.

On peut aussi utiliser le bouton MAJ qui lance cette macro :

Code:
Sub MAJ()
Calculate
End Sub
Par ailleurs la fonction est plus rapide en mémorisant dans coul la couleur à comptabiliser :

Code:
Function CompteCouleurFondRef(champ As Range, couleurFond As Range)
Application.Volatile
Dim coul As Long, c As Range
coul = couleurFond.Interior.Color
For Each c In champ
  If c.Interior.Color = coul Then _
    If c.Address = c.MergeArea(1).Address Then _
      CompteCouleurFondRef = CompteCouleurFondRef + 1
Next
End Function
Fichier joint.

Bonne journée et A+
 

Pièces jointes

  • classeur compte couleur(1).xls
    50 KB · Affichages: 76

job75

XLDnaute Barbatruc
Re : Incrémentation en fonction de la couleur d'une cellule

Re,

Maintenant voyez cette solution sans VBA dans le fichier joint.

Elle utilise la fonction macro Excel 4.0 LIRE.CELLULE pour calculer les codes couleurs.

A+
 

Pièces jointes

  • classeur compte couleur fonction Excel 4.0(1).xls
    36.5 KB · Affichages: 86

job75

XLDnaute Barbatruc
Re : Incrémentation en fonction de la couleur d'une cellule

Re,

Fichier (2) nettement plus élaboré avec un graphique.

Formules en E8 et F8, la 2ème étant matricielle :

Code:
=NON(NB.SI(D$7:D7;D8))*NB.SI(Codes;D8)

=INDEX(E:E;PETITE.VALEUR(SI(DECALER(Codes;;1);LIGNE(Codes));A8))
Les noms Codes et Base définissent des plages dynamiques.

Une MFC sur les colonnes E:F masque les valeurs 0 et les valeurs d'erreur.

A+
 

Pièces jointes

  • classeur compte couleur fonction Excel 4.0(2).xls
    39.5 KB · Affichages: 53

job75

XLDnaute Barbatruc
Re : Incrémentation en fonction de la couleur d'une cellule

Re,

Avec des couleurs de référence prédéfinies c'est bien sûr plus simple, fichier (3).

A+
 

Pièces jointes

  • classeur compte couleur fonction Excel 4.0(3).xls
    38 KB · Affichages: 75

Marina01

XLDnaute Occasionnel
Re : Incrémentation en fonction de la couleur d'une cellule

Waouuuah Job75 mais t'es un malade. Je vais t embaucher au ministère lol/ Tu reponds bien à la problématique mais suite à tes différents posts, il ne s'agit plus de trouver une solution mais de comprendre les formules sans VBA car tu m'as mis à l'ouest. Les formules matricielles je ne connais pas. Par contre j'aimerai que tu m'expliques ces indications sur ton dernier fichier

Nom défini CodeCoul en D8 =LIRE.CELLULE(38;Feuil1!$B8)+ENT(ALEA())
LIRE.CELLULE est une fonction macro Excel 4.0
ALEA() rend la formule volatile

Nom défini CodeCoulRef en F8 =LIRE.CELLULE(38;Feuil1!$E8)+ENT(ALEA())

Nom défini Codes =DECALER(Feuil1!$D$8;;;NB(Feuil1!$D:$D))

Peux tu m'expliquer en m'indiquant la lecture que je dois avoir pour traduire ce code. Car j'ai refais la meme chose sur un autre fichier et là, ca marche pas looool.

Cdlt

Marine...(se rend compte qu'elle va devoir acheter un bouquin sur Excel)
 

Discussions similaires

Statistiques des forums

Discussions
312 496
Messages
2 088 978
Membres
103 996
dernier inscrit
KB4175