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 :

Couleurs de fond différents si cellules colonne différents [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut Couleurs de fond différents si cellules colonne différents
    Bonjour
    Je recherche un code qui modifie la couleur de fond d'une ligne de A à E si la cellule de la colonne E1 est différente de E2 etc... sachant qu'il serait possible d'utiliser une vingtaines de codes couleurs Excel (clairs) sur 56 de façon à pouvoir tout de même lire la police des cellules coloriées.
    Aujourd'hui, je dois effectuer cette manipulation à la main. J'essaie de voir si c'est possible.
    Merci

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Ce code devrait s'approcher de se que tu souhaites
    Ici on compare la colonne E et F (je ne comprend la notion de colonne E1 et E2 car pour moi ce sont des cellules)

    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
    Dim i As Long
     
    i = 1
     
    Do While Range("E1" & i).Value <> ""
     
        If Range("E" & i).Value <> Range("F" & i).Value Then
     
            Range("A" & i & ":D" & i).Interior.ColorIndex = 20
     
        End If
     
     
        i = i + 1
    Loop

  3. #3
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Bonjour jfontaine

    J'ai 5 colonnes A B C D E et des données sont dans chaque cellules par ligne
    Données en A2 B2 C2 D2 E2(titi)
    Données en A3 B3 C3 D3 E3'toto)
    Données en A4 B4 C4 D4 E4(titi)
    Données en A5 B5 C5 D5 E5(tata)
    etc..

    Quand E2 et E4 sont identhiques je souhaite que la même couleur apparaisse en A2 B2 C2 E2 et A4 B4 C4 D4 E4 car (titi)

    Merci déjà pour ton code

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Voici un code a tester

    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
    Dim i As Long
    Dim nb As Integer
    Dim j As Integer
     
    Dim rg As Range
     
    i = 1
     
    Do While Range("E" & i).Value <> ""
     
        nb = Application.WorksheetFunction.CountIf(Range("E" & i & ":E64000"), Range("E" & i).Value)
     
        If nb > 1 And Range("D" & i).Interior.ColorIndex = xlNone Then
     
            Range("A" & i & ":D" & i).Interior.ColorIndex = i
     
            For j = 1 To nb - 1
                If j = 1 Then
                    Set rg = Range("E:E").Find(Range("E" & i).Value, Range("E" & i + 1))
                Else
                    Set rg = Range("E:E").FindNext(rg)
                End If
     
                Range("A" & rg.Row & ":D" & rg.Row).Interior.ColorIndex = i
     
            Next j
     
        End If
     
     
        i = i + 1
    Loop

  5. #5
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    jfontaine, chapeau,

    Ta macro fonctionne très bien à part la ligne 1 et 3 ou seulement ligne 3 pour chaque groupe qui n'ont pas la même couleur, plus bas des groupes c'est de la même couleur juste.
    Si tu pourrais corriger ça se serait super.

    J'ose aussi te demander, plutôt que d'avoir une couleur aléatoire parfois trop sombre, serait il possible d'affecter un code couleur choisie pour le premier groupe titi, un autre code couleur choisie pour le deuxième groupe toto, un autre code couleur choisie pour le troisième groupe tata, etc...
    Ma demande est énorme, mais ce serait tellement beau après...
    Merci beaucoup

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Ta macro fonctionne très bien à part la ligne 1 et 3 ou seulement ligne 3 pour chaque groupe qui n'ont pas la même couleur, plus bas des groupes c'est de la même couleur juste.
    Peux tu détailler ce qui ne va pas

    Ci dessous l'adaptation avec la maitrise des couleurs
    Les codes couleur sont a mettre dans la colonne M (a toi de modifier le code pour mettre ces couleurs sur une feuille parametres par exemple)

    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
    Dim i As Long
    Dim nb As Integer
    Dim j As Integer
    Dim intCouleur As Integer
     
    Dim rg As Range
     
    intCouleur = 1
    i = 1
     
    Do While Range("E" & i).Value <> ""
     
        nb = Application.WorksheetFunction.CountIf(Range("E" & i & ":E64000"), Range("E" & i).Value)
     
        If nb > 1 And Range("D" & i).Interior.ColorIndex = xlNone Then
     
            Range("A" & i & ":D" & i).Interior.ColorIndex = Range("M" & intCouleur).Value
     
            For j = 1 To nb - 1
                If j = 1 Then
                    Set rg = Range("E:E").Find(Range("E" & i).Value, Range("E" & i + 1))
                Else
                    Set rg = Range("E:E").FindNext(rg)
                End If
     
                Range("A" & rg.Row & ":D" & rg.Row).Interior.ColorIndex = Range("M" & intCouleur).Value
     
            Next j
     
            intCouleur = intCouleur + 1
     
        End If
     
     
        i = i + 1
    Loop

  7. #7
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Jérôme
    Je te joins la pièce jointe la plus clean possible, j'ai oublié aussi après le lancement de la macro il y a une alerte Msbox de Microsoft Visual Basic avec une croix rouge et le nombre 400 dedans.
    Merci pour cette recherche.
    Fichiers attachés Fichiers attachés

  8. #8
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Voila c'est corrigé

    Par contre, je n'ai pas eu d'erreur 400

    CouleursJfontaine(1).xls

  9. #9
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    C'est grandiose, c'est magnifique, je suis bluffé ...
    Un grand merci pour tout.
    Bien cordialement

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 07/04/2012, 09h34
  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. couleur de fond ligne et cellule
    Par CAML dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 18/07/2007, 08h24
  5. 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