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 :

Changer les couleurs de plusieurs cellules en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Changer les couleurs de plusieurs cellules en VBA
    Bonjour à tous

    besoin d'aide en VBA

    J'ai une feuille "Feuille1", où la date d’aujourd’hui est notée en C1.

    Une série de date sont affichées en B6, C6, D6.
    je souhaiterais, que les cellules B6:Q6, change de couleur quand la date notée en D6 est plus petite que celle affichée en C1, et que soit noté en Q6, la mention "OK".
    Si D6 est plus grand que C1, alors rien n'est changé.
    Je souhaiterais, faire cela de la ligne B6 à B15

    Effectivement, je pourrais faire avec la mise en forme conditionnelle, mais je préférerais en VBA.

    merci encore

    je joint à ma demande un exemple. Il y a déjà une ébauche en VBA, mais je n’arrive pas à le généraliser pour toutes les lignes.

    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
    Private Sub Worksheet_Activate()
     
        Worksheet_Change Range("C1")
     
    End Sub
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim dt1 As Date
        Dim dt2 As Date
     
     
        If Target.Count > 1 Then
            Exit Sub
        End If
     
        If Target.Address = "$C$1" Or Target.Address = "$D$6" Then
            If DateDiff("d", Range("C1").Value, Range("D6").Value) < 0 Then
                Range("B6:Q6").Interior.Color = RGB(230, 215, 200)
                Range("Q6").Value = "OK"
            Else
                Range("B6:Q6").Interior.Color = RGB(255, 255, 255)
                Range("Q6").Value = ""
            End If
        End If
     
    End Sub
    Merci encore

    Titi32600
    Dernière modification par Invité ; 14/10/2016 à 11h13.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Par défaut
    Bonjour,

    Code à 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
     
     
        Dim dt1 As Date
        Dim dt2 As Date
        Dim ligneDeb As Integer, ligneFin As Integer, cpt As Integer
     
        ligneDeb = 6
        ligneFin = 15
     
     
        If Target.Count > 1 Then
            Exit Sub
        End If
     
        For cpt = ligneDeb To ligneFin
     
            If Target.Row > 5 And Target.Row > 16 Then
                If DateDiff("d", Cells(cpt, 3).Value, Cells(cpt, 4).Value) < 0 Then
                    Range(Cells(cpt, 2), Cells(cpt, 17)).Color = RGB(230, 215, 200)
                    Cells(cpt, 17).Value = "OK"
                Else
                    Range(Cells(cpt, 2), Cells(cpt, 17)).Color = RGB(255, 255, 255)
                    Cells(cpt, 17).Value = ""
                End If
     
            End If
     
        Next cpt
    Cordialement,

  3. #3
    Invité
    Invité(e)
    Par défaut
    slt GoldStar

    Un peu de mal à faire fonctionner ta formule

    cordialement

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Par défaut
    C'est à dire ?

    En passant j'ai vu une erreur dans mon code


    Remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Target.Row > 5 And Target.Row > 16 Then
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Target.Row > 5 And Target.Row < 16 Then

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re

    toujours pas de fonctionnement correct.

    j'ai du mal à comprendre la ligne 18

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If DateDiff("d", Cells(cpt, 3).Value, Cells(cpt, 4).Value) < 0 Then
    merci encore

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour à tous

    besoin d'aide en VBA

    J'ai modifié un peu le code, en y ajoutant "for...to".

    mais dès que je change la date en D6, toutes les autres lignes changent aussi de couleur.

    je n'arrive pas à voir ce qui ne vas pas dans mon code.

    le voici

    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
    Private Sub Worksheet_Activate()
     
       Worksheet_Change Range("C1")
     
    End Sub
     
        Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim dt1 As Date
        Dim dt2 As Date
     
    Application.EnableEvents = False
     
        For i = 6 To 15
     
        If DateDiff("d", Range("C1").Value, Range("D" & i).Value) < 0 Then
        Range(("B" & i), ("Q" & i)).Interior.Color = RGB(230, 215, 200) ' couleur de fond "Rouge Pale"
        Range("Q" & i).Value = "OK"
     
        Else
     
        Range(("B" & i), ("D" & i)).Interior.Color = RGB(255, 255, 255) ' couleur de fond "Blanc"
        Range(("P" & i), ("Q" & i)).Interior.Color = RGB(255, 255, 255) ' couleur de fond "Blanc"
        Range(("E" & i), ("H" & i)).Interior.Color = RGB(255, 255, 204) ' couleur de fond "Jaune pale"
        Range("Q" & i).Value = ""
     
        End If
        Next
     
        Application.EnableEvents = True
     
        End Sub
    merci encore

    titi32600

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

Discussions similaires

  1. [XL-2013] Changer les couleurs de plusieurs cellules
    Par Invité dans le forum Excel
    Réponses: 3
    Dernier message: 14/10/2016, 11h16
  2. [XL-2010] Changer les couleurs des cellules
    Par dubinou dans le forum Excel
    Réponses: 6
    Dernier message: 04/08/2015, 15h49
  3. Réponses: 6
    Dernier message: 18/04/2011, 10h46
  4. [VBA-A] changer les couleurs dans les listboxes
    Par Jik70 dans le forum VBA Access
    Réponses: 9
    Dernier message: 10/07/2006, 10h26
  5. Réponses: 2
    Dernier message: 03/05/2006, 15h01

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