mise en forme conditionnelle ac + de 3 critères
Dernière réponse : dans Programmation
Bonjour à tous,
au sein d'un tableau, je souhaite mettre en couleur les cases qui ont des valeurs comprises par exemple entre 0-10 en bleu, 10-20 en vert, 20-30 en rouge, 30-40 en violet, 40-50 en jaune....
mais quand j'utilise le code suivant, j'obtiens erreur d'éxécution 1004, erreur définie par l'application ou par l'objet:
[Sub couleurtotal()
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="1", Formula2:="10"
Selection.FormatConditions(1).Interior.ColorIndex = 35
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="10", Formula2:="100"
Selection.FormatConditions(2).Interior.ColorIndex = 40
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="100", Formula2:="1000"
Selection.FormatConditions(3).Interior.ColorIndex = 3
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="1000", Formula2:="20000"
Selection.FormatConditions(4).Interior.ColorIndex = 38
End Sub ]
Merci pour votre aide
au sein d'un tableau, je souhaite mettre en couleur les cases qui ont des valeurs comprises par exemple entre 0-10 en bleu, 10-20 en vert, 20-30 en rouge, 30-40 en violet, 40-50 en jaune....
mais quand j'utilise le code suivant, j'obtiens erreur d'éxécution 1004, erreur définie par l'application ou par l'objet:
[Sub couleurtotal()
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="1", Formula2:="10"
Selection.FormatConditions(1).Interior.ColorIndex = 35
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="10", Formula2:="100"
Selection.FormatConditions(2).Interior.ColorIndex = 40
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="100", Formula2:="1000"
Selection.FormatConditions(3).Interior.ColorIndex = 3
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="1000", Formula2:="20000"
Selection.FormatConditions(4).Interior.ColorIndex = 38
End Sub ]
Merci pour votre aide
Autres pages sur : mise forme conditionnelle criteres
Lassé par la pub ? Créez un compte
Je crois que jami10 n'a pas bien compris l'utilisation de la balise [code]
Il faut mettre [code] au début et [/ code] ( sans l'espace) à la fin.
Mais devant ta bonne volonté, je te propose une réponse :
Alors essaie de le faire à la main : Format/Mise en forme conditionnelle../Ajouter>>
1 fois, 2 fois ... et à 3, le bouton [Ajouter>>] se désactive pour une bonne raison, il ne peut y avoir que trois conditions !
Ca devient limpide, n'est-ce pas ?
Il faut mettre [code] au début et [/ code] ( sans l'espace) à la fin.Mais devant ta bonne volonté, je te propose une réponse :
Alors essaie de le faire à la main : Format/Mise en forme conditionnelle../Ajouter>>
1 fois, 2 fois ... et à 3, le bouton [Ajouter>>] se désactive pour une bonne raison, il ne peut y avoir que trois conditions !
Ca devient limpide, n'est-ce pas ?
ou sinon, si tu tiens vraiment a tes 4 mises en formes conditionnelles, tu peux les programer toi meme en passant par une macro qui se lance qd tu change de cellule (c peut-etre lourd, mais ca rempli la mission.. ) :
------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Range("a1").Cells
Case 1 To 10: Range("a1").Interior.ColorIndex = 35
Case 11 To 100: Range("a1").Interior.ColorIndex = 40
Case 101 To 1000: Range("a1").Interior.ColorIndex = 3
Case 1001 To 20000: Range("a1").Interior.ColorIndex = 38
End Select
End Sub
------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Range("a1").Cells
Case 1 To 10: Range("a1").Interior.ColorIndex = 35
Case 11 To 100: Range("a1").Interior.ColorIndex = 40
Case 101 To 1000: Range("a1").Interior.ColorIndex = 3
Case 1001 To 20000: Range("a1").Interior.ColorIndex = 38
End Select
End Sub
Salut inoujk, salut tout le monde
J'ai essayé le code de inoujk, ça marche ! Pouvoir dépasser la limite des 3 mises en forme conditionnelle (4 avec celle par défaut), je trouve ça tout bonnement génial !
En revanche, j'ai essayé de le modifier pour appliquer la mise en forme sur une plage de cellule ou sur une colonne avec en plus des valeurs alphabétiques mais je ne suis arrivé à rien !
Exemple , dans la colonne A, pour chaque cellule :
valeur numérique de : 0 à 20 : couleur de fond vert
valeur numérique de : de 21 à 30 : couleur de fond jaune
valeur numérique de : de 31 à 2000 : couleur de fond rouge
valeur alphabétique = S :couleur de fond vert + avec affichage en majuscule (même si la frappe est effectuée en minuscule)
valeur alphabétique = A :couleur de fond bleu + avec affichage en majuscule (même si la frappe est effectuée en minuscule)
valeur alphabétique = M :couleur de fond jaune + avec affichage en majuscule (même si la frappe est effectuée en minuscule)
valeur alphabétique = I couleur de fond rouge + avec affichage en majuscule (même si la frappe est effectuée en minuscule)
Je découvre VBA et j'ai donc tout à apprendre alors si quelqu'un avait la gentillesse de me donner une solution à ce problème ou du moins me guider
ça serait sympa !
Merci d'avance
J'ai essayé le code de inoujk, ça marche ! Pouvoir dépasser la limite des 3 mises en forme conditionnelle (4 avec celle par défaut), je trouve ça tout bonnement génial !
En revanche, j'ai essayé de le modifier pour appliquer la mise en forme sur une plage de cellule ou sur une colonne avec en plus des valeurs alphabétiques mais je ne suis arrivé à rien !
Exemple , dans la colonne A, pour chaque cellule :
valeur numérique de : 0 à 20 : couleur de fond vert
valeur numérique de : de 21 à 30 : couleur de fond jaune
valeur numérique de : de 31 à 2000 : couleur de fond rouge
valeur alphabétique = S :couleur de fond vert + avec affichage en majuscule (même si la frappe est effectuée en minuscule)
valeur alphabétique = A :couleur de fond bleu + avec affichage en majuscule (même si la frappe est effectuée en minuscule)
valeur alphabétique = M :couleur de fond jaune + avec affichage en majuscule (même si la frappe est effectuée en minuscule)
valeur alphabétique = I couleur de fond rouge + avec affichage en majuscule (même si la frappe est effectuée en minuscule)
Je découvre VBA et j'ai donc tout à apprendre alors si quelqu'un avait la gentillesse de me donner une solution à ce problème ou du moins me guider
ça serait sympa !
Merci d'avance
Je t'aurais bien expliqué que l'instruction
définit l'intervale de 1 . 20 (Connaître un minimum la langue de Shakespeare aide beaucoup), que
CODE 1 TO 20: ..
définit juste la valeur A, que
CASE "A": ..
définit deux valeurs judicieusement choisies pour que le problème majuscule/minuscule n'en soit plus un. Mais comme tu ne fais pas l'effort de modifier ton premier post pour y ajouter les balises demandées, je ne dirais rien
CASE "S", "s": ..
voici la version.. ca marche pas tres bien pour toute la colonne A (ca demande beaucoups de ressources..) donc ca teste que les 50 permieres lignes.. en bossant dessus un peu plus, je suis sur qu'il y a moyen de l'optimiser (recherche de cellule liée sur la modif, etc..) pour celui qui veut s'amuser la dessus et qui a du temps, c'est un sujet qui peu etre fun !
'Definition variable Dim modif As Boolean ' Test changement cellule Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer ' test si verif en cours If modif Then Exit Sub modif = True ' Boucle sur la colonne For i = 1 To 50 Call MEFCond1("A" & i) Next i modif = False End Sub ' <M>ise <E>n <F>orme <Cond>itionnelle <1> Sub MEFCond1(TCell As String) ' Met en majucule la saisie If TypeName(Range(TCell).Value) = "String" Then Range(TCell).Value = UCase(Range(TCell).Value) End If ' Lance le test Select Case Range(TCell).Text Case 1 To 20: Range(TCell).Interior.ColorIndex = 4 Case 21 To 30: Range(TCell).Interior.ColorIndex = 6 Case 31 To 2000: Range(TCell).Interior.ColorIndex = 3 Case "S": Range(TCell).Interior.ColorIndex = 4 Case "A": Range(TCell).Interior.ColorIndex = 5 Case "M": Range(TCell).Interior.ColorIndex = 6 Case "I": Range(TCell).Interior.ColorIndex = 3 Case Else: Range(TCell).Interior.ColorIndex = xlNone End Select End Sub
Bonjour Inoujk,
J'ai vu ta réponse ci-dessous qui semble être très proche de ma problématique actuelle sauf que moi je voudrai aller jusqu'à 10 mises en forme conditionnelles (et ne pas me limiter à 4). 1ère question: est-ce possible?
2ième question: si oui, comment faire?
Quelques explications: dans ma colonne A j'ai réalisé une classification selon 10 stratégies. Donc à coté de mes données dans les colonnes B à H j'ai la stratégie retenue qui figure dans la colonne A (Stratégie 1, Stratégie 2....Stratégie 10). Je souhaiterai atribuer automatiquement une couleur par stratégie. A chq fois que je renseigne le n° de la stratégie correspondante lorsque je rajoute de nouvelles données dans le fichier, je voudrai non seulement que la colonne A prenne la couleur correspondante à la stratégie en question, mais également, que toutes les colonnes à coté de B à H reprennent strictement la même mise en forme que celle de la colonne A.
Pourrais-tu m'aider svp à résoudre ce pb? Je suis novice dans VB et la gestion des macros sous Excel.
Merci d'avance pour ton aide.
A+.
Tagada
------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Range("a1").Cells
Case 1 To 10: Range("a1").Interior.ColorIndex = 35
Case 11 To 100: Range("a1").Interior.ColorIndex = 40
Case 101 To 1000: Range("a1").Interior.ColorIndex = 3
Case 1001 To 20000: Range("a1").Interior.ColorIndex = 38
End Select
End Sub
J'ai vu ta réponse ci-dessous qui semble être très proche de ma problématique actuelle sauf que moi je voudrai aller jusqu'à 10 mises en forme conditionnelles (et ne pas me limiter à 4). 1ère question: est-ce possible?
2ième question: si oui, comment faire?
Quelques explications: dans ma colonne A j'ai réalisé une classification selon 10 stratégies. Donc à coté de mes données dans les colonnes B à H j'ai la stratégie retenue qui figure dans la colonne A (Stratégie 1, Stratégie 2....Stratégie 10). Je souhaiterai atribuer automatiquement une couleur par stratégie. A chq fois que je renseigne le n° de la stratégie correspondante lorsque je rajoute de nouvelles données dans le fichier, je voudrai non seulement que la colonne A prenne la couleur correspondante à la stratégie en question, mais également, que toutes les colonnes à coté de B à H reprennent strictement la même mise en forme que celle de la colonne A.
Pourrais-tu m'aider svp à résoudre ce pb? Je suis novice dans VB et la gestion des macros sous Excel.
Merci d'avance pour ton aide.
A+.
Tagada
inoujk a dit :
ou sinon, si tu tiens vraiment a tes 4 mises en formes conditionnelles, tu peux les programer toi meme en passant par une macro qui se lance qd tu change de cellule (c peut-etre lourd, mais ca rempli la mission.. ) :------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Range("a1").Cells
Case 1 To 10: Range("a1").Interior.ColorIndex = 35
Case 11 To 100: Range("a1").Interior.ColorIndex = 40
Case 101 To 1000: Range("a1").Interior.ColorIndex = 3
Case 1001 To 20000: Range("a1").Interior.ColorIndex = 38
End Select
End Sub
Lassé par la pub ? Créez un compte
- Contenus similaires :
- Forummacro pour transfert de données avec mise en forme
- ForumMise en forme du texte saisi dans un formulaire
- Forummacro Excel : mise en forme de plusieurs feuilles d'un classeur
- ForumProblème de mise en forme avec Word 2003 ...
- Forummise en forme de texte dans un formulaire php...
- Forum[PHP] conserver mise en forme d'un textarea -c'est bon merci
- Forumphp : générer du texte mis en forme
- ForumMise en forme apres requet... ?
- ForumMise en forme d'un texte "a la joce"