FORUM Tom's Hardware » Programmation » C / C++ / Java » mise en forme conditionnelle ac + de 3 critères
 

mise en forme conditionnelle ac + de 3 critères

Matériel : error-404, Thor941 Fournisseurs d'accès : DIKLAHDA, 3 utilisateurs anonymes et 396 utilisateurs inconnus
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : mise en forme conditionnelle ac + de 3 critères
 
Plus d'informations

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

Profil : Pointeur
Plus d'informations

balise [code] :o
et change de sous cat par la meme occasion :o

zeb
Profil : Modérateur libre
Plus d'informations

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 ?

Plus d'informations

désolé pour l'écriture du code
j'avais bien remarqué que le bouton [b] 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

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

Message cité 1 fois
Message édité par inoujk le 22-03-2006 à 14:32:12
Profil : Pointeur
Plus d'informations

blise [code] :o

Plus d'informations

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
Profil : Modérateur libre
Plus d'informations

Je t'aurais bien expliqué que l'instruction

Code :
  1. CODE 1 TO 20: ..

définit l'intervale de 1 . 20 (Connaître un minimum la langue de Shakespeare aide beaucoup), que

Code :
  1. CASE "A": ..

définit juste la valeur A, que

Code :
  1. 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

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

Code :
  1. 'Definition variable
  2. Dim modif As Boolean
  3. ' Test changement cellule
  4. Private Sub Worksheet_Change(ByVal Target As Range)
  5.     Dim i As Integer
  6. '  test si verif en cours
  7.     If modif Then Exit Sub
  8.     modif = True
  9. '  Boucle sur la colonne
  10.     For i = 1 To 50
  11.         Call MEFCond1("A" & i)
  12.     Next i
  13.     modif = False
  14. End Sub
  15. ' <M>ise <E>n <F>orme <Cond>itionnelle <1>
  16. Sub MEFCond1(TCell As String)
  17. '  Met en majucule la saisie
  18.     If TypeName(Range(TCell).Value) = "String" Then
  19.         Range(TCell).Value = UCase(Range(TCell).Value)
  20.     End If
  21. '  Lance le test
  22.     Select Case Range(TCell).Text
  23.         Case 1 To 20: Range(TCell).Interior.ColorIndex = 4
  24.         Case 21 To 30: Range(TCell).Interior.ColorIndex = 6
  25.         Case 31 To 2000: Range(TCell).Interior.ColorIndex = 3
  26.         Case "S": Range(TCell).Interior.ColorIndex = 4
  27.         Case "A": Range(TCell).Interior.ColorIndex = 5
  28.         Case "M": Range(TCell).Interior.ColorIndex = 6
  29.         Case "I": Range(TCell).Interior.ColorIndex = 3
  30.         Case Else: Range(TCell).Interior.ColorIndex = xlNone
  31.     End Select
  32. End Sub

Plus d'informations

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


inoujk a écrit :

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



Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » C / C++ / Java » mise en forme conditionnelle ac + de 3 critères
 

Annonces Google
Publicité