XL 2016 Besoin d'aide ! Code BVA pour changer la couleur de 2 cellules d'une ligne si valeur identique

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Titi5333

XLDnaute Nouveau
Bonjour,
J'ai besoin d'afficher une erreur (cellules passe en rouge ) si deux cellules ont la même valeur sur une ligne d'un tableau.
Je cherche un code BVA car si j'utilise une mise en forme conditionnelle, si je copie dans le tableau cela ne fonctionne plus.

Mon problème : je dois permettre sur un planning de réserver une salle (de 1à 7) sans que quelqu'un réserve la même salle.

1634990246090.png


J'aimerais si même salle sur la même ligne, alors les 2 cellules passe au rouge.

Merci d'avance pour votre aide !
 

Pièces jointes

Dernière édition:
Bonjour le fil, Bonjour le forum,

Une proposition VBA avec la macro événementielle Change ci-dessous :

VB:
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Byte 'déclare la variable K (incrément)


Select Case Target.Column 'agit ne fonction de la colonne de la cellule modifiée (Target)
    Case 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27 'colonnes imparires de 5 à 27
        Select Case Target.Value 'agit en fonction de la valeur de la cellule modifiée
            'Mise en forme (plus conditionnelle mais par code)
            Case 1
                Target.Interior.Color = RGB(255, 199, 206)
                Target.Font.Color = RGB(156, 0, 6)
            Case 2
                Target.Interior.Color = RGB(255, 235, 156)
                Target.Font.Color = RGB(156, 101, 0)
            Case 3
                Target.Interior.Color = RGB(198, 239, 206)
                Target.Font.Color = RGB(0, 97, 0)
            Case 4
                Target.Interior.Color = RGB(91, 155, 213)
                Target.Font.Color = RGB(255, 255, 255)
            Case 5
                Target.Interior.Color = RGB(255, 255, 0)
                Target.Font.Color = RGB(255, 0, 0)
            Case 6
                Target.Interior.Color = RGB(0, 176, 240)
                Target.Font.Color = RGB(255, 255, 255)
            Case 7
                Target.Interior.Color = RGB(169, 208, 142)
                Target.Font.Color = RGB(255, 255, 255)
            Case Else
                Target.Interior.Color = RGB(255, 255, 255)
                Target.Font.Color = RGB(0, 0, 0)
        End Select 'fin de l'action en fonction de la valeur de la cellule
    For J = 5 To 25 Step 2 'boucle 1 : des colonnes 5 à 25
        For K = J + 2 To 27 'boucle 2 : des colonnes J+2 à 27
            If Not Cells(Target.Row, J).Value = "" Then 'condition 1 : si la cellule modifiée en colonne J n'est pas vide
                If Cells(Target.Row, J) = Cells(Target.Row, K) Then 'condition 2 : si la cellule modifiée en colonne J est égale à la cellule de la même ligne en colonne K
                    Cells(Target.Row, J).Interior.Color = RGB(255, 0, 0) 'fond rouge de la cellule modifié
                    Cells(Target.Row, J).Font.Color = RGB(0, 0, 0) 'encre noire de la celllue modifiée
                    Cells(Target.Row, K).Interior.Color = RGB(255, 0, 0) 'fond rouge de la cellule de la même ligne en colonne K
                    Cells(Target.Row, K).Font.Color = RGB(0, 0, 0) 'encre noire de la cellule de la même ligne en colonne K
                End If 'fin de la condition 2
            End If 'fin de la condition 1
        Next K 'prochaine colonne de la boucle 2
    Next J 'prochaine colonne de la boucle 1
End Select 'fin de l'action en fonctoion de la colonne de la celllue modifiée
End Sub
Le fichier :
 

Pièces jointes

Bonjour le fil, Bonjour le forum,

Une proposition VBA avec la macro événementielle Change ci-dessous :

VB:
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Byte 'déclare la variable K (incrément)


Select Case Target.Column 'agit ne fonction de la colonne de la cellule modifiée (Target)
    Case 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27 'colonnes imparires de 5 à 27
        Select Case Target.Value 'agit en fonction de la valeur de la cellule modifiée
            'Mise en forme (plus conditionnelle mais par code)
            Case 1
                Target.Interior.Color = RGB(255, 199, 206)
                Target.Font.Color = RGB(156, 0, 6)
            Case 2
                Target.Interior.Color = RGB(255, 235, 156)
                Target.Font.Color = RGB(156, 101, 0)
            Case 3
                Target.Interior.Color = RGB(198, 239, 206)
                Target.Font.Color = RGB(0, 97, 0)
            Case 4
                Target.Interior.Color = RGB(91, 155, 213)
                Target.Font.Color = RGB(255, 255, 255)
            Case 5
                Target.Interior.Color = RGB(255, 255, 0)
                Target.Font.Color = RGB(255, 0, 0)
            Case 6
                Target.Interior.Color = RGB(0, 176, 240)
                Target.Font.Color = RGB(255, 255, 255)
            Case 7
                Target.Interior.Color = RGB(169, 208, 142)
                Target.Font.Color = RGB(255, 255, 255)
            Case Else
                Target.Interior.Color = RGB(255, 255, 255)
                Target.Font.Color = RGB(0, 0, 0)
        End Select 'fin de l'action en fonction de la valeur de la cellule
    For J = 5 To 25 Step 2 'boucle 1 : des colonnes 5 à 25
        For K = J + 2 To 27 'boucle 2 : des colonnes J+2 à 27
            If Not Cells(Target.Row, J).Value = "" Then 'condition 1 : si la cellule modifiée en colonne J n'est pas vide
                If Cells(Target.Row, J) = Cells(Target.Row, K) Then 'condition 2 : si la cellule modifiée en colonne J est égale à la cellule de la même ligne en colonne K
                    Cells(Target.Row, J).Interior.Color = RGB(255, 0, 0) 'fond rouge de la cellule modifié
                    Cells(Target.Row, J).Font.Color = RGB(0, 0, 0) 'encre noire de la celllue modifiée
                    Cells(Target.Row, K).Interior.Color = RGB(255, 0, 0) 'fond rouge de la cellule de la même ligne en colonne K
                    Cells(Target.Row, K).Font.Color = RGB(0, 0, 0) 'encre noire de la cellule de la même ligne en colonne K
                End If 'fin de la condition 2
            End If 'fin de la condition 1
        Next K 'prochaine colonne de la boucle 2
    Next J 'prochaine colonne de la boucle 1
End Select 'fin de l'action en fonctoion de la colonne de la celllue modifiée
End Sub
Le fichier :
Merci beaucoup GENIAL ! vous êtes trop fort !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
338
Retour