Corriger un code VBA sur un fichier EXCEL 365

Bonjour
Je débute en programmation VBA.
Je ne parviens pas à faire fonctionner le code qui me permettrai dans la feuille jointe de riser automatiquement en fonction des éléments choisi dans des listes déroulantes de la colonne E et la colonne H.
La boucle doit parcourir chaque ligne de la feuille de calcul à partir de la ligne 2 jusqu’à la dernière ligne avec des données. Si la cellule de la colonne E n’est pas vide, les cellules de la même ligne de la colonne F à M sont grisées. Si la cellule de la colonne E est vide, les cellules de la même ligne de la colonne F à M sont réinitialisées à leur couleur par défaut. Si les cellules ne sont pas grisées, la macro vérifie si la cellule de la colonne H contient « A- Appel abouti ». Dans ce cas, les cellules de la même ligne de la colonne I à J sont grisées. Si les cellules ne sont pas grisées, la macro vérifie si la cellule de la colonne H contient « E-Numéro erroné sur fiche client ». Dans ce cas, les cellules de la même ligne de la colonne K à M sont grisées. Si la cellule de la colonne H est vide ou contient une autre valeur, les cellules de la colonne I à M sont réinitialisées à leur couleur par défaut.
La commande pour la colonne E fonctionne mais pas celles de la colonne H
Merci pour votre aide

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    ' Définir la feuille de calcul
    Set ws = Me
    
    ' Vérifier si la modification concerne la colonne E ou H
    If Not Intersect(Target, ws.Columns("E")) Is Nothing Or Not Intersect(Target, ws.Columns("H")) Is Nothing Then
        ' Trouver la dernière ligne avec des données dans la colonne E
        lastRow = ws.Cells(ws.Rows.Count, 5).End(xlUp).Row
        
        ' Boucler à travers chaque ligne pour vérifier les colonnes E et H
        For i = 2 To lastRow
            ' Vérifier la colonne E pour griser les colonnes F à M
            If Not IsEmpty(ws.Cells(i, 5).Value) Then
                ws.Range(ws.Cells(i, 6), ws.Cells(i, 13)).Interior.Color = RGB(169, 169, 169) ' Gris clair
            Else
                ws.Range(ws.Cells(i, 6), ws.Cells(i, 13)).Interior.ColorIndex = xlNone
                
                ' Si les cellules ne sont pas grisées, vérifier la colonne H pour griser les colonnes I à J ou K à M
                If ws.Cells(i, 8).Value = "A- Appel abouti" Then
                    ws.Range(ws.Cells(i, 9), ws.Cells(i, 10)).Interior.Color = RGB(169, 169, 169) ' Gris clair
                    ws.Range(ws.Cells(i, 11), ws.Cells(i, 13)).Interior.ColorIndex = xlNone
                ElseIf ws.Cells(i, 8).Value = "E-Numéro erroné sur fiche client" Then
                    ws.Range(ws.Cells(i, 11), ws.Cells(i, 13)).Interior.Color = RGB(169, 169, 169) ' Gris clair
                    ws.Range(ws.Cells(i, 9), ws.Cells(i, 10)).Interior.ColorIndex = xlNone
                Else
                    ws.Range(ws.Cells(i, 9), ws.Cells(i, 13)).Interior.ColorIndex = xlNone
                End If
            End If
        Next i
    End If
End Sub

SOS.xlsx (15,9 Ko)

Bonjour

Testes à l’appui chez moi celà fonctionne

Onglet avant :

Après saisie colonne « E » (cellule « E19 » « test »)

Après saisie colonne « H » (cellule « H2 » "B- Ne répond pas ")

Exactement le même résultat

Ce code fonctionne à l’identique pour une saisie en colonne « E » ou « H »

vous avez un problème avec les majuscules et miniscules.
Oubien vous utilisez « Option compare text » comme premièr ligne tout au début de votre module oubien vous utilisez la ligne ici dessous oubien vous utilisez « Abouti » au lieu de « abouti »

   If StrComp(ws.Cells(i, 8).Value, "A- Appel abouti", 1) = 0 Then
            

Bonsoir merci FFO merci Cow 18
Je joins le fichier vierge de saisie car je pense vous avoir induit en erreur. Le code pour la saisie dans la colonne E fonctionne parfaitement. Pat contre la commande de la colonne H ne fonctionne pas car si je choisi dans la liste déroulante de cette colonne le choix A- Appel Abouti ou E- Numéro erroné sur fiche client les cellules I à J dans le premier cas et K à M dns le second ne se grisent pas.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long

' Définir la feuille de calcul
Set ws = Me

' Vérifier si la modification concerne la colonne H
If Not Intersect(Target, ws.Columns("H")) Is Nothing Then
    ' Trouver la dernière ligne avec des données dans la colonne H
    lastRow = ws.Cells(ws.Rows.Count, 8).End(xlUp).Row
    
    ' Boucler à travers chaque ligne pour vérifier la colonne H
    For i = 2 To lastRow
        ' Vérifier la colonne H pour griser les colonnes I à J ou K à M
        If ws.Cells(i, 8).Value = "A- Appel abouti" Then
            ws.Range(ws.Cells(i, 9), ws.Cells(i, 10)).Interior.Color = RGB(169, 169, 169) ' Gris clair
            ws.Range(ws.Cells(i, 11), ws.Cells(i, 13)).Interior.ColorIndex = xlNone
        ElseIf ws.Cells(i, 8).Value = "E-Numéro erroné sur fiche client" Then
            ws.Range(ws.Cells(i, 11), ws.Cells(i, 13)).Interior.Color = RGB(169, 169, 169) ' Gris clair
            ws.Range(ws.Cells(i, 9), ws.Cells(i, 10)).Interior.ColorIndex = xlNone
        Else
            ws.Range(ws.Cells(i, 9), ws.Cells(i, 13)).Interior.ColorIndex = xlNone
        End If
    Next i
End If

End Sub

SOS.xlsm (27,5 Ko)

merci à vous

SOS.xlsm (46,8 Ko)