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)