Probleme avec Interior.color
Salut salut
J'ai une macro qui fait une mise en forme conditionnel qui fonctionne a merveil sous EXcel 2003, mais ce classeur sera ouvert aussi sous excel 2000, et j'ai tester dessu et la j'ai une erreur "impossible de definir la propriété Color de la classe Interior"
Je suppose donc qu'entre les deux version il y a eu du changement du point de vu des methode, quelqu'un a t il eu ce probleme deja?
voici le code entier :
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
'Déclaration des variables -------------------------
Dim KeyTargetls As Range
Dim C
Dim text As String
' La variable KeyTargetls contient les Targetlules qui déclencheront
' une alerte si elles sont modifiées.
Set KeyTargetls = Range("B4:BK16,B22:BG34,B40:BK52,B59:BI71,B77:BK89,B95:BI107,B113:BK125,B131:BK143,B149:BI161,B167:BK179,B185:BI197,B203:BK215")
If Not Application.Intersect(KeyTargetls, Range(Target.Address)) _
Is Nothing Then
If Target.Count = 1 Then 'une seule case a été modifié
If Not Target.Interior.ColorIndex = 15 Then
'MsgBox "Là"
Select Case Target.Value
'définir case = valeur de Target
Case "F"
Target.Interior.Color = RGB(255, 100, 255)
Target.Font.Color = RGB(255, 255, 255)
Range(Target.Address).ClearComments
text = InputBox("Information sur cette formation : ", "A propos de la formation")
If text <> "" Then
Range(Target.Address).NoteText text
End If
Case "CP"
Target.Interior.Color = RGB(102, 0, 255)
Target.Font.Color = RGB(255, 255, 255)
Range(Target.Address).ClearComments
Case "M"
Target.Interior.Color = RGB(255, 50, 0)
Target.Font.Color = RGB(255, 255, 255)
Range(Target.Address).ClearComments
Case "D"
Target.Interior.Color = RGB(255, 225, 0)
Target.Font.Color = RGB(255, 255, 255)
Range(Target.Address).ClearComments
Case "RTT"
Target.Interior.Color = RGB(102, 102, 255)
Target.Font.Color = RGB(255, 255, 255)
Range(Target.Address).ClearComments
Case "RHV"
Target.Interior.Color = RGB(102, 204, 255)
Target.Font.Color = RGB(255, 255, 255)
Range(Target.Address).ClearComments
Case "RCHS"
Target.Interior.Color = RGB(102, 255, 255)
Target.Font.Color = RGB(255, 255, 255)
Range(Target.Address).ClearComments
Case "RAS"
Target.Interior.Color = RGB(51, 204, 0)
Target.Font.Color = RGB(255, 255, 255)
Range(Target.Address).ClearComments
Case "AS"
Target.Interior.Color = RGB(0, 153, 0)
Target.Font.Color = RGB(255, 255, 255)
Range(Target.Address).ClearComments
Case Else
Target.Interior.ColorIndex = xlNone
Target.Font.Color = RGB(0, 0, 0)
Range(Target.Address).ClearComments
End Select
End If
Else
'MsgBox Target.Count
For Each C In Target
If Not C.Interior.ColorIndex = 15 Then
Select Case C.Value
'définir case = valeur de Target
Case "F"
C.Interior.Color = RGB(255, 100, 255)
C.Font.Color = RGB(255, 255, 255)
Range(C.Address).ClearComments
text = InputBox("Information sur cette formation : ", "A propos de la formation")
If text <> "" Then
Range(C.Address).NoteText text
End If
Case "CP"
C.Interior.Color = RGB(102, 0, 255)
C.Font.Color = RGB(255, 255, 255)
Range(C.Address).ClearComments
Case "M"
C.Interior.Color = RGB(255, 50, 0)
C.Font.Color = RGB(255, 255, 255)
Range(C.Address).ClearComments
Case "D"
C.Interior.Color = RGB(255, 225, 0)
C.Font.Color = RGB(255, 255, 255)
Range(C.Address).ClearComments
Case "RTT"
C.Interior.Color = RGB(102, 102, 255)
C.Font.Color = RGB(255, 255, 255)
Range(C.Address).ClearComments
Case "RHV"
C.Interior.Color = RGB(102, 204, 255)
C.Font.Color = RGB(255, 255, 255)
Range(C.Address).ClearComments
Case "RCHS"
C.Interior.Color = RGB(102, 255, 255)
C.Font.Color = RGB(255, 255, 255)
Range(C.Address).ClearComments
Case "RAS"
C.Interior.Color = RGB(51, 204, 0)
C.Font.Color = RGB(255, 255, 255)
Range(C.Address).ClearComments
Case "AS"
C.Interior.Color = RGB(0, 153, 0)
C.Font.Color = RGB(255, 255, 255)
Range(C.Address).ClearComments
Case Else
C.Interior.ColorIndex = xlNone
C.Font.Color = RGB(0, 0, 0)
Range(C.Address).ClearComments
End Select
End If
Next
End If
End If
Application.ScreenUpdating = True
End Subet la la partie qui merdouille :
Target.Interior.Color = RGB(255, 100, 255)Que se soit a n'importe qu'elle endroit le interior.color ne veu pas passer sous EXCEL 2000 !
Voila apres différent test j'ai trouver l'origine du probleme :
Sous 2003 j'ai proteger ma feuille ainsi l'utilisateur peut seulement :
- Selectionner les cellule deverouillé
- Format cellule
- inserer des liens hypertexte
- modifier les objet
Et je me suis rendu compte que sous 2000 il n'y avai pas toute ces options de protection !
Donc sous 2000 en retirant la protection de la feuille la macro s'execute correctement aussitot que je met la protection, la macro plante sur le INTERIOR.COLOR
Voila maintenant je sais pas trop comment je peu faire, peut etre que vous avez une idée
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour,
en début de macro, tu déprotège avec
ActiveSheet.Unprotect Password:="dudu"et en fin de macro, tu remet la protection
ActiveSheet.Protect Password:="dudu"le Password: (mot de passe) est facultatif
PS: tout çà existait sous Excel 2000
Amicalement
Claude.
Merci , cela a fonctionné au poil !