mise en forme conditionnelle ac + de 3 critères

  • Auteur de la discussion jami10
  • Date de début

jami10

Nouveau membre
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
 

KangOl

Grand Maître
balise
Code:
 :o
et change de sous cat par la meme occasion :o
 

zeb

Modérateur
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 [b][Ajouter>>][/b] se désactive pour une bonne raison, il ne peut y avoir que trois conditions !

Ca devient limpide, n'est-ce pas ?
 

jami10

Nouveau membre
désolé pour l'écriture du code
j'avais bien remarqué que le bouton ajouter se désactivait au bout de trois fois sous excel, mais je pensais qu'on pouvait aller plus loin avec un petit programme VBA, dommage que ce ne soit pas possible
merci
 

inoujk

Habitué
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
 

sunraver

Nouveau membre
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



 

zeb

Modérateur
Je t'aurais bien expliqué que l'instruction
Code:
CODE 1 TO 20: ..
définit l'intervale de 1 . 20 (Connaître un minimum la langue de Shakespeare aide beaucoup), que
Code:
CASE "A": ..
définit juste la valeur A, que
Code:
CASE "S", "s": ..
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 :o
 

inoujk

Habitué
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 ! :)

[cpp]
'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
[/cpp]
 

tagada68

Nouveau membre
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



 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 850
Membres
1 586 373
Dernier membre
https://forum.tomshardwar
Partager cette page
Haut