Macro If deux variables et deux conditions

Bonjour,

J'aimerais que ma macro efface certaines données si il y a écrit "OK" dans la colonne A et si il y a écrit "coûts" dans la colonne B.

Et s'il y a seulement "OK" colonne A, qu'elle efface d'autres données.

Et s'il n'y a ni "OK" et ni "coûts", alors ne rien faire.

J'ai commencé à faire ceci, mais je ne sais pas comment traiter la boucle avec les deux variables, et je ne comprends pas pourquoi, l'erreur me dit qu'il y a Next without for...

Option Explicit

Sub EffacerOK()
Dim J As Long, K As Long

  For J = 4 To Range("A" & Rows.Count).End(xlUp).Row
  For K = 4 To Range("B" & Rows.Count).End(xlUp).Row
    If Range("A" & J) = "OK" Then
   If Range("B" & K) = "coûts" Then
    Range("E" & J).ClearContents
    End If
    Next J
     Next K
     If Range("A" & J) = "Passt" Then
            Range("D" & J & ",E").ClearContents
    End If
  Next J
End Sub

Merci pour l'aide et les réponses!

Bonjour,

Si tu tests tes colonnes A et B ligne à ligne, pour moi tu n'as pas besoin de 2 boucles.

Option Explicit

Sub EffacerOK()
Dim J As Long

  For J = 4 To Range("A" & Rows.Count).End(xlUp).Row
    If Range("A" & J) = "OK" and Range("B" & J) = "coûts" Then
            Range("E" & J).ClearContents
    ElseIf If Range("A" & J) = "Passt"  Then
            Range("D" & J & ":E" & J).ClearContents
    ElseIf Range("A" & J) = "OK" and Range("B" & J) <> "coûts" then
           ' ton traitement quand il n'y a que OK en colonne A 
    End If
Next J

End Sub

Essais ceci déjà, mais avec ton fichier cela serait mieux, car j'ai un peu de mal à visualiser tes données là, entre ton explication et ton bout de macro qui ne disent pas tout à fait la même chose.

Cordialement,

Désolée j'ai oublié de joindre le fichier, je l'avais préparé en plus xD

Merci beaucoup pour la réponse! Donc dans ce fichier, j'aimerais que les informations "montant" et "nom facture" (colonnes D et E) soient effacées s'il y a seulement OK, et que l'information "montant" seulement soit effacée s'il y a écrit OK et coûts.

Il faut mieux se fier à ce que j'écris plutôt qu'au code de la macro ^^

Merci pour la réponse, je vais étudier ca!

Edit: après test de la macro, c'est bon elle fonctionne et c'est ce que je voulais, merci beaucoup!

Je pensais qu'il fallait définir les deux plages de données en tant que variables, mais en fait le faire une fois suffit.

Mais, une erreur s'est glissé dans la macro de mon premier post, ce qui a du causer de l'incompréhension, désolée.

Ici:

Option Explicit

    Sub EffacerOK()
    Dim J As Long

      For J = 4 To Range("A" & Rows.Count).End(xlUp).Row
        If Range("A" & J) = "OK" and Range("B" & J) = "coûts" Then
                Range("E" & J).ClearContents
        ElseIf If Range("A" & J) = "Passt"  Then 
'Ce nest pas Passt, c'est OK, je me suis trompée... Une fois ce mot rectifié, tout fonctionne!
                Range("D" & J & ":E" & J).ClearContents
       End If
    Next J

    End Sub

Merci encore!

Rechercher des sujets similaires à "macro deux variables conditions"