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 :

Macro pour colorer une ligne [XL-2003]


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 Macro pour colorer une ligne
    Bonjour,

    Je souhaite colorer une ligne (plage allant de la colonne 1 à 15) en fonction de la valeur d'un menu déroulant se situant en colonne 2.
    Egalement une autre condition, colorer la ligne en fonction de la valeur de la colonne 15 sélectionné via menu déroulant.

    En sélectionnant les valeurs de la colonne 2 ou 15, la ligne ne change pas de couleur.
    Pourriez-vous m'aider s'il vous plaît. Je n'utilises pas le menu mise en forme conditionnelle car j'ai plus de 3 conditions.

    Ci-dessous le code que j'ai fait mais qui ne fonctionne pas :

    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
    38
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 22/04/2013 par SILCA
    '
     
        For i = 2 To 200
            Select Case Cells(i, 2).Value
                Case "AAT"
                    Range(Cells(i, 1), Cells(i, 15)).Interior.ColorIndex = 36
     
                Case "FMU"
                     Range(Cells(i, 1), Cells(i, 15)).Interior.ColorIndex = 40
     
                Case "THY"
                     Range(Cells(i, 1), Cells(i, 15)).Interior.ColorIndex = 41
     
                Case "VHT"
                     Range(Cells(i, 1), Cells(i, 15)).Interior.ColorIndex = 38
     
                Case "THY+FMU"
                     Range(Cells(i, 1), Cells(i, 15)).Interior.ColorIndex = 46
     
                Case "FMU+VHT"
                     Range(Cells(i, 1), Cells(i, 15)).Interior.ColorIndex = 43
     
                Case Else
                     Range(Cells(i, 1), Cells(i, 15)).Interior.ColorIndex = 2
            End Select
     
            Select Case Cells(i, 15).Value
                Case "0PR"
                    Range(Cells(i, 1), Cells(i, 15)).Interior.ColorIndex = 48
            End Select
     
        Next i
     
    End Sub

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Essaie en précisant l'objet (Feuil1 dans l'exemple) sur lequel s'applique l'instruction
    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
    Sub Macro1()
    Dim Plage As Range
    Dim i As Integer
        With Worksheets("Feuil1")
            For i = 2 To 200
                Set Plage = .Range(Cells(i, 1), Cells(i, 15))
                Select Case .Cells(i, 2).Value
                    Case "AAT": Plage.Interior.ColorIndex = 36
                    Case "FMU": Plage.Interior.ColorIndex = 40
                    Case "THY": Plage.Interior.ColorIndex = 41
                    Case "VHT": Plage.Interior.ColorIndex = 38
                    Case "THY+FMU": Plage.Interior.ColorIndex = 46
                    Case "FMU+VHT": Plage.Interior.ColorIndex = 43
                    Case Else: Plage.Interior.ColorIndex = 2
                End Select
                If .Cells(i, 15).Value = "0PR" Then
                    Plage.Interior.ColorIndex = 48
                End If
            Next i
            Set Plage = Nothing
        End With
    End Sub
    Cordialement.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Malheureusement, ta solution te fonctionne pas. Quand je change la valeur dans mon menu déroulant de la cellule en colonne 2 ligne 2, la lignez ne se colore pas comme souhaité, il ne se passe rien

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Je crois comprendre que tu souhaites que le remplissage des lignes se fasse automatiquement lors de la modification d'une valeur des cellules de la colonne A ou de la colonne O.
    Dans le classeur joint, on utilise l'évènement Change de la feuille 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Plage As Range
        If Target.Count = 1 And Target.Column = 2 Then
            Set Plage = Target.Offset(0, -1).Resize(, 15)
            Select Case Target.Value
                Case "AAT": Plage.Interior.ColorIndex = 36
                Case "FMU": Plage.Interior.ColorIndex = 40
                Case "THY": Plage.Interior.ColorIndex = 41
                Case "VHT": Plage.Interior.ColorIndex = 38
                Case "THY+FMU": Plage.Interior.ColorIndex = 46
                Case "FMU+VHT": Plage.Interior.ColorIndex = 43
                Case Else: Plage.Interior.ColorIndex = 2
            End Select
        End If
        If Target.Count = 1 And Target.Column = 15 Then
            Set Plage = Target.Offset(0, -14).Resize(, 15)
            If Target.Value = "OPR" Then
                Plage.Interior.ColorIndex = 48
            Else
                Plage.Interior.ColorIndex = 2
            End If
        End If
        Set Plage = Nothing
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

  5. #5
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Macro enregistrée le 22/04/2013 par SILCA
    Si tu as l’occasion de passer au 4ième viens me voir.

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

Discussions similaires

  1. [XL-2010] Macro pour colorer une cellule en fonction d'autres
    Par Fennec51 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/08/2014, 09h17
  2. Réponses: 0
    Dernier message: 27/07/2014, 05h32
  3. Macro pour déplacer une ligne d'un cran vers le haut
    Par bruxmu dans le forum VBA Word
    Réponses: 3
    Dernier message: 13/03/2013, 13h47
  4. Macro pour ajouter une ligne dans une feuille automatiquement
    Par nianko dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/11/2010, 10h52
  5. [E-02] Macro pour insérer une ligne
    Par HQ_LG4 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/10/2008, 01h07

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