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 SubMerci 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 SubEssais 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 SubMerci encore!