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 ligne sous condition [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut colorier une ligne sous condition
    Bonjour,

    J'ai un fichier excel qui contient plusieurs onglets dont l'un est intitule "donnees".
    Cet onglet "donnees" contient un TCD de 5 colonnes.
    La colonne E (5ieme colonne) contient des chiffres positifs et negatifs.
    La premiere cellule du tableau E commence en E6 et la fin du tableau varie de jour en jour.
    Je souhaiterais que,
    des que j'ouvre cet onglet, seules les lignes du tableau dont les valeurs sont negatifs dans la colonne E se colorient en rouge.

    Je sais que je dois realiser une fonction evenementielle avec la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Activate()
    Mais je ne sais pas ecrire la suite.
    Pourriez vous m'aider.
    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Par défaut
    Un petit truc comme ça devrait pouvoir le faire.

    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
     
    Dim IntNbRow  as Integer
    Dim intCpt as Integer
     
        ' On Compte le nombre de lignes du TcD
    Range("E6").Select
    Range(Selection, Selection.End(xlDown)).Select
    IntNbRow = Selection.CurrentRegion.Rows.Count
     
        ' On parcours la colonne
    For intCpt = 1 to IntNbRow
              'Si la valeur est négative
         If Range("E" & intCpt).Value < 0 then
                 'On met en rouge
            With  Range("E" & intCpt).Interior
                 .ColorIndex = 3
                 .Pattern = xlSolid
             End With
         End If
    Next

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Bonjour Tarnx,

    Merci pour cette reponse qui fonctionne trés bien.
    Mais j'aurais souhaité que la ligne allant de B à E soit rouge et non pas seulement la cellule E qui contient la valeur négative.
    Par exemple, si E7 = -9 alors la ligne allant de B7 à E7 soit rouge et non pas uniquement E7.

  4. #4
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Bonjour facteur, Tarnx et le forum
    Je me permets d'intervenir.

    donc si la valeur de la cellule en "Ex" est négative, on selectionne les cellules de "Bx:Ex" que l'on colorie.

    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
    Dim IntNbRow  as Integer
    Dim intCpt as Integer
     
        ' On Compte le nombre de lignes du TcD
    Range("E6").Select
    Range(Selection, Selection.End(xlDown)).Select
    IntNbRow = Selection.CurrentRegion.Rows.Count
     
        ' On parcours la colonne
    For intCpt = 1 to IntNbRow
              'Si la valeur est négative
         If Range("E" & intCpt).Value < 0 then             'On met en rouge
            With  Range("B" & intCpt & ":E" & intCpt).Interior   '<<<< ICI de Bx à Ex
                 .ColorIndex = 3
                 .Pattern = xlSolid
             End With
         End If
    Next

    Pardon, je n'avais pas vu que tu étais là Tarnx.

    ESVBA

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Par défaut
    Il suffit de changer cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With  Range("E" & intCpt).Interior
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With  Range("B" & intCpt & ":E" & intCpt).Interior
    Edit : Devancé, mais au moins nos avis concordent.

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Merci Tarnx pour cette reponse et également merci à ESVBA.
    Mais, j'ai encore une dernière question :
    Actuellement, lorsque je réactualise mon TCD, et si la cellule Ex,qui était négative donc la ligne Bx à Ex colorié en rouge, devient positive, la ligne reste toujours en rouge . Alors que je souhaiterais que la couleur disparait car Ex est devenue postive.

    Comment inserer dans ce module une autre condition qui dirait : " Si la cellule Ex est négative alors la ligne allant de Bx à Ex se colorie en rouge sinon pas de colorie".

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Par défaut
    Il suffit de modifier la conditionnelle de cette façon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If Range("E" & intCpt).Value < 0 then             
          With  Range("B" & intCpt & ":E" & intCpt).Interior   
               .ColorIndex = 3
               .Pattern = xlSolid
           End With
    Else
           Range("B" & intCpt & ":E" & intCpt).Interior.ColorIndex = xlNone
    End If

  8. #8
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Merci encore tarnx pour ton aide
    Des mardi (et oui, lundi je suis en RTT, je test ton super programme.

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

Discussions similaires

  1. [XL-2003] Supprimer une ligne sous condition de date
    Par fortbelin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/09/2011, 21h37
  2. [CR 2008] tableau croisé dynamique(masquer une ligne sous condition)
    Par futurist dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 29/09/2010, 14h57
  3. Répéter une ligne sous condition
    Par gwirionez dans le forum SAS Base
    Réponses: 6
    Dernier message: 16/03/2010, 08h56
  4. [XL-2003] Copier coller une ligne sous condition
    Par geraldferri dans le forum Excel
    Réponses: 12
    Dernier message: 21/04/2009, 11h17
  5. Afficher une ligne sous condition
    Par gids01 dans le forum iReport
    Réponses: 4
    Dernier message: 25/09/2007, 13h48

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