A voir également:
- Excel somme si couleur ne fonctionne pas
- Somme si couleur - Guide
- Liste déroulante excel - Guide
- Excel cellule couleur si condition texte - Guide
- Somme excel - Guide
- Si et excel - Guide
13 réponses
Mike-31
Messages postés
18310
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mars 2024
5 073
8 mai 2009 à 13:25
8 mai 2009 à 13:25
Salut,
En VBA, avec une fonction personnalisée ou macro, avec une formule, faut voir comment tu as colorisé tes cellules, si c’est avec une mise en forme conditionnelle, il est possible de récupérer la condition de cette mise en forme, le mieux est que tu mettes ton fichier sans données confidentielles sur le forum avec ce lien
https://www.cjoint.com/
A+
Un problème sans solution est un problème mal posé (Einstein)
En VBA, avec une fonction personnalisée ou macro, avec une formule, faut voir comment tu as colorisé tes cellules, si c’est avec une mise en forme conditionnelle, il est possible de récupérer la condition de cette mise en forme, le mieux est que tu mettes ton fichier sans données confidentielles sur le forum avec ce lien
https://www.cjoint.com/
A+
Un problème sans solution est un problème mal posé (Einstein)
Mike-31
Messages postés
18310
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mars 2024
5 073
8 mai 2009 à 14:29
8 mai 2009 à 14:29
Re,
Oui en VBA, quelles sont les conditions attrivuées à chaque couleur
A+
Un problème sans solution est un problème mal posé (Einstein)
Oui en VBA, quelles sont les conditions attrivuées à chaque couleur
A+
Un problème sans solution est un problème mal posé (Einstein)
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
>
lotussss
8 mai 2009 à 15:17
8 mai 2009 à 15:17
bonjour tt le monde
pas trop compris ta demande:
associer la mise en forme automatique à partir d'une partie d'un nom genre *nom* et non du nom exact?
mise en forme conditionnelle plutôt qu'automatique ? (c'est pas pareil)
essaies cette syntaxe
if tonrésultat like "*nom*" then...
pas trop compris ta demande:
associer la mise en forme automatique à partir d'une partie d'un nom genre *nom* et non du nom exact?
mise en forme conditionnelle plutôt qu'automatique ? (c'est pas pareil)
essaies cette syntaxe
if tonrésultat like "*nom*" then...
Bonjour,
J'ai fait un exemple avec des cellules colorées sur un tableau sur la plage F9:F11.
Lors de la coloration des cellules, j'ai enregistré une macro pour pouvoir récupérer la valeur (interior.color)
correspondant à la couleur : 255 pour rouge...
Ensuite, je fais un petit programme VBA qui parcourt ma zone et qui augmente une variable si la couleur est rouge......
Avec la formule if ou select case, on peut augmenter le nombre de couleur.
A +
Sub AJOUT()
Dim SOMME_ROUGE As Integer
Dim SOMME_JAUNE As Integer
Dim i As Integer
SOMME_ROUGE = 0
SOMME_JAUNE = 0
'Ma zone de saisie est F9:F11 et je parcours cette zone avec une boucle
For i = 9 To 11
Range("F" & i).Select
'255 couleur rouge
If Selection.Interior.Color = 255 Then
SOMME_ROUGE = SOMME_ROUGE + ActiveCell.Value
Else
SOMME_JAUNE = SOMME_JAUNE + ActiveCell.Value
End If
Next
'affectation des variables aux cellules contenant les résultats
Range("F12").Value = SOMME_ROUGE
Range("F13").Value = SOMME_JAUNE
End Sub
J'ai fait un exemple avec des cellules colorées sur un tableau sur la plage F9:F11.
Lors de la coloration des cellules, j'ai enregistré une macro pour pouvoir récupérer la valeur (interior.color)
correspondant à la couleur : 255 pour rouge...
Ensuite, je fais un petit programme VBA qui parcourt ma zone et qui augmente une variable si la couleur est rouge......
Avec la formule if ou select case, on peut augmenter le nombre de couleur.
A +
Sub AJOUT()
Dim SOMME_ROUGE As Integer
Dim SOMME_JAUNE As Integer
Dim i As Integer
SOMME_ROUGE = 0
SOMME_JAUNE = 0
'Ma zone de saisie est F9:F11 et je parcours cette zone avec une boucle
For i = 9 To 11
Range("F" & i).Select
'255 couleur rouge
If Selection.Interior.Color = 255 Then
SOMME_ROUGE = SOMME_ROUGE + ActiveCell.Value
Else
SOMME_JAUNE = SOMME_JAUNE + ActiveCell.Value
End If
Next
'affectation des variables aux cellules contenant les résultats
Range("F12").Value = SOMME_ROUGE
Range("F13").Value = SOMME_JAUNE
End Sub
C'est la première fois que je participe à un forum.
Je ne sais pas s'il y a la possibilité que tu m'envoie un exemple.
Personnellement, je pense qu'il est possible de tout faire en VBA.
Suivant le contenu d'une cellule, je peux la colorer (ou en colorer une autre) en une couleur déterminée.
Je peux également faire la somme des cellules d'une couleur sans problème.
Je ne sais pas s'il y a la possibilité que tu m'envoie un exemple.
Personnellement, je pense qu'il est possible de tout faire en VBA.
Suivant le contenu d'une cellule, je peux la colorer (ou en colorer une autre) en une couleur déterminée.
Je peux également faire la somme des cellules d'une couleur sans problème.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dans cet exemple, j'ai une colonne (E) qui se colore en fonction d'une colonne située sur la gauche (B).
Je boucle sur ma zone et je colore en fonction du texte qui est écrit dans la colonne B.
Sub macro2()
'
'cellules qui contiennent prélèvement, virement ... B4:E17
'les cellules qui se colorent E4:E17
For i = 4 To 17
Range("E" & i).Select
valeur = Selection.Offset(0, -3).Value
Select Case valeur
Case "virement"
Range("E" & i).Interior.ColorIndex = 3
Case "prélèvement"
Range("E" & i).Interior.ColorIndex = 4
Case "remise"
Range("E" & i).Interior.ColorIndex = 5
Case Else
Range("E" & i).Interior.ColorIndex = 2
End Select
Next
End Sub
Je boucle sur ma zone et je colore en fonction du texte qui est écrit dans la colonne B.
Sub macro2()
'
'cellules qui contiennent prélèvement, virement ... B4:E17
'les cellules qui se colorent E4:E17
For i = 4 To 17
Range("E" & i).Select
valeur = Selection.Offset(0, -3).Value
Select Case valeur
Case "virement"
Range("E" & i).Interior.ColorIndex = 3
Case "prélèvement"
Range("E" & i).Interior.ColorIndex = 4
Case "remise"
Range("E" & i).Interior.ColorIndex = 5
Case Else
Range("E" & i).Interior.ColorIndex = 2
End Select
Next
End Sub
Je ne comprend pas ta dernière question
Sorry j'ai dû fumer!!
ce que je voulais dire c'est que je suis limitée à 3 conditions et ça ne me convient pas car il m'en faudrait 12. Et lorsque l'on met en place une forme conditionnelle sur excel 2007 et pas sur 2003 comme je voudrais le faire, il existe une option qui dit au lieu "d'égal à", "parmi". Du coup il n'est pas obligatoire que le contenu de la cellule de reference soit exact mais une partie correspondant suffit.
Est ce plus clair?
Merci.
ce que je voulais dire c'est que je suis limitée à 3 conditions et ça ne me convient pas car il m'en faudrait 12. Et lorsque l'on met en place une forme conditionnelle sur excel 2007 et pas sur 2003 comme je voudrais le faire, il existe une option qui dit au lieu "d'égal à", "parmi". Du coup il n'est pas obligatoire que le contenu de la cellule de reference soit exact mais une partie correspondant suffit.
Est ce plus clair?
Merci.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
8 mai 2009 à 16:49
8 mai 2009 à 16:49
Lotus, excuses moi d'avoir encombré ce fil en essayant de t'aider avec une syntaxe fonctionnant suivant ta demande
mais, rassures-toi, je ne le ferai plus.
--
mais, rassures-toi, je ne le ferai plus.
--
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
>
lotussss
8 mai 2009 à 18:12
8 mai 2009 à 18:12
merci, mais c'était déjà fait dans cette discussion
je vous signale que ce problème est très simple, niveau à peine débutant VBA...
je vous signale que ce problème est très simple, niveau à peine débutant VBA...
lotussss
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
8 mai 2009 à 18:15
8 mai 2009 à 18:15
Si je demande de l'aide c'est que je sais pas faire ou que j'ai l'esprit trop tordu. Merci pour votre amabilité!
Désolé, je m'étais déconnecté.
Je m'étonne que ce forum ne permette pas d'envoyer une pièce jointe.
Je m'étonne que ce forum ne permette pas d'envoyer une pièce jointe.
Est ce que ce code fabriqué de mes ptites mains est cohérent?
Sub macro2()
'
Range("E4:E17").Select
If Formula = "=RC[-3]=""virement""" Then
Interior.ColorIndex = 3
Else
If Formula = "=RC[-3]=""prélèvement""" Then
Interior.ColorIndex = 6
Else
If Formula = "=RC[-3]=""remise""" Then Interior.ColorIndex = 7
End If
End If
End Sub
Sub macro2()
'
Range("E4:E17").Select
If Formula = "=RC[-3]=""virement""" Then
Interior.ColorIndex = 3
Else
If Formula = "=RC[-3]=""prélèvement""" Then
Interior.ColorIndex = 6
Else
If Formula = "=RC[-3]=""remise""" Then Interior.ColorIndex = 7
End If
End If
End Sub
Oui il y aura plus de conditions que ça à terme soit une douzaine. Mais ça ne fonctionne pas tel quel, une idée, j'ai dû faire des erreurs. Pour la suite, c'est à dire la somme des cellules par couleur j'ai trouvé un code tout près qui fonctionne bien à la condition que la cellule soit effectivement colorée et pas colorée virtuellement par une mise en forme conditionnelle, d'où ma recherche d'écriture...
Bonjour,
Le bout de macro que je t'ai envoyé ne modifie pas le quadrillage.
Si tu le remets, il ne devrait pas changer à l'exécution de la macro
A plus
Le bout de macro que je t'ai envoyé ne modifie pas le quadrillage.
Si tu le remets, il ne devrait pas changer à l'exécution de la macro
A plus
Je ne sais pas si çà peut t'aider pour ton programme, mais ce qui serait bien c'est d'affecter ta macro à un événement Worksheet_Change de manière à ce que à chaque fois que tu modifie une cellule avec l'ajout de virement, prélèvement..., la couleur se mette à jour automatiquement dans la cellule cible.
Du style:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Range("b4:b17")
If Not Application.Intersect(ActiveCell, Target) Is Nothing Then
'ici tu mets le nom de ta macro
End If
End Sub
code à disposer dans la feuille concernée
A plus
Du style:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Range("b4:b17")
If Not Application.Intersect(ActiveCell, Target) Is Nothing Then
'ici tu mets le nom de ta macro
End If
End Sub
code à disposer dans la feuille concernée
A plus
Merci c'est une bonne idée mais en general les mise à jour se font à la suite dans mon tableau, donc pas de risque d'ecraser les anciennes données, cela dit je prends bonnes notes! malheureusement la macro que tu m'a ecrite "supprime" le quadrillage d'excel sur les cellules concernées ou plutot je pense que ce sont des parametres de cellule à definir egalement en plus de la couleur....une idée? egalement si j'ai un terme tel que "virement de mr untel" ben ça ne reconnait pas le terme "virement" et ça c'est plus embetant.
Merci pour ton temps!
Merci pour ton temps!
Essaie de créer une variable qui teste le contenu de ta cellule.
si ta cellule contient le mot prélèvement, elle prendra la valeur prélèvement .....
voir si dessous
Sub macro2()
Dim choix As String
Dim valeur As String
For i = 4 To 17
Range("E" & i).Select
valeur = Selection.Offset(0, -3).Value
If valeur Like "*virement*" Then
choix = "virement"
ElseIf valeur Like "*prélèvement*" Then choix = "prélèvement"
ElseIf valeur Like "*remise*" Then choix = "remise"
Else: choix = ""
End If
Select Case choix
Case "virement"
Range("E" & i).Interior.ColorIndex = 3
Case "prélèvement"
Range("E" & i).Interior.ColorIndex = 4
Case "remise"
Range("E" & i).Interior.ColorIndex = 5
Case Else
Range("E" & i).Interior.ColorIndex = 2
End Select
Next
End Sub
si ta cellule contient le mot prélèvement, elle prendra la valeur prélèvement .....
voir si dessous
Sub macro2()
Dim choix As String
Dim valeur As String
For i = 4 To 17
Range("E" & i).Select
valeur = Selection.Offset(0, -3).Value
If valeur Like "*virement*" Then
choix = "virement"
ElseIf valeur Like "*prélèvement*" Then choix = "prélèvement"
ElseIf valeur Like "*remise*" Then choix = "remise"
Else: choix = ""
End If
Select Case choix
Case "virement"
Range("E" & i).Interior.ColorIndex = 3
Case "prélèvement"
Range("E" & i).Interior.ColorIndex = 4
Case "remise"
Range("E" & i).Interior.ColorIndex = 5
Case Else
Range("E" & i).Interior.ColorIndex = 2
End Select
Next
End Sub
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
242
9 mai 2009 à 11:29
9 mai 2009 à 11:29
Bonjour à tous
il existe énormément de macros permettant des mises en forme conditionelles illimitées
en voici une dans les astuces
http://www.commentcamarche.net/faq/sujet 16784 excel mises en forme conditionnelles illimitees
en voici une autre donnée sur un autre forum mais non testée sur excel 2007
https://www.excel-downloads.com/threads/mfc-multiple-excel-2007-autre-facon.117709/
et en voici une autre avec des mises en forme conditionnelle tout azimut (MFC par image, par commentaires, sonores)
https://www.excel-downloads.com/threads/mfc-multiples-3-formats-et-autres-mfc.91849/
il existe énormément de macros permettant des mises en forme conditionelles illimitées
en voici une dans les astuces
http://www.commentcamarche.net/faq/sujet 16784 excel mises en forme conditionnelles illimitees
en voici une autre donnée sur un autre forum mais non testée sur excel 2007
https://www.excel-downloads.com/threads/mfc-multiple-excel-2007-autre-facon.117709/
et en voici une autre avec des mises en forme conditionnelle tout azimut (MFC par image, par commentaires, sonores)
https://www.excel-downloads.com/threads/mfc-multiples-3-formats-et-autres-mfc.91849/
Re Selba,
J'ai voulu mettre ta macro dans le module du classeur perso afin que cette macro soit disponible dans tous les classeurs. Depuis, chaque fois que je l'exécute un message d'erreur apparait : "erreur de complilation, variable non définie" en surlignant le "i" de "for i=4 to 17" en début de macro.
J'ai voulu mettre ta macro dans le module du classeur perso afin que cette macro soit disponible dans tous les classeurs. Depuis, chaque fois que je l'exécute un message d'erreur apparait : "erreur de complilation, variable non définie" en surlignant le "i" de "for i=4 to 17" en début de macro.
8 mai 2009 à 14:15
J'ai découvert la fonction "formule" de la mise en forme conditionnelle qui m'a permis d'arriver à mes fins. Maintenant le hic c'est que je suis limitée à 3 conditions et que j'en ai besoin de 12 sur excel 2003. j'ai enregistré une macro qui utilise la mise en forme conditionnelle pour voir comment s'est rédigé et sur le même modèle j'ai essayé d'ajouter des lignes mais ça fonctionne pas...une idée pour résoudre ce problème?
Merci