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 :

Test couleur de fond [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Par défaut Test couleur de fond
    Bonjour à tous,

    En passant à la version 2007, mon programme rencontre un problème lors de l'exécution d'une macro qui test la couleur de fond de la cellule.
    en version 2003, le test se faisait sur le ColorIndex = 15, ici, en 2007, j'ai sélectionné la couleur "gris moyen" (3ième cellule à gauche dans les gris).
    En faisant un enregistrement automatique d'une macro pour connaître la valeur du "ColorIndex", il n'y a plus de ColorIndex mais un "ThemeColor = xlThemeeColorDark1" et un "TintAndShade = -0,24997111117893"
    lorsque je mets le code suivant dans ma macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      If (Selection.Interior.TintAndShade = -0.249946592608417) Then
    La macro passe au "Else" sans exécuter le Then.
    Auriez-vous une solution pour tester le code couleur d'une cellule?

    Merci d'avance pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Essayez cela en supposant que mes couleurs correspondent aux vôtres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If Selection.Interior.Color = RGB(221, 217, 196) Then
    Sinon, les paramètres des couleurs sont accessibles dans l'onglet "Personnalisées" de l'icône couleurs de remplissage.

    Cordialement.

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    l'affichage de la couleur ne fonctionne pas ?

    Debug.Print Activecell.Interior.ColorIndex … (ou .Color)

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Par défaut
    Bonjour Marc_L et Eric,

    J'avais bien obtenu le code couleur dans une variable et j'ai le même dans le Debug.Print le code est 2.

    J'ai essayé avec le IF ... RGB(221, ... ) mais ça ne va pas non plus.

    La couleur de fond est mise en utilisant la mise en forme conditionnelle : si je mets la couleur dans la cellule en utilisant directement la couleur de remplissage dans le ruban accueil et que je prends la 3ième case, j'ai le code couleur 15, si je passe par la mise en forme conditionnelle, pour la même sélection de case en passant d'abord par le mode personnalisé, j'obtiens le code 2 alors que je sélectionne la même case couleur.

    Le problème, c'est que lors du test sur la cellule suivante qui est avec un fond blanc, j'ai toujours le code couleur 2...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Voir la réponse de Philippe TULLIEZ sur ce message

    Détecter-Exploiter-Paramètres d'une MFC

    Il s'agit d'utiliser cette fonction :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Public Function CouleurMFC(RG As Range, Optional Mode As Byte = 0) As Variant
     Dim e As Long, i As Byte, LoTest As Boolean
     Dim LoMFC As FormatCondition
     Application.Volatile
     'boucle sur le nombre de condition(s)
     'Si pas de MFC .FormatConditions.Count renvoi 0
     For i = 1 To RG.FormatConditions.Count
      Set LoMFC = RG.FormatConditions(i)
      If LoMFC.Type = xlCellValue Then
        'tester le type de la formule entrée
        Select Case LoMFC.Operator
          Case xlEqual
               LoTest = RG = Evaluate(LoMFC.Formula1)
          Case xlNotEqual
               LoTest = RG <> Evaluate(LoMFC.Formula1)
          Case xlGreater
               LoTest = RG > Evaluate(LoMFC.Formula1)
          Case xlGreaterEqual
               LoTest = RG >= Evaluate(LoMFC.Formula1)
          Case xlLess
               LoTest = RG < Evaluate(LoMFC.Formula1)
          Case xlLessEqual
               LoTest = RG <= Evaluate(LoMFC.Formula1)
          Case xlNotBetween
               LoTest = (RG < Evaluate(LoMFC.Formula1) Or RG > Evaluate(LoMFC.Formula2))
          Case xlBetween
               LoTest = (RG >= Evaluate(LoMFC.Formula1)) And (RG <= Evaluate(LoMFC.Formula2))
        End Select
        If LoTest Then
          'Peu ajouter d'autre format si nécessaire,
            'comme la bordure, la police etc..
          Select Case Mode
            Case 0
               CouleurMFC = LoMFC.Interior.ColorIndex
            Case 1
               CouleurMFC = LoMFC.Interior.Color
          End Select
          Exit Function
        End If
      End If
     Next i
     CouleurMFC = 0
    End Function
    Votre condition devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       If CouleurMFC(Selection, 0) Then
    Elle fonctionne bien chez moi.

    Cordialement.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 151
    Par défaut
    Rebonjour Eric,

    Merci pour votre réponse.

    j'ai essayé ton code mais en vain, je viens de créer un fichier minimum que je joints à ce message.
    Il suffit d'exécuter la macro. Vous verrez qu'il n'y a pas de détection de couleur. Les cellules de la colonne A sont grisées par la mise en forme conditionnelles et celles de la B en utilisant le ruban "Accueil et le Bouton couleur de remplissage où j'ai sélectionné la 3ieme case à gauche (Blanc plus sombre 25%),.
    Je suis vraiment embêté car le code "colorindex" en XL-2003 fonctionnait très bien et avait la valeur 15.

    Désolé, avec la macro, j''envoie le prg "zippé".

    Encore merci pour l'aide.
    Fichiers attachés Fichiers attachés

  7. #7
    Invité
    Invité(e)
    Par défaut
    Ci-joint, le fichier corrigé.

    Ta MFC est basée sur une formule alors que la fonction est basée sur la valeur d'une cellule.

    En ce qui concerne la colonne B, j'ai modifié le code. Il correspond à ma première réponse aux paramètres RGB près.

    Cordialement.

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

Discussions similaires

  1. TDBGRID - Couleur de fond d'une seule cellule
    Par cgo dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/09/2009, 10h16
  2. Réponses: 5
    Dernier message: 27/04/2006, 14h51
  3. Réponses: 4
    Dernier message: 23/06/2004, 14h30
  4. debutant : couleur de fond d'une application direct3D
    Par ptidrone dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2004, 17h08
  5. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 01h37

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