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

  • Initiateur de la discussion Initiateur de la discussion Titi5333
  • Date de début Date de début

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 !

T

Titi5333

Guest
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 modification par un modérateur:
Bonjour Sylvanu,
Merci !

J'ai déjà essayé cela ne fonctionne pas, les infirmières vont faire glisser la cellule pour réserver plusieurs 1/4 d'heure de réservation. c'est pour cela que je cherche un code VBA par ligne.

1634996823010.png
 
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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
413
Retour