Problème de boucle dans un code

Bonjour forum,

je vous reviens encore avec un pépin dans mon code probablement mineur pour vous les experts

mais auquel je me bute depuis déjà de trop nombreuses heures.

Dans une liste de messages, je cherche à supprimer des lignes selon 2 conditions:

Suite aux lignes "messages" et aux lignes "Alertes" (en col. A), je veux supprimer les lignes suivantes dont la colonne A est vide.

Dim I As Integer, k As Integer

'On enleve les régions qui sont déjà en alerte
    For I = 1 To [B1].End(xlDown).Row
       For k = 1 To 25
       If Cells(I, 1) = "Alerte" And Cells(I + k, 1) = "" Then
       Cells(I + 1, 1).EntireRow.Delete
       Else
       Exit For
       End If
       Next
    Next I

    For I = 1 To [B1].End(xlDown).Row
       For k = 1 To 25
       If Cells(I, 1) = "Message" And Cells(I + k, 1) = "" Then
       Cells(I + k, 1).EntireRow.Delete
       Else
       Exit For
       End If
       Next
    Next I
End Sub

Le code que j'ai présentement ne parvient qu'à éliminer que certaines d'entre elles!?

Je vous fournis un fichier pour mieux comprendre mon Pb.

Je vous remercie pour vos réponses

Émil

Bonjour,

Avant de te lancer dans la suppression des lignes, il te faut identifier grâce à une formule tes fameuses lignes ...

Ensuite, il ne te reste plus qu'à supprimer les lignes ... en commençant par la fin ...

A+

Bonjour James,

je te remercie de te pencher sur mon problème et je constate que tu as bien saisi la problématique.

Néanmoins, je préférerais résoudre le problème grâce à du code car il s'inscrit dans une VBA beaucoup plus élaborée et où les formules peuvent devenir lourdes et difficiles à élaborer.

Émil

Bonsoir

Rien ne t'empêche d'incorporer la formule de James dans un code

Sub Supprime()
Application.ScreenUpdating = False
Dim Derlg As Integer, I As Integer

    Derlg = [B1].End(xlDown).Row

    Range("C2:C" & Derlg).FormulaR1C1 = _
        "=IF(AND(RC1="""",OR(R[-1]C1=""Alerte"",R[-1]C1=""Message"")),""suppr"",IF(AND(R[-1]C3=""suppr"",RC1=""""),""suppr"",""""))"
        Range("C2:C" & Derlg).Value = Range("C2:C" & Derlg).Value
    For I = Derlg To 1 Step -1
       If Cells(I, 3) = "suppr" Then Cells(I, 1).EntireRow.Delete
    Next I

End Sub

Amicalement

Nad

Bonsoir,

si je comprend bien, il faut d'abord identifier les lignes à supprimer avant de pouvoir les éliminer. Je croyais qu'il était plus simple d'y parvenir par une façon directe. Enfin, je vous remercie tous les deux de la suggestion.

Émil

Rechercher des sujets similaires à "probleme boucle code"