Ma macro saute des étapes

Bonjour à tous,

Je vous expose mon problème : ma macro, lorsqu'elle est exécutée automatiquement, saute des étapes, des lignes de code, sans que je sache pourquoi. Cela m'arrive par exemple dans le cas de ce bout de code :

'Checking if the column "Doc Items" is not empty, except if the value in the column "Document Status" is "F" (Forecast)

Dim zan As Long, aan As Integer, ban As Integer

aan = Sheets("VendorDocument").ListObjects("Table1").ListColumns("Doc Items").Index

ban = Sheets("VendorDocument").ListObjects("Table1").ListColumns("Document Status").Index

dl = Cells(Rows.Count, aan).End(xlUp).Row

For zan = 1 To dl

If IsEmpty(ActiveSheet.ListObjects("Table1").DataBodyRange(zan, ban).Value) And _

ActiveSheet.ListObjects("Table1").DataBodyRange(zan, ban).Value <> "F" Then

'Applying a red color to the cells of the column H (Doc Items) when there is an error

ActiveSheet.ListObjects("Table1").DataBodyRange(zan, aan).Interior.Color = vbRed

Else

ActiveSheet.ListObjects("Table1").DataBodyRange(zan, aan).Interior.Color = xlNone

End If

Next zan

La ligne "ActiveSheet.ListObjects("Table1").DataBodyRange(zan, aan).Interior.Color = vbRed" est sautée, et je n'ai aucune idée de pourquoi, surtout que j'utilise cette formulation pour d'autres lignes de code qui semblent très bien marcher. Ca m'arrive sur plusieurs lignes de code différentes.

Par contre, lorsque je sélectionne ligne par ligne et que j'exécute manuellement, tout semble bien se passer.

Des idées ?

Merci d'avance et bonne journée,

Aelyth

Bonjour,

Difficile d'affirmer avec certitude mais, en général, la ligne est sautée quand la condition n'est pas remplie. Je pense donc que le problème vient de votre condition et particulièrement de la fonction isempty. Il vaut mieux tester avec = "".

Par ailleurs, si cellule = "", forcément, cellule <> "F". Donc il faudra choisir entre ces 2 conditions.

Voici un essai :

Sub Aelyth() ':)

Dim zan As Long, aan As Integer, ban As Integer

with Sheets("VendorDocument").range("Table1")
    aan = .Listobject.ListColumns("Doc Items").Index
    ban = .Listobject.ListColumns("Document Status").Index
    dl = .Rows.Count
    For zan = 1 To dl
        If .cells(zan, ban).Value = "" Then
            .cells(zan, aan).Interior.Color = vbRed
        Else
            .cells(zan, aan).Interior.Color = xlNone
        End If
    Next zan
end with

end sub

Cdlt,

Bonjour,

D'après ce que je comprends, "" prendra en compte tous les textes, et non pas seulement "F". Or, il y a différentes propositions, et la seule acceptable est "F". Pour résumer, je souhaiterai que la cellule soit mise en rouge dès lors que la cellule de la colonne "Doc Items" est vide ET que la valeur dans la cellule de la colonne "Document Status" est différente de F.

Cordialement.

C'était peut-être ça le problème, les 2 conditions portaient sur la colonne Document Status. A voir :

Sub Aelyth()

Dim zan As Long, aan As Integer, ban As Integer

with Sheets("VendorDocument").range("Table1")
    aan = .Listobject.ListColumns("Doc Items").Index
    ban = .Listobject.ListColumns("Document Status").Index
    dl = .Rows.Count
    For zan = 1 To dl
        If .cells(zan, aan).Value = "" and .cells(zan, ban).Value <> "F"Then
            .cells(zan, aan).Interior.Color = vbRed
        Else
            .cells(zan, aan).Interior.Color = xlNone
        End If
    Next zan
end with

end sub

Oui, en effet, après correction c'est réglé ! Merci beaucoup de l'aide !

Rechercher des sujets similaires à "macro saute etapes"