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

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

  • classeur planning salle.xlsx
    16.1 KB · Affichages: 6
Dernière édition:
C

Compte Supprimé 979

Guest
Bonjour le fil,

Définir une plage nommé avec
VB:
=DECALER(Feuil5!$C$5;LIGNE()-5;1;1;24)

Et utiliser cette plage dans la MFC, logiquement plus aucun problème 🤔

@+
 

Pièces jointes

  • classeur planning salle.xlsx
    16.2 KB · Affichages: 4

Robert

XLDnaute Barbatruc
Repose en paix
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

  • Titi_ED.xlsm
    35.8 KB · Affichages: 4

Titi5333

XLDnaute Nouveau
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 !
 

Discussions similaires

Réponses
3
Affichages
227

Statistiques des forums

Discussions
315 093
Messages
2 116 125
Membres
112 666
dernier inscrit
Coco0505