IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème avec la couleur d'une cellule Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut Problème avec la couleur d'une cellule Excel
    Bonjour,

    Le code suivant me permet de colorer une cellule (C40) si son montant est supérieur à celui de la cellule F9, de plus elle clignote.

    Cependant j'ai un message d'erreur sur la ligne 10

    "Impossible de définir la propriété ColorIndex de la classe Intérior"

    Pouvez-vous éclairer ma lanterne s'il vous plait ?

    Merci par avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Dim BlinkTime As Date
    
    Public Sub CellulesEgalesClignotent()
        Dim C As Range
            For Each C In Range("C40").Cells 'Zone de clignotement
                If C.Interior.ColorIndex = xlNone Then
                    If C.Value > Range("F9").Value Then 'si C40 est supérieur à F9 alors
                            C.Interior.ColorIndex = 3 'la cellule C40 est rouge
                    Else 'Sinon
                            C.Interior.ColorIndex = xlNone 'la cellule C40 n'a pas de couleur
                    End If
                Else
                    C.Interior.ColorIndex = xlNone
                End If
            Next C
     
            BlinkTime = Now() + TimeValue("00:00:01") 'le temps de clignotement
            Application.OnTime BlinkTime, "CellulesEgalesClignotent"
    End Sub

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    l'aide dit :
    Cette propriété renvoie ou définit une valeur de type Variant qui représente la couleur de l'intérieur.
    Syntaxe

    expression.ColorIndex

    expression Variable qui représente un objet Interior.

    Remarques


    La couleur est spécifiée sous la forme d'une valeur d'index dans la palette de couleurs actuelle ou en tant que l'une des constantes suivantes XlColorIndex:

    xlColorIndexAutomatic
    xlColorIndexNone

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Oups ! je me suis trompé, c'est la ligne 8 qui cause problème pas la 10

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim BlinkTime As Date
    
    Public Sub CellulesEgalesClignotent()
        Dim C As Range
            For Each C In Range("C40").Cells 'Zone de clignotement
                If C.Interior.ColorIndex = xlNone Then
                    If C.Value > Range("F9").Value Then 'si C40 est supérieur à F9 alors
                            C.Interior.ColorIndex = 3 'la cellule C40 est rouge
                    Else 'Sinon
                            C.Interior.ColorIndex = xlNone 'la cellule C40 n'a pas de couleur
                    End If
                Else
                    C.Interior.ColorIndex = xlNone
                End If
            Next C
     
            BlinkTime = Now() + TimeValue("00:00:01") 'le temps de clignotement
            Application.OnTime BlinkTime, "CellulesEgalesClignotent"
    End Sub
    J'ai regardé l'aide également, mais je ne comprends pas

    Habituellement j'utilise la même chose et ça fonctionne, ici ça coince. Je suis perdu !!

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Déjà ton for each ne sert à rien puisque ton range fait 1 cell.

    Ta ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C.Interior.ColorIndex = 3
    ne pose aucun problème.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    D'accord mais comment lui indiquer que C. c'est la cellule C40

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     If Range("C40").Interior.ColorIndex = xlNone Then
                    If Range("C40").Value > Range("F9").Value Then 'si C40 est supérieur à F9 alors
                            Range("C40").Interior.ColorIndex = 3 'la cellule C40 est rouge
                    Else 'Sinon
                            Range("C40").Interior.ColorIndex = xlNone 'la cellule C40 n'a pas de couleur
                    End If
                Else
                    Range("C40").Interior.ColorIndex = xlNone
                End If
    Qui peut se résumer en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Range("C40").Interior.ColorIndex = xlNone and Range("C40").Value > Range("F9") Then
                          Range("C40").Interior.ColorIndex = 3 'la cellule C40 est rouge
     Else 'Sinon
                            Range("C40").Interior.ColorIndex = xlNone
    end if

  7. #7
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    J'ai toujours le même message sur la ligne en rouge

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Dim BlinkTime As Date
    
    Public Sub CellulesEgalesClignotent()
        
        If Range("C40").Interior.ColorIndex = xlNone Then
                    If Range("C40").Value > Range("F9").Value Then 'si C40 est supérieur à F9 alors
                            Range("C40").Interior.ColorIndex = 3 'la cellule C40 est rouge
                    Else 'Sinon
                            Range("C40").Interior.ColorIndex = xlNone 'la cellule C40 n'a pas de couleur
                    End If
                Else
                    Range("C40").Interior.ColorIndex = xlNone
                End If
     
            BlinkTime = Now() + TimeValue("00:00:01") 'le temps de clignotement
            Application.OnTime BlinkTime, "CellulesEgalesClignotent"
    End Sub

  8. #8
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Je ne comprends pas le problème... Essaie ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C40").Interior.Color = RGB(255,0,0)

  9. #9
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Lorsque je passe dessus avec la souris il est indiqué

    "Range("C40").Interior.ColorIndex = -4142"

  10. #10
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Je ne vois que le fait que ta feuille soit protégée... Cale ceci en début de code

  11. #11
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Je pense avoir trouvé d'où vient l'erreur. Certaines cellules de la feuille sont protégées en écriture dont C40, j'ai enlevé la protection et je n'ai plus d'erreur.
    Ce qui m'ennuie, c'est que cette cellule doit être absolument protégée


    Oups ! On s'est croisé, on a eu la même idée

  12. #12
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Bien ce que je disais...

    Il suffit d'unlock puis de relock après..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Range("C40").locked = False
     
    If Range("C40").Interior.ColorIndex = xlNone and Range("C40").Value > Range("F9") Then
                          Range("C40").Interior.ColorIndex = 3 'la cellule C40 est rouge
     Else 'Sinon
                            Range("C40").Interior.ColorIndex = xlNone
    end if
     
    Range("C40").locked = True

  13. #13
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    J'ai mis en place ta proposition, mais j'ai un message d'erreur sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("C40").Locked = False
    "Impossible de définir la propriété Locked de la classe Range"

  14. #14
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    t'as un mot de passe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    activesheet.unprotect
    Range("C40").locked = False
     
    If Range("C40").Interior.ColorIndex = xlNone and Range("C40").Value > Range("F9") Then
                          Range("C40").Interior.ColorIndex = 3 'la cellule C40 est rouge
     Else 'Sinon
                            Range("C40").Interior.ColorIndex = xlNone
    end if
     Range("C40").locked = True
    activesheet.protect

  15. #15
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Merci beaucoup ça marche

    Bonne fin de journée

    Amicalement

    René

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 29/12/2014, 15h43
  2. [XL-2003] Problème avec la sélection d'une feuille excel -Sheets("Feuille").Select-
    Par -Naek- dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/04/2009, 17h13
  3. [VBS/VBA] Obtenir la couleur d'une cellule Excel
    Par ced600 dans le forum VBScript
    Réponses: 3
    Dernier message: 27/12/2007, 16h31
  4. Réponses: 1
    Dernier message: 08/03/2006, 20h07
  5. Récupérer la couleur d'une cellule excel par Delphi
    Par teamsebracing dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 05/06/2003, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo