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:
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
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 !
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
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 :
'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
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.
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