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 :

Colorier une cellule en fonction du contenu


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    EPSECO
    Inscrit en
    Juin 2017
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : EPSECO
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2017
    Messages : 113
    Par défaut Colorier une cellule en fonction du contenu
    Bonjour à tous,
    Je souhaiterais utiliser un module sur VBA pour colorier le fond de la cellule en fonction du contenu (texte) sans passer par le MFC prévu sur Excel.
    En effet, j'ai sur VBA, la possibilité de compter les cellules en fonction de leur couleur mais en utilisant la mise en forme conditionnelle d'Excel
    je ne parviens pas à utiliser mon mini programme VBA pour compter les cellules colorées.
    Merci pour votre aide.

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour et bienvenue au forum !
    Qu'est-ce qui te pose problème ? As-tu déjà essayé d'obtenir un code avec l'enregistreur de macro (code à adapter !) ?


    PS : ceci est le forum Excel et non pas VBA, la prochaine fois pose ta question dans le bon forum

  3. #3
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour,

    Effectivement, comme le dit riaolle, sur le forum VBA, c'est plus efficace.

    Il te faut créer un nouveau module dans VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Change_Couleur() 
       If Sheets("Feuil1").Range("A1").Value = "Texte_Recherche" Then 
          Sheets("Feuil1").Range("a1").Interior.ColorIndex = 6
       Else 
          Sheets("Feuil1").Range("a1").Interior.ColorIndex = 0
       End If 
    End Sub
    Ensuite, dans les événements 'Change' de ta feuille "Feuil1", tu tapes l'appel à cette procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range) 
       Change_Couleur 
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    EPSECO
    Inscrit en
    Juin 2017
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : EPSECO
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2017
    Messages : 113
    Par défaut Grand merci
    C'est Ok ça marche. Merci beucoup: D

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Le problème du coloriage par VBA, c'est qu'une modification de la cellule n'apportera pas la modification de la couleur, là où une MFC le ferait.

    Personnellement, je laisserais à Excel le soin de colorier par MFC, et je compterais les cellules qui correspondent à la condition de la MFC. Cela me semble bien plus simple que de coder les conditions en VBA...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre confirmé
    Homme Profil pro
    EPSECO
    Inscrit en
    Juin 2017
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : EPSECO
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2017
    Messages : 113
    Par défaut
    Beaucoup bien sûr....

  7. #7
    Membre confirmé
    Homme Profil pro
    EPSECO
    Inscrit en
    Juin 2017
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : EPSECO
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2017
    Messages : 113
    Par défaut Merci
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.

    Le problème du coloriage par VBA, c'est qu'une modification de la cellule n'apportera pas la modification de la couleur, là où une MFC le ferait.

    Personnellement, je laisserais à Excel le soin de colorier par MFC, et je compterais les cellules qui correspondent à la condition de la MFC. Cela me semble bien plus simple que de coder les conditions en VBA...
    Je vais essayer les 2 formules. Merci c'est très sympa...

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Et j'ajouterais qu'il n'est peut-être pas nécessaire, dans ce cas, de passer par VBA, une formule matricielle pourrait faire l'affaire. Et si tu utilises VBA (par exemple pour intégrer cela à une procédure VBA existante), tu pourras utiliser les techniques VBA qui permettent de calculer les formules (EVALUATE, notamment). Grâce à cela, une modification de la condition sera adaptée par simple modification de la formule XL ou VBA qui compte les cellules qui répondent à la condition.

    Tu dégages alors complètement le problème de l'expression de la condition du code VBA et tu rends ton code beaucoup plus maintenable.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre confirmé
    Homme Profil pro
    EPSECO
    Inscrit en
    Juin 2017
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : EPSECO
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2017
    Messages : 113
    Par défaut Coloriage cellule
    Citation Envoyé par QuestVba Voir le message
    Bonjour,

    Effectivement, comme le dit riaolle, sur le forum VBA, c'est plus efficace.

    Il te faut créer un nouveau module dans VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Change_Couleur() 
       If Sheets("Feuil1").Range("A1").Value = "Texte_Recherche" Then 
          Sheets("Feuil1").Range("a1").Interior.ColorIndex = 6
       Else 
          Sheets("Feuil1").Range("a1").Interior.ColorIndex = 0
       End If 
    End Sub
    Ensuite, dans les événements 'Change' de ta feuille "Feuil1", tu tapes l'appel à cette procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range) 
       Change_Couleur 
    End Sub
    Je reviens vers parce que j'aurais plutôt souhaité colorier la cellule d'une plage comprenant un texte précis et pas seulement une cellule
    comme indiqué dans votre programme. Cela suppose que le code VBA recherche une valeur sous forme de texte et utilise la condition If pour appliquer la coloration de la cellule. Je peux après additionner les couleurs et un nombre d'item. Si vous pouvez aire quelque chose? Merci d'avance.
    Mais nous tracassez pas, je suis un petit amateur de programmation.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Je ne comprends toujours pas pourquoi tu ne veux pas utiliser les MFC et les formules conditionnelles que tu utilises dans ta mfc

    Nom : 2017-06-16_190605.png
Affichages : 2732
Taille : 7,5 Ko

    Mettre en dur dans ton code la partie de texte recherchée est une très mauvais pratique qui va t'obliger à modifier ton code le jour où tu voudras modifier ta condition. Utiliser les formules, dans Excel ou dans VBA sur base des conditions et pas sur base des couleurs est un moyen très sécurisant de travailler.

    Travailler sur les couleurs dans Excel est toujours une mauvaise solution, et c'est d'ailleurs pourquoi Excel ne propose pas de telles fonctions...

    En VBA, tu peux aussi compter les cellules qui répondent à la condition, de plusieurs façons, mais j'aime bien la plage nommée en Excel pour éviter justement de coder en dur...

    Nom : 2017-06-16_191657.png
Affichages : 3481
Taille : 12,8 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Test()
      Dim NB1 As Long
     
      NB1 = Evaluate(Range("Formule").Value)
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [XL-2007] Macro remplir une cellule en fonction du contenu d'une autre cellule
    Par Coco_O dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/05/2024, 16h39
  2. colorier une cellule en fonction de l'utilisateur qui l'a modifiée
    Par rugbyman dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/02/2012, 01h23
  3. colorier une cellule en fonction de plusieurs conditions
    Par antoine2933 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/07/2011, 12h20
  4. [XL-2003] Remplissage d'une cellule en fonction du contenu d'autres cellules.
    Par homer83140 dans le forum Excel
    Réponses: 27
    Dernier message: 13/01/2011, 16h39
  5. Changer la couleur d'une cellule en fonction du contenu
    Par titourock dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 16/09/2009, 16h29

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