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

Excel Discussion :

Trouver la couleur de fond d'une cellule


Sujet :

Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut Trouver la couleur de fond d'une cellule
    Bonjour à tous / toutes
    Voici mon projet..Dans mon fichier, vous pouvez voir que j'ai une formule qui me permet de trouver la couleur de fond d'une cellule. La formule fonctionne correctement a condition que le parametre qui désigne la cellule soit inscrit en dur.
    Exemple : =Couleur(Feuil2!B10) ) marche car B10 est écrit en dur..

    Dans mon projet pour trouver B10, j'utilise une formule "B" &EQUIV(Valeur à trouver;Feuil2!$A$2:$A$5;0)+1
    J'obtiens donc je pense une chaîne de caractère..Si j'ai bien compris la formule =Couleur(Feuil2!B10) , la valeur B10 est un "Range"
    Pour que ma formule fonctionne , il faudrait donc transformer ma chaine de caractère en Range..Du moins ,je crois..

    Est ce qu'il est possible de transformer le résultat de ma formule ("B" &EQUIV.........) en un range ?

    Je met en pièce jointe mon projet....
    Merci d'avance à tous ceux / celles qui pourront m'aider..
    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Par défaut
    Bonjour,

    je n'ai pas vraiment regardé ton fichier, en revanche j'utilise cette fonction dans un de mes fichiers pour compter le nombre de cellule dans un range, peut être ça peut t'aider si tu l'adaptes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function CountCcolor(range_data As Range, criteria As Range) As Long
        Dim datax As Range
        Dim xcolor As Long
    xcolor = criteria.Interior.ColorIndex
    For Each datax In range_data
        If datax.Interior.ColorIndex = xcolor Then
            CountCcolor = CountCcolor + 1
        End If
    Next datax
    End Function
    Source :

    https://support.microsoft.com/en-us/...r-by-using-vba

  3. #3
    Membre averti
    Homme Profil pro
    Utilisateur privé
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Utilisateur privé

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut
    Bonjour,

    Il y a la formule à modifier et une simple macro VBA.
    Formule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Couleur(INDIRECT("Feuil2!B"&TEXTE(EQUIV(Valeur_à_trouver;Feuil2!$A$2:$A$5;0)+1;0)))
    VBA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Couleur(Cellule As Range)
        Couleur = Cellule.Interior.ColorIndex
    End Function
    Je joins le fichier en version xlsm: Récuper la ligne et colonne.xlsm

    Cordialement

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Bonjour à tous,

    une autre solution pour récupérer l'adresse de B5 ( et autres cellules !) est d'utiliser la fonction Adresse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Couleur(ADRESSE(EQUIV(A2;Feuil2!$A$2:$A$5;0)+1;2;;;"Feuil2"))
    pour la ligne2 de la feuille 1.

    Je ne connais pas la fonction Couleur qui n'existe pas en natif avec ma vieille version Excel.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut Merciiiiiiiiiiiiii
    Bonjour à tous / Toutes
    Merciiiiiiiiiii beaucoup pour votre aide...J'ai utilisé vos formules et ça marche exactement comme je le souhaitais..

    J'ai encore une petite question pour vous..
    Dans mon projet, j'utilise le bout de code suivant pour récupérer la couleur de fond d'une cellule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Couleur(CL As Range) As Long
    Application.Volatile
    Couleur = CL.Interior.ColorIndex
    End Function
    Ce que je souhaite faire maintenant, c'est pouvoir modifier le fond de couleur d'une cellule, ça donnerait un truc comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function CouleurDeFond (CL As Range) As Long
    Application.Volatile
    CouleurDeFond = CL.Interior.ColorIndex
    End Function
    Est-ce que cela est possible ?
    Merci d'avance pour votre aide.
    Cordialement

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une fonction personnalisée d'excel peut renvoyer une information mais ne peut modifier la propriété des objets.
    La seule possibilité est d'utiliser une procédure VBA Sub ou Function que l'on active par exemple avec un bouton.

    Petite remarque : Il est préférable d'utiliser la propriété Color avec son code RGB que la propriété Index et son numéro. La palette de couleur peut varier d'un PC et d'une version alors que le code RGB est le même

    A lire sur le sujet Les couleurs en VBA Excel: Les équivalences Hex-Long-RGB
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    Bonjour Philippe,
    Merci d'avoir pris le temps d'étudier mon problème..
    J'ai lu le lien que tu m'as fourni, malheureusement mon niveau de programmation ne me permet pas de tout comprendre..
    Aurais tu la possibilité de me proposer un bout de code qui réalise cette fonction, stp ?

    Ce que je souhaite faire, c'est :
    *Dans une cellule X de mon ma feuil1, si la cellule X de la feuil2 est de couleur blanche avec le texte N.A alors le fond de couleur de ma cellule X de la feuil1 sera de la couleur que je veux choisir...Je sais pas si j'ai été très clair

    En tout cas merci pour ton aide.

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    mon niveau de programmation ne me permet pas de tout comprendre..
    Aurais tu la possibilité de me proposer un bout de code qui réalise cette fonction, stp ?
    Si tu as pu écrire la fonction utilisant la propriété ColorIndex et bien c'est la même chose sauf qu'on utilise la propriété Color à laquelle on passe comme valeur un nombre qui équivaut à son code RGB
    Ainsi si tu veux colorer la cellule A2 en jaune, tu écriras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A4").Interior.Color = 16777215
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A4").Interior.Color = vbYellow
    vbYellow est l'une des huit constantes de couleur de vba qui sont (vbBlack, vbRed, vbGreen, vbYellow, vbBlue, vbMagenta, vbCyan, vbWhite)

    On peut aussi modifier la propriété Color de la cellule B4 par celle de A4 comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B4").Interior.Color = Range("A4").Interior.Color
    et si tu veux afficher le code RGB de la cellule A4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MsgBox "Code RGB de la cellule A4 = " & Range("A4").Interior.Color
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    Bonjour Philippe,
    Merci pour les exemples..
    Peux tu me dire pourquoi ça marche pas avec ma formule, stp ?

    Pour trouver la couleur d'une cellule, j'utilise le code ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Couleur(CL As Range) As Long
    Application.Volatile
    Couleur = CL.Interior.ColorIndex
    End Function
    Dans une cellule de la feuil, si j'écris =Couleur(Feuil1;B3), j'obtiens la valeur de la couleur de fond de la case B3

    J'ai donc utilisé le code que tu m'as donné de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function CouleurFond(CL As Range) As Long
    Application.Volatile
    CouleurFond = CL.Interior.Color
    End Function
    Si j'écris dans une cellule de la feuil = CouleurFond (16777215) , la cellule devient pas jaune.
    as tu une idée d'ou vient mon problème, stp ?
    Merci d'avance pour ton aide.
    cordialement

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si j'écris dans une cellule de la feuil = CouleurFond (16777215) , la cellule devient pas jaune.
    as tu une idée d'ou vient mon problème, stp ?
    Il n'y a pas de problème, il y a juste une impossibilité.
    Comme, je te l'ai écrit dans le fil #6
    Une fonction personnalisée d'excel peut renvoyer une information mais ne peut modifier la propriété des objets.
    La seule possibilité est d'utiliser une procédure VBA Sub ou Function que l'on active par exemple avec un bouton
    .
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Modifier couleur de fond d'une cellule d'un tableau dynamiquement.
    Par fred61 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/03/2009, 02h19
  2. Couleur de fond d'une cellule variable
    Par Cafu3 dans le forum Débuter
    Réponses: 2
    Dernier message: 19/03/2009, 10h56
  3. [VB.NET][DataGridView]:couleur de fond d'une cellule
    Par BigTicket42 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/05/2008, 22h07
  4. mise à jour de la couleur de fond d'une cellule
    Par Lady_jade dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 02/11/2005, 11h18

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