Excel : tester la couleur dans formule
Résolu
alainjjb
Messages postés
788
Date d'inscription
Statut
Membre
Dernière intervention
-
lenou76p -
lenou76p -
Bonjour,
Tout d'abord à tous les Excellentissimes ... Bonne année 2009.
Voici mon Pb : J'ai en ligne des chiffres que je ne veut prendre en compte dans la cellule "Total" de cette même ligne que si la police du nombre est d'une certaines couleur (rouge par ex.) Est-ce possible ?
Ex. A1 = 100, B1 = 100(rouge), C1 = 100, D1 = Total = 200
Merci d'avance
Alain
Tout d'abord à tous les Excellentissimes ... Bonne année 2009.
Voici mon Pb : J'ai en ligne des chiffres que je ne veut prendre en compte dans la cellule "Total" de cette même ligne que si la police du nombre est d'une certaines couleur (rouge par ex.) Est-ce possible ?
Ex. A1 = 100, B1 = 100(rouge), C1 = 100, D1 = Total = 200
Merci d'avance
Alain
A voir également:
- Excel : tester la couleur dans formule
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
17 réponses
Bonjour
Question : Les couleurs sont elles mises avec une Mise en Forme Conditionnelle ?
si non : Voici 2 Fonctions personnalisées qui permettent de travailler sur des format de cellules
Ces fonctions SonT à placer dans un module Standard
la 2eme :
La formule à utiliser pour sommer les cellules qui ont une font rouge
Formule Matricielle à valider en appuyant simultanément sur CTRL + SHIFT + ENTREE
Si la validation est correcte, des {} encadrent automatiquement la formule
Question : Les couleurs sont elles mises avec une Mise en Forme Conditionnelle ?
si non : Voici 2 Fonctions personnalisées qui permettent de travailler sur des format de cellules
Ces fonctions SonT à placer dans un module Standard
Public Function M_Cellule(Target As Range) As Variant Application.Volatile Dim tablo(1 To 10) As Variant tablo(1) = Target.Font.Bold tablo(2) = Target.Font.ColorIndex tablo(3) = Target.Font.FontStyle tablo(4) = Target.Font.Italic tablo(5) = Target.Font.Strikethrough tablo(6) = Target.Font.Underline tablo(7) = Target.Interior.ColorIndex tablo(8) = Target.Interior.Pattern tablo(9) = Target.Interior.PatternColorIndex tablo(10) = Target.NumberFormat M_Cellule = tablo End Function
la 2eme :
Public Function M_Format(ByVal gw_typ As Integer, plage As Range, Optional feuilles As String = "") As Variant Dim gw_c As Range, i As Long, j As Integer Dim tablo() As Variant, maplage As Range Dim feuille1 As String, feuille2 As String Application.Volatile If gw_typ < 1 Or gw_typ > 10 Then trg_mfc_plage = "#ERREUR": Exit Function i = -1 If feuilles = "" Then feuilles = ActiveSheet.Name & ":" & ActiveSheet.Name feuille1 = Left(feuilles, InStr(feuilles, ":") - 1) feuille2 = Right(feuilles, Len(feuilles) - InStr(feuilles, ":")) For j = ActiveWorkbook.Sheets(feuille1).Index To ActiveWorkbook.Sheets(feuille2).Index Set maplage = ActiveWorkbook.Sheets(j).Range(plage.Address) For Each gw_c In maplage i = i + 1 ReDim Preserve tablo(i) tablo(i) = M_Cellule(gw_c)(gw_typ) Next Next j M_Format = tablo End Function
La formule à utiliser pour sommer les cellules qui ont une font rouge
=somme(si(M_Format(2;MaPlage)=3;MaPlage;0))
Formule Matricielle à valider en appuyant simultanément sur CTRL + SHIFT + ENTREE
Si la validation est correcte, des {} encadrent automatiquement la formule
Salut,
Oui avec une fonction personnalisée, tu mets ce code dans un module macro et dans une cellule tu appelle la fonction Insertion/fonction personalisée sélectionnes Somcouleur(ta plage);"rouge")
Function SomCouleur(Zne As Range, Couleur As String)
Application.Volatile True
Select Case Couleur
Case "rouge"
Couleur = 3
Case "vert"
Couleur = 50
Case "jaune"
Couleur = 6
Case "bleu"
Couleur = 5
Case "gris"
Couleur = 15
Case "orange"
Couleur = 40
End Select
For Each cell In Zne
If cell.Font.ColorIndex = Couleur Then cvSomme = _
cvSomme + cell.Value
Next
SomCouleur = cvSomme
End Function
A+
Oui avec une fonction personnalisée, tu mets ce code dans un module macro et dans une cellule tu appelle la fonction Insertion/fonction personalisée sélectionnes Somcouleur(ta plage);"rouge")
Function SomCouleur(Zne As Range, Couleur As String)
Application.Volatile True
Select Case Couleur
Case "rouge"
Couleur = 3
Case "vert"
Couleur = 50
Case "jaune"
Couleur = 6
Case "bleu"
Couleur = 5
Case "gris"
Couleur = 15
Case "orange"
Couleur = 40
End Select
For Each cell In Zne
If cell.Font.ColorIndex = Couleur Then cvSomme = _
cvSomme + cell.Value
Next
SomCouleur = cvSomme
End Function
A+
Merci à tous les 2,
je ne sais pas si j'ai tout compris mais je vais me lancer ... Je vous tiens au courant.
Alain
je ne sais pas si j'ai tout compris mais je vais me lancer ... Je vous tiens au courant.
Alain
Re,
ce qui était prévisible ... C'est l'échec !
- comment crée-t-on une fonction personnalisée (je sais ... enfin j'ai déjà créé des macros).
Merci
Alain
ce qui était prévisible ... C'est l'échec !
- comment crée-t-on une fonction personnalisée (je sais ... enfin j'ai déjà créé des macros).
Merci
Alain
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mike,
après quelques tests je pense avoir réussi mais je ne comprends pas quand se met à jour le Total (cellule ou j'ai fait appel à la fonction). En cliquant plusieurs fois sur une cellule quelconque ... ça marche. Y a-t-il un moyen pour que cette maj soit auto ?
Alain
après quelques tests je pense avoir réussi mais je ne comprends pas quand se met à jour le Total (cellule ou j'ai fait appel à la fonction). En cliquant plusieurs fois sur une cellule quelconque ... ça marche. Y a-t-il un moyen pour que cette maj soit auto ?
Alain
Normalement dés que tu change une valeur dans la plage que tu as défini la cellule qui contient la formule doit se mettre a jour automatiquement.
Sinon on peut la forcer avec un autre code
A+
Sinon on peut la forcer avec un autre code
A+
Mike,
je te joins un exemple :
http://www.cijoint.fr/cjlink.php?file=cj200901/cijdK7uZxV.xls
Merci
Alain
je te joins un exemple :
http://www.cijoint.fr/cjlink.php?file=cj200901/cijdK7uZxV.xls
Merci
Alain
Oui tu as compris ton exemple est bon, mais récupères mon exemple avec d'autre possibilités
https://www.cjoint.com/?bgazfGZg2L
A+
https://www.cjoint.com/?bgazfGZg2L
A+
Wilfried,
j'ai également testé ta fonction (la 1ère). Mais que dois-je mettre dans la cellule "Total". J'ai inséré une fonction personnalisée "M-Cellule" qui me demande de saisir "Target". A quoi correspond cette zone "Target" ?
Merci
Alain
j'ai également testé ta fonction (la 1ère). Mais que dois-je mettre dans la cellule "Total". J'ai inséré une fonction personnalisée "M-Cellule" qui me demande de saisir "Target". A quoi correspond cette zone "Target" ?
Merci
Alain
Mike,
pourquoi ta cellule C21 se met à jour automatiquement alors que la mienne, je dois cliquer plusieurs fois n'importe ou pour cette maj ?? Que dois-je faire de + sur mon tableau ?
Alain
pourquoi ta cellule C21 se met à jour automatiquement alors que la mienne, je dois cliquer plusieurs fois n'importe ou pour cette maj ?? Que dois-je faire de + sur mon tableau ?
Alain
re:
il faut mettre les deux fonctions, la 2eme utilise la première, je t'ai donné un exemple de formule pour le calcul
je ne pourrai t'envoyer un fichier exemple que demain, là je suis au boulot et je n'ai pas tous mes fichiers
il faut mettre les deux fonctions, la 2eme utilise la première, je t'ai donné un exemple de formule pour le calcul
je ne pourrai t'envoyer un fichier exemple que demain, là je suis au boulot et je n'ai pas tous mes fichiers
re:
il faut utiliser les 2 fonction
Voici ton fichier avec plusieurs exemples (couleur de text, couleur de fond, non gras)
https://www.cjoint.com/?bga7irgX2r
il faut utiliser les 2 fonction
Voici ton fichier avec plusieurs exemples (couleur de text, couleur de fond, non gras)
https://www.cjoint.com/?bga7irgX2r
Wilfried,
même problème que la solution de Mike. Le total ne se met pas à jour aussitôt. Je n'arrive pas à avoir les crochets. Ceci expliquant peut-être cela ?
Fini pour ce soir. Bon courage à toi au boulot.
A demain
Alain
même problème que la solution de Mike. Le total ne se met pas à jour aussitôt. Je n'arrive pas à avoir les crochets. Ceci expliquant peut-être cela ?
Fini pour ce soir. Bon courage à toi au boulot.
A demain
Alain
re:
ce qui explique que les calculs ne se font que lorsque tu appuies sur F9 ou si tu modifies une valeur c'est que ces actions provoque un calcul de la feuille. L'application d'une couleur ne provoque pas le lancement des calculs donc les formules ne se calculent pas. l'utilisation du pinceau (copie format), provoque lui le calcul de la feuille mais si tu modifie le format par les paletes couleurs ca ne le fait pas, il te faut lancer le calcul manuellement (F9)
Pour ce qui est des {} je l'ai expliqué dans mon premier post, elle encadrent des formules matricielles et se mettent automatiquement si la validation de telles formules est correctement effectuée. Pour valider une formule matricielle, il faut appuyer sur les 3 touches ! Ctrl + Shift + Entrée
ce qui explique que les calculs ne se font que lorsque tu appuies sur F9 ou si tu modifies une valeur c'est que ces actions provoque un calcul de la feuille. L'application d'une couleur ne provoque pas le lancement des calculs donc les formules ne se calculent pas. l'utilisation du pinceau (copie format), provoque lui le calcul de la feuille mais si tu modifie le format par les paletes couleurs ca ne le fait pas, il te faut lancer le calcul manuellement (F9)
Pour ce qui est des {} je l'ai expliqué dans mon premier post, elle encadrent des formules matricielles et se mettent automatiquement si la validation de telles formules est correctement effectuée. Pour valider une formule matricielle, il faut appuyer sur les 3 touches ! Ctrl + Shift + Entrée
Salut !
Je viens d'essayer ta solution, et ca marche !! par contre, ca n'a l'air de fonctionner que si les valeurs sont sur une ligne, et pas sur une colonne. Saurais tu pourquoi?
je crois que ca vient de :
If feuilles = "" Then feuilles = ActiveSheet.Name & ":" & ActiveSheet.Name
feuille1 = Left(feuilles, InStr(feuilles, ":") - 1)
feuille2 = Right(feuilles, Len(feuilles) - InStr(feuilles, ":"))
Mais je ne vois pas trop quoi faire. Pourrais tu m'aider, car j'ai besoin de réaliser cette somme de valeurs situées dans une colonne?
Je me suis basée sur ton exemple bga7irgX2r_calcul_format.xls
Merci !!
Je viens d'essayer ta solution, et ca marche !! par contre, ca n'a l'air de fonctionner que si les valeurs sont sur une ligne, et pas sur une colonne. Saurais tu pourquoi?
je crois que ca vient de :
If feuilles = "" Then feuilles = ActiveSheet.Name & ":" & ActiveSheet.Name
feuille1 = Left(feuilles, InStr(feuilles, ":") - 1)
feuille2 = Right(feuilles, Len(feuilles) - InStr(feuilles, ":"))
Mais je ne vois pas trop quoi faire. Pourrais tu m'aider, car j'ai besoin de réaliser cette somme de valeurs situées dans une colonne?
Je me suis basée sur ton exemple bga7irgX2r_calcul_format.xls
Merci !!