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 :

Pb changement de couleur de ligne avec fonction If en VBA [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Spécialiste Agirculture de Précision
    Inscrit en
    Mars 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Spécialiste Agirculture de Précision
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2015
    Messages : 29
    Points : 9
    Points
    9
    Par défaut Pb changement de couleur de ligne avec fonction If en VBA
    Bonjour,

    Ne connaissant malheureusement pas le VBA, je modifie des codes que je trouve sur le net, mais là je sèche. C’est pour cette raison que je demande votre aide si vous le voulez bien.

    Mon problème :
    J’ai un tableau à plusieurs lignes et colonnes sous Excel 2013 qui permet de géré les interventions une équipe de technicien dans plusieurs succursales.
    Ce tableau me permet de savoir quand l’intervention a été enregistré et à l’aide d’un code couleur, je sais également où elle a eu lieu. Je peux également savoir si l’intervention a été réalisée à l’aide d’un second code couleur.
    A présent ce qui fonctionne dans mon tableau c’est :
    - La mise à la date du jour automatiquement en fonction d’une valeur dans la colonne « I ».
    - La coloration d’une plage de cellules en fonction de la succursale.
    - La suppression de la date et de la coloration de la ligne d’intervention si suppression de la valeur dans la colonne « I ».
    - La coloration de la plage de cellules en fonction de la colonne « M » (si l’intervention est réalisée).

    Ce que je n’arrive pas à faire, et c’est ici que je fais appel à vous :
    - Revenir à la couleur d’origine si suppression du contenu de la colonne « M ».

    Comme vous pouvez le voir si je supprime le contenue d’une ligne en colonne « M », la couleur est totalement effacer, mais ce que je cherche c’est dès que je supprime le contenue de la colonne « M », la couleur revient à la couleur qui correspond au contenue de la colonne « I ».

    Voici mon code VBA à ce jour :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        'Target.Column = "N° de la colonne"
        'Then Range("colonne en lettre ou l'on veux afficher une valeur" & Target.Row).Value = "Ce que l'on veux faire afficher"
        'Else("colonne en lettre que l'on veux effacer si il n'y a rien dans la 1ère colonne désigné" & Target.Row).ClearContents
     
        If Target.Column = 9 Then If Not (IsEmpty(Target.Value)) Then Range("J" & Target.Row).Value = Date Else Range("J" & Target.Row).ClearContents
     
     
        'Coloration de ligne en fonction du texte
        'Si qqch dans la colonne "I" => coloration de la ligne de la case "A" à "M"
        'Si suppr dans la colonne "I" => la coloration s'efface de la case "A" à "M"
     
        Dim Plg, Plage As Range
        Set Plage = Range("I:I")
        Set Plg = Range("A" & Target.Row & ":M" & Target.Row)
        If Not Application.Intersect(Target, Plage) Is Nothing And Target.Count = 1 Then
            Select Case Target
                Case Is = "AN": Plg.Interior.Color = RGB(72, 198, 5)        'vert
                Case Is = "HE": Plg.Interior.Color = RGB(225, 206, 154)     'Vanille
                Case Is = "CH": Plg.Interior.Color = RGB(212, 115, 212)     'mauve
                Case Is = "VE": Plg.Interior.Color = RGB(84, 249, 141)      'menthe a l'eau
                Case Is = "FO": Plg.Interior.Color = RGB(255, 203, 96)      'aurore
                Case Is = "NA": Plg.Interior.Color = RGB(44, 117, 255)      'bleu électrique
                Case Is = "FG": Plg.Interior.Color = RGB(255, 255, 0)       'jaune
                Case Is = "MZ": Plg.Interior.Color = RGB(231, 62, 1)        'abricot
                Case Is = "ML": Plg.Interior.Color = RGB(254, 191, 210)     'rose dragée
                Case Is = "CO": Plg.Interior.Color = RGB(128, 208, 208)     'givré
                Case Else: Plg.Interior.Pattern = xlNone
            End Select
        End If
     
     
        'Si "x" dans la colonne "M" => coloration de la ligne de la case "A" à "M"
        'Si suppr du "x" dans la colonne "M" => suppr de la couleur de "x" de la case "A" à "M" puis retour à la couleur souhaiter en fonction de "I"
        'Cette dernière ne fonctionne pas
     
        Set Plage = Range("M:M")
        Set Plg = Range("A" & Target.Row & ":M" & Target.Row)
        If Not Application.Intersect(Target, Plage) Is Nothing And Target.Count = 1 Then
            Select Case Target
                Case Is = "x": Plg.Interior.Color = RGB(153, 51, 204)       'magenta foncé
                Case Else: Plg.Interior.Pattern = xlNone
            End Select
        End If
     
     
     End Sub

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        'Target.Column = "N° de la colonne"
        'Then Range("colonne en lettre ou l'on veux afficher une valeur" & Target.Row).Value = "Ce que l'on veux faire afficher"
        'Else("colonne en lettre que l'on veux effacer si il n'y a rien dans la 1ère colonne désigné" & Target.Row).ClearContents
     
        If Target.Column = 9 Then If Not (IsEmpty(Target.Value)) Then Range("J" & Target.Row).Value = Date _
            Else Range("J" & Target.Row).ClearContents
     
     
        'Coloration de ligne en fonction du texte
        'Si qqch dans la colonne "I" => coloration de la ligne de la case "A" à "M"
        'Si suppr dans la colonne "I" => la coloration s'efface de la case "A" à "M"
     
        Dim Plg, Plage As Range
        Set Plage = Range("I:I")
        Set Plg = Range("A" & Target.Row & ":M" & Target.Row)
        If Not Application.Intersect(Target, Plage) Is Nothing And Target.Count = 1 Then
            Select Case Target
                Case Is = "AN": Plg.Interior.Color = RGB(72, 198, 5)        'vert
                Case Is = "HE": Plg.Interior.Color = RGB(225, 206, 154)     'Vanille
                Case Is = "CH": Plg.Interior.Color = RGB(212, 115, 212)     'mauve
                Case Is = "VE": Plg.Interior.Color = RGB(84, 249, 141)      'menthe a l'eau
                Case Is = "FO": Plg.Interior.Color = RGB(255, 203, 96)      'aurore
                Case Is = "NA": Plg.Interior.Color = RGB(44, 117, 255)      'bleu électrique
                Case Is = "FG": Plg.Interior.Color = RGB(255, 255, 0)       'jaune
                Case Is = "MZ": Plg.Interior.Color = RGB(231, 62, 1)        'abricot
                Case Is = "ML": Plg.Interior.Color = RGB(254, 191, 210)     'rose dragée
                Case Is = "CO": Plg.Interior.Color = RGB(128, 208, 208)     'givré
                Case Else: Plg.Interior.Pattern = xlNone
            End Select
        End If
     
     
        'Si "x" dans la colonne "M" => coloration de la ligne de la case "A" à "M"
        'Si suppr du "x" dans la colonne "M" => suppr de la couleur de "x" de la case "A" à "M" puis retour à la couleur souhaiter en fonction de "I"
        'Cette dernière ne fonctionne pas
     
        Set Plage = Range("M:M")
        Set Plg = Range("A" & Target.Row & ":M" & Target.Row)
        If Not Application.Intersect(Target, Plage) Is Nothing And Target.Count = 1 Then
            If Target.Value = "x" Then
                Plg.Interior.Color = RGB(153, 51, 204)       'magenta foncé
            ElseifTarget.Value = ""
                Select Case Cells(Target.Row, 9).Value
                    Case Is = "AN": Plg.Interior.Color = RGB(72, 198, 5)        'vert
                    Case Is = "HE": Plg.Interior.Color = RGB(225, 206, 154)     'Vanille
                    Case Is = "CH": Plg.Interior.Color = RGB(212, 115, 212)     'mauve
                    Case Is = "VE": Plg.Interior.Color = RGB(84, 249, 141)      'menthe a l'eau
                    Case Is = "FO": Plg.Interior.Color = RGB(255, 203, 96)      'aurore
                    Case Is = "NA": Plg.Interior.Color = RGB(44, 117, 255)      'bleu électrique
                    Case Is = "FG": Plg.Interior.Color = RGB(255, 255, 0)       'jaune
                    Case Is = "MZ": Plg.Interior.Color = RGB(231, 62, 1)        'abricot
                    Case Is = "ML": Plg.Interior.Color = RGB(254, 191, 210)     'rose dragée
                    Case Is = "CO": Plg.Interior.Color = RGB(128, 208, 208)     'givré
                    Case Else: Plg.Interior.Pattern = xlNone
                End Select
            End If
        End If
     End Sub
    S'il y a quelque chose que tu ne comprends pas dans le code, dis-le moi.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Spécialiste Agirculture de Précision
    Inscrit en
    Mars 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Spécialiste Agirculture de Précision
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2015
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    Merci de vouloir m'aider, je comprend le principe, mais j'ai une erreur au niveau de ElseifTarget.Value = "" et du coup lorsque je met un "x" dans ma colonne "M" j'ai l'erreur qui vient et lorsque je supprime mon "x" de la colonne j'ai toujours ma couleur d'intervention faite qui reste =s

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Désolé, je n'ai pas pu tester le code. Il manque un espace et un "Then" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ElseIf Target.Value = "" Then"
    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ElseifTarget.Value = ""

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Spécialiste Agirculture de Précision
    Inscrit en
    Mars 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Spécialiste Agirculture de Précision
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2015
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    J'ai trouver ce qu'il falait mettre...

    ElseIf (Target.Value = "") Then à la place de ElseifTarget.Value = "" ce qui donne:

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        'Target.Column = "N° de la colonne"
        'Then Range("colonne en lettre ou l'on veux afficher une valeur" & Target.Row).Value = "Ce que l'on veux faire afficher"
        'Else("colonne en lettre que l'on veux effacer si il n'y a rien dans la 1ère colonne désigné" & Target.Row).ClearContents
     
        If Target.Column = 9 Then If Not (IsEmpty(Target.Value)) Then Range("J" & Target.Row).Value = Date _
            Else Range("J" & Target.Row).ClearContents
     
     
        'Coloration de ligne en fonction du texte
        'Si qqch dans la colonne "I" => coloration de la ligne de la case "A" à "M"
        'Si suppr dans la colonne "I" => la coloration s'efface de la case "A" à "M"
     
        Dim Plg, Plage As Range
        Set Plage = Range("I:I")
        Set Plg = Range("A" & Target.Row & ":M" & Target.Row)
        If Not Application.Intersect(Target, Plage) Is Nothing And Target.Count = 1 Then
            Select Case Target
                Case Is = "AN": Plg.Interior.Color = RGB(72, 198, 5)        'vert
                Case Is = "HE": Plg.Interior.Color = RGB(225, 206, 154)     'Vanille
                Case Is = "CH": Plg.Interior.Color = RGB(212, 115, 212)     'mauve
                Case Is = "VE": Plg.Interior.Color = RGB(84, 249, 141)      'menthe a l'eau
                Case Is = "FO": Plg.Interior.Color = RGB(255, 203, 96)      'aurore
                Case Is = "NA": Plg.Interior.Color = RGB(44, 117, 255)      'bleu électrique
                Case Is = "FG": Plg.Interior.Color = RGB(255, 255, 0)       'jaune
                Case Is = "MZ": Plg.Interior.Color = RGB(231, 62, 1)        'abricot
                Case Is = "ML": Plg.Interior.Color = RGB(254, 191, 210)     'rose dragée
                Case Is = "CO": Plg.Interior.Color = RGB(128, 208, 208)     'givré
                Case Else: Plg.Interior.Pattern = xlNone
            End Select
        End If
     
     
        'Si "x" dans la colonne "M" => coloration de la ligne de la case "A" à "M"
        'Si suppr du "x" dans la colonne "M" => suppr de la couleur de "x" de la case "A" à "M" puis retour à la couleur souhaiter en fonction de "I"
     
        Set Plage = Range("M:M")
        Set Plg = Range("A" & Target.Row & ":M" & Target.Row)
        If Not Application.Intersect(Target, Plage) Is Nothing And Target.Count = 1 Then
            If Target.Value = "x" Then
                Plg.Interior.Color = RGB(153, 51, 204)       'magenta foncé
            ElseIf (Target.Value = "") Then
                Select Case Cells(Target.Row, 9).Value
                    Case Is = "AN": Plg.Interior.Color = RGB(72, 198, 5)        'vert
                    Case Is = "HE": Plg.Interior.Color = RGB(225, 206, 154)     'Vanille
                    Case Is = "CH": Plg.Interior.Color = RGB(212, 115, 212)     'mauve
                    Case Is = "VE": Plg.Interior.Color = RGB(84, 249, 141)      'menthe a l'eau
                    Case Is = "FO": Plg.Interior.Color = RGB(255, 203, 96)      'aurore
                    Case Is = "NA": Plg.Interior.Color = RGB(44, 117, 255)      'bleu électrique
                    Case Is = "FG": Plg.Interior.Color = RGB(255, 255, 0)       'jaune
                    Case Is = "MZ": Plg.Interior.Color = RGB(231, 62, 1)        'abricot
                    Case Is = "ML": Plg.Interior.Color = RGB(254, 191, 210)     'rose dragée
                    Case Is = "CO": Plg.Interior.Color = RGB(128, 208, 208)     'givré
                    Case Else: Plg.Interior.Pattern = xlNone
                End Select
            End If
            End If
     End Sub
    on a repondu en même temps =) en tout cas merci à toi, cela fonctionne très bien, c'est parfait

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/04/2008, 10h14
  2. Comment changer les couleurs des lignes avec displaytag
    Par rlnd23 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/10/2006, 13h52
  3. [XSL/CSS] Changement de couleur une ligne sur deux
    Par FlyByck dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/09/2006, 20h20
  4. Changement de couleur des lignes d'un DATAGRID
    Par 2506LE dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/07/2006, 10h48
  5. C# Changement de couleur des lignes d'une datagrid
    Par Depteam1 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 11/06/2006, 10h31

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