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 :

Mise en forme conditionnelle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Par défaut Mise en forme conditionnelle
    Bonjour,

    je recherche un moyen de pouvoir surligner des lignes entières en fonction de la présence de certains mots dans une colonne.
    En fonction des mots, les couleurs seront différentes.
    Exemple :
    -toutes les lignes de la colonne T contenant le mot banane sont surlignées en jaune.
    -toutes les lignes de la colonne T contenant le mot Martinique seront aussi surlignées en jaune.
    -toutes les lignes de la colonne T contenant le mot fraise seront surlignées en rose.

    Et ainsi de suite pour de nombreux mots clés.


    J'ai réussi à faire un bout de code mais le problème est que l'objet Selection.FormatConditions dont je me sers est limité à 3 utilisations.
    Voici mon code :
    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
     
        Range("T2").Select
        Selection.FormatConditions.Delete 'au debut pour Reset toute la mise en page
     
     
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=TROUVE(""banane"";$T2)"
        Selection.FormatConditions(1).Interior.ColorIndex = 40
     
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=TROUVE(""Martinique"";$T2)"
        Selection.FormatConditions(2).Interior.ColorIndex = 40
     
     
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=TROUVE(""fraise"";$T2)"
        Selection.FormatConditions(3).Interior.ColorIndex = 20
     
     
     
        Selection.Copy
        'Columns("T:T").Select
        Columns().Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
    Si je me sers de Selection.FormatConditions(4), j'obtiens une erreur 1004.
    De ce que j'ai lu Selection.FormatConditions est limité à 3 occurences.

    Y a-t-il un moyen de contourner le problème?

    PS : Selection.FormatConditions.Delete efface la mise en page précédente et donc m'empêche d'avoir la mise en page désiré pour les cas précédent le Delete

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Salut
    Essaie ca (si tu ne veux colorier que la cellule concernée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub Test()
    Dim i As Long
    For i = ActiveSheet.Range("T65536").End(xlUp).Row To 2 Step -1
        If Cells(i, 20) Like "*banane*" Then Cells(i, 20).Interior.ColorIndex = 40
        If Cells(i, 20) Like "*Martinique*" Then Cells(i, 20).Interior.ColorIndex = 40
        If Cells(i, 20) Like "*fraise*" Then Cells(i, 20).Interior.ColorIndex = 20
        If Cells(i, 20) Like "*xyz*" Then Cells(i, 20).Interior.ColorIndex = 6
    Next i
    End Sub
    Tu dis
    A+

  3. #3
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    slt voici un petit code qui fait ce que tu souhaites:
    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
    Sub couleur()
    Dim i As Long, derlign As Long
     
    derlign = Sheets("Feuil1").Range("T65536").End(xlUp).Row
     
    With Sheets("Feuil1")
    For i = 1 To derlign
     If .Range("T" & i) = "banane" Or .Range("T" & i) = "Martinique" Then
      .Range("T" & i).Interior.ColorIndex = 6  'colorie en jaune
     
     ElseIf .Range("T" & i) = "fraise" Then
      .Range("T" & i).Interior.ColorIndex = 38  'colorie en rose
     
     End If
    Next i
    End With
     
    End Sub
    Tu dois l'adapter à tes besoins. Attention ceci ne colorie que la cellule comprenant le mot recherché
    A+

    EDIT: Melouille désolé pour le doublon

    Si tu veux souligner la ligne entière de la feuille il faut remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("T" & i).Interior.ColorIndex = 6  'colorie en jaune
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows (i).Interior.ColorIndex = 6  'colorie en jaune
    et si tu veux colorier une plage de cellule,ex cellule allant de colonne A à colonne T, remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("T" & i).Interior.ColorIndex = 6  'colorie en jaune
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("A" & i & ":T" & i).Interior.ColorIndex = 6  'colorie en jaune
    A+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Par défaut
    Merci melouille56 ton code marche impec.
    rvtoulon, j'ai essayé ton code mais j'ai une erreur '9' ("l'indice n'appartient pas à la sélection") au niveau de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    derlign = Sheets("Feuil1").Range("T65536").End(xlUp).Row

  5. #5
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Il faut remplacer ("Feuil1") par le nom de ta feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derlign = Sheets("Nomdetafeuille").Range("T65536").End(xlUp).Row
    idem ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Sheets ("Nomdetafeuille")
    ou alors comme Melouille mettre activesheet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    derlign = ActiveSheet.Range("T65536").End(xlUp).Row
    '........
    With ActiveSheet
    A+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Par défaut
    Merci cela fonctionne aussi.


    Merci pour votre aide

  7. #7
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    De rien, quand on peut le faire c'est avec plaisir.

    Une question pour Melouille à titre d'information ,je me coucherai moins bête ce soir, dans ton code tu mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Cells(i, 20) Like "*banane*" Then Cells(i, 20).Interior.ColorIndex = 40
    a quoi serve les * *

    Merci

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

Discussions similaires

  1. mise en forme conditionnelle et vba
    Par malabar92 dans le forum Access
    Réponses: 4
    Dernier message: 26/04/2006, 14h18
  2. Mise en forme conditionnelle
    Par the big ben 5 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 23/12/2005, 15h20
  3. [VBA][Excel] mise en forme conditionnelle
    Par titflocon dans le forum Access
    Réponses: 9
    Dernier message: 19/12/2005, 10h13
  4. Réponses: 4
    Dernier message: 15/11/2005, 18h53
  5. Mise en forme conditionnelle en VBA / Cut-Paste
    Par priest69 dans le forum IHM
    Réponses: 4
    Dernier message: 03/09/2005, 13h54

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