Boucle de suppression de cellule

Bonjour tout le monde,

J'ai un fichier qui complète automatiquement 3 tableaux dans un onglet. La quantité de ligne de mon tableau est donc variable d'une fois à l'autre.

J'ai donc mis en place une boucle afin de supprimer les cellules vides de chaque tableau après l'importation pour les réduire au minimum.

Le premier tableau se trouve colonne B:I le second J:J et le dernier K:R (je n'ai pas réussi a mettre un fichier en attaché :(

Je rencontre un problème avec mes boucles.

Elles s'arrêtent toutes prématurément alors que la cellule contrôlée est belle est bien vide. J'ai déjà fait le nettoyage de cellule mais cela ne change rien.

Des idées de pourquoi elles s'arrêtent ?

Voici le code utilisé

Sub sup()

Sheets("Récap").Select
Dim i%

    For i = 300 To 5 Step -1

        If Cells(i, 2).HasFormula Or Cells(i, 2).Value = "" Then
        Application.Intersect(Range("B:I"), Rows(i)).Delete
        i = i - 1
        Else
            If Cells(i, 2).Value <> "" Then
            MsgBox "Ligne vide supprimé"
                Exit For
            End If
        End If
    Next i

    Dim j%
    For j = 50 To 5 Step -1

        If Cells(j, 10).Value = "" Then
        Application.Intersect(Range("J:J"), Rows(j)).Delete
        j = j - 1
        Else
            If Cells(j, 10).Value <> "" Then
            MsgBox "end"
                Exit For
            End If
        End If
    Next j

      Dim k%
    For k = 50 To 5 Step -1

        If Cells(k, 11).Value = "" Then
        Application.Intersect(Range("K:R"), Rows(k)).Delete
        k = k - 1
        Else
            If Cells(k, 11).Value <> "" Then
            MsgBox "end"
                Exit For
            End If
        End If
    Next k

End Sub

Bonjour,

Quand tu dis prématurément c'est quelle ligne de ton code VBA ? Quelle valeur possède la variable ?
Des lignes sont-elles tout de même supprimées ? Tu arrives à afficher toutes tes msgbox ?

Bonne soirée !

La boucle supprime des lignes pour chaque tableau mais s'arrête avant d'atteindre la première cellule qui contient une valeur. La msg box apparait comme si il avait trouvé quelque chose dans une cellule. Je confirme la msgbox et il passe à la boucle suivante ect.

Je joint le fichier (cette fois j'arrive).

Bonjour Laulo, Salut Ergotamine,

Les boucles s'arrêtent à cause du EXIT FOR. Il suffit que la condition soit vérifiée une fois pour qu'il y ait sortie.

Par ailleurs, il y a une décrémentation qui n'est peut-être pas utile (i = i - 1, j = j - 1, ...) et qui cause probablement le problème.

Une proposition d'adaptation du code :

Sub sup()

application.screenupdating = false
with Sheets("Récap")
    For i = 300 To 5 Step -1
        If .Cells(i, 2).HasFormula Or .Cells(i, 2).Value = "" Then .Range("B" & i & ":I" & i).Delete
        if i <= 50 then
            If .Cells(i, 10).Value = "" Then .range("J" & i).Delete
            if .Cells(i, 11).Value = "" Then .Range("K" & i & ":R" & i).Delete
        end if
    Next i
end with
application.screenupdating = true

End Sub

Cdlt,

Bonjour 3GB et Ergotamine (Désolé de mon manque de politesse Ergotamine de ne pas t'avoir salué a ta première réponse )

Excellent Merci pour tout ! le code fonctionne très bien sans la décrémentation de trop et j'ai supprimé les EXIT FOR.

voici le code qui va bien

Sub sup()

Sheets("Récap").Select
Dim i%

    For i = 300 To 5 Step -1

        If Cells(i, 2).HasFormula Or Cells(i, 2).Value = "" Then
        Application.Intersect(Range("B:I"), Rows(i)).Delete

        End If
    Next i

    Dim j%
    For j = 50 To 5 Step -1

        If Cells(j, 10).Value = "" Then
        Application.Intersect(Range("J:J"), Rows(j)).Delete

        End If
    Next j

      Dim k%
    For k = 60 To 5 Step -1

        If Cells(k, 11).Value = "" Then
        Application.Intersect(Range("K:R"), Rows(k)).Delete
                    End If
         Next k

    MsgBox "end"

End Sub
Rechercher des sujets similaires à "boucle suppression"