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 :

Colorer ligne si une ou plusieurs valeurs sont présentes dans une ou plusieurs colonnes [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut Colorer ligne si une ou plusieurs valeurs sont présentes dans une ou plusieurs colonnes
    Bonjour,

    J'ai un (très) grand tableau (plage A1 : DD2000...).
    Je souhaiterais pouvoir colorer le fond de chaque ligne, à l'intérieur de mon tableau (A1 D2000) :
    - en orange quand la valeur "OUI" est présente dans la ligne à colorer, dans la colonne F OU dans la colonne I, OU dans la colonne N...
    - en rouge quand une des 3 valeurs "REFUS", "ANCIEN CLIENT", "SAF" est présente dans la ligne à colorer, dans la colonne E, OU dans la colonne H, OU dans la colonne M...
    Je précise que la valeur "OUI" et les 3 autres ne peuvent se trouver sur la même ligne, donc pas de conflit.

    Je vous remercie d'avance de votre aide.
    Cdt.

  2. #2
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    Bonjour,

    Il faut aller dans mise en forme conditionnelle. C'est le moyen le plus simple de faire ce que vous voulez faire

  3. #3
    Membre confirmé Avatar de horemheb
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 122
    Par défaut
    Bonjour,
    Si tu veux passer par VBA tu peux t'inspirer de l'application que j'ai écrite pour mettre en vert ou rouge les cellules d'un tableau selon qu'elles contiennent un 0 ou un 1
    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
    'boucle sur les lignes
    For i = 2 To 6
        'boucle sur les colonnes
        For j = 2 To 4
            'test de la cellule
            Cells(i, j).Select
            If Cells(i, j).Value = 0 Then
                'affectation de la couleur verte
                Selection.Interior.Color = QBColor(10)
            Else
                'affectation de la couleur rouge
                Selection.Interior.Color = QBColor(12)
            End If
        Next
    Next
    tu peux aussi passer par une macro : tu démarres une macro, tu fais une manip puis tu récupères le code correspondant que tu inclus dans tes boucles et tes tests
    Salutations

  4. #4
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Merci Horemheb,
    Dans ton exemple, tout le tableau se colore d'une couleur, ce qui ne correspond pas à mon besoin.
    Quelqu'un a t-il une solution?
    Pour répondre à bboy-easy, je pense qu'une MFC serait trop compliquée à mettre en oeuvre, car je dois tester de nombreuses colonnes pour aller chercher les valeurs "OUI",...etc
    Salutations.

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Regarde cette discussion. J'y ai proposé un code.
    A adapter.

    MISE EN COULEUR SOUS CONDITION

  6. #6
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Hello,
    Je débute en VBA, j'aimerais donc que quelqu'un écrive si possible le code adapté exactement à l'exemple que j'ai décrit...
    Merci de votre compréhension.
    Cdt.

  7. #7
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonsoir
    pour l'execution, onglet devellopeur, macro, colorie, executer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Compare Text
    Sub colorie()
    Application.ScreenUpdating = False
        For Each cell In Range("a1:a2000")
        If Cells(cell.Row, 6) = "OUI" Or Cells(cell.Row, 9) = "OUI" Or Cells(cell.Row, 14) = "OUI" Then Range("a" & cell.Row & ":dd" & cell.Row).Interior.ColorIndex = 40
    '    If Cells(cell.Row, 5) = "REFUS" Or Cells(cell.Row, 8) = "ANCIEN CLIENT" Or Cells(cell.Row, 13) = "SAF" Then Range("a" & cell.Row & ":dd" & cell.Row).Interior.ColorIndex = 3
     
        If Cells(cell.Row, 5) = "REFUS" Or Cells(cell.Row, 5) = "ANCIEN CLIENT" Or Cells(cell.Row, 5) = "SAF" Then Range("a" & cell.Row & ":dd" & cell.Row).Interior.ColorIndex = 3
        If Cells(cell.Row, 8) = "REFUS" Or Cells(cell.Row, 8) = "ANCIEN CLIENT" Or Cells(cell.Row, 8) = "SAF" Then Range("a" & cell.Row & ":dd" & cell.Row).Interior.ColorIndex = 3
        If Cells(cell.Row, 13) = "REFUS" Or Cells(cell.Row, 13) = "ANCIEN CLIENT" Or Cells(cell.Row, 13) = "SAF" Then Range("a" & cell.Row & ":dd" & cell.Row).Interior.ColorIndex = 3
        Next cell
    Application.ScreenUpdating = True
    End Sub
    ceci est néanmoins un forum d'entraide, ceci sous-entends normalement un minimum de travail de la part du demandeur.

  8. #8
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Un grand merci à toi, keygen08, c'est exactement la macro qu'il me fallait. J'ai bien noté le "minimum de travail" : je t'assure que je ne peux travailler plus en ce moment... je ne connaissais quasi pas Excel il y a 2 mois, je fais déjà des tableaux croisés dynamiques, des classeurs liés, et déjà mis au point, avec l'aide des internautes, une macro qui me permet, pour 11 chargés d'affaires différents, avec adresse différente, d'envoyer automatiquement un courrier à des prospects, pour qui j'ai justement inscrit la valeur "OUI" dans mon fameux tableau... : une case "OUI" par journée de prospection.

    Merci encore!

    Cdt.

    J'ai placé la macro sur le code de ma feuille pour une exé en temps réel.
    J'ai une autre difficulté à régler, que je n'avais pas précisée à l'origine ; je souhaiterais que la ligne se colore en vert, et annule les anciennes couleurs (rouge ou orange) quand la valeur "RDV" est présente dans la colonne P ou dans la colonne S (dans mon exemple, quand le RDV avec le prospect est obtenu, la ligne se colore en vert).
    Merci d'avance.
    Slt.

  9. #9
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    alors il faut rajouter dans le code de Keygen08:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Cells(cell.Row, 19) = "RDV" Or Cells(cell.Row, 16) = "RDV" Then
    Range("a" & cell.Row & ":dd" & cell.Row).Interior.ColorIndex = 4
    End If
    A placer en dernier et faire varier le chiffre du colorindex si besoin. (un chiffre représente une couleur, ici le 4 est le vert par exemple)

  10. #10
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Bonsoir à tous,

    La macro s'exécute correctement. Cependant, savez-vous comment revenir à la dernière couleur de ligne quand on supprime une valeur qui lui a donné sa couleur?
    Je m'explique:
    - si par exemple je saisis par erreur une valeur "OUI", et que je la supprime, comment retrouver une ligne blanche?
    - si après un RDV, la ligne est colorée en vert, et que le RDV n'a rien donné, je souhaite pouvoir supprimer la valeur "RDV" et que la ligne retrouve sa couleur orange.
    Peut-être avec la fonction Else...?
    En résumé, que la ligne retrouve sa couleur avant suppression de la dernière valeur.

    Merci de vos conseils avisés.
    Cordialement.

    Voici ma macro :

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    Application.ScreenUpdating = False
        For Each Cell In Range("a3:a2000")
     
        If Cells(Cell.Row, 44) = "REFUS CAT" Or Cells(Cell.Row, 44) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 44) = "SANS AUTO" _
        Or Cells(Cell.Row, 49) = "REFUS CAT" Or Cells(Cell.Row, 49) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 49) = "SANS AUTO" _
        Or Cells(Cell.Row, 54) = "REFUS CAT" Or Cells(Cell.Row, 54) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 54) = "SANS AUTO" _
        Or Cells(Cell.Row, 59) = "REFUS CAT" Or Cells(Cell.Row, 44) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 44) = "SANS AUTO" _
        Or Cells(Cell.Row, 64) = "REFUS CAT" Or Cells(Cell.Row, 64) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 64) = "SANS AUTO" _
        Or Cells(Cell.Row, 69) = "REFUS CAT" Or Cells(Cell.Row, 69) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 69) = "SANS AUTO" _
        Or Cells(Cell.Row, 74) = "REFUS CAT" Or Cells(Cell.Row, 74) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 74) = "SANS AUTO" _
        Or Cells(Cell.Row, 79) = "REFUS CAT" Or Cells(Cell.Row, 79) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 79) = "SANS AUTO" _
        Or Cells(Cell.Row, 84) = "REFUS CAT" Or Cells(Cell.Row, 84) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 84) = "SANS AUTO" _
        Or Cells(Cell.Row, 89) = "REFUS CAT" Or Cells(Cell.Row, 89) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 89) = "SANS AUTO" _
        Or Cells(Cell.Row, 94) = "REFUS CAT" Or Cells(Cell.Row, 94) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 94) = "SANS AUTO" _
        Or Cells(Cell.Row, 99) = "REFUS CAT" Or Cells(Cell.Row, 99) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 99) = "SANS AUTO" _
        Or Cells(Cell.Row, 104) = "REFUS CAT" Or Cells(Cell.Row, 104) = "CLIENT/PROSPECT INTERNE" Or Cells(Cell.Row, 104) = "SANS AUTO" _
        Then Range("a" & Cell.Row & ":dd" & Cell.Row).Interior.ColorIndex = 3
     
        If Cells(Cell.Row, 45) = "OUI" Or Cells(Cell.Row, 50) = "OUI" Or Cells(Cell.Row, 55) = "OUI" Or Cells(Cell.Row, 60) = "OUI" _
        Or Cells(Cell.Row, 65) = "OUI" Or Cells(Cell.Row, 70) = "OUI" Or Cells(Cell.Row, 75) = "OUI" Or Cells(Cell.Row, 80) = "OUI" _
        Or Cells(Cell.Row, 85) = "OUI" Or Cells(Cell.Row, 90) = "OUI" Or Cells(Cell.Row, 95) = "OUI" Or Cells(Cell.Row, 100) = "OUI" _
        Or Cells(Cell.Row, 105) = "OUI" Then Range("a" & Cell.Row & ":dd" & Cell.Row).Interior.ColorIndex = 40
     
        If Cells(Cell.Row, 48) = "RDV" Or Cells(Cell.Row, 53) = "RDV" Or Cells(Cell.Row, 58) = "RDV" Or Cells(Cell.Row, 63) = "RDV" _
        Or Cells(Cell.Row, 68) = "RDV" Or Cells(Cell.Row, 73) = "RDV" Or Cells(Cell.Row, 78) = "RDV" Or Cells(Cell.Row, 83) = "RDV" _
        Or Cells(Cell.Row, 88) = "RDV" Or Cells(Cell.Row, 93) = "RDV" Or Cells(Cell.Row, 98) = "RDV" Or Cells(Cell.Row, 103) = "RDV" _
        Or Cells(Cell.Row, 108) = "RDV" _
        Then Range("a" & Cell.Row & ":dd" & Cell.Row).Interior.ColorIndex = 4
     
        Next Cell
     
     
    Application.ScreenUpdating = True
     
    End Sub

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/11/2014, 19h39
  2. Rechercher si plusieurs valeurs sont présentes dans une piece
    Par progscoubi dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 31/07/2013, 14h33
  3. Réponses: 4
    Dernier message: 28/03/2011, 12h02
  4. Réponses: 2
    Dernier message: 29/09/2009, 15h33
  5. Réponses: 4
    Dernier message: 22/03/2007, 18h28

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