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 Sub

et 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

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 ! RESOLU

Rechercher des sujets similaires à "probleme interior color"