Suppression d'une ligne si la cellule de la colonne X est vide

Bonjour à tous,

Alors voila j'ai besoin de supprimer une ligne entière si en colonne CI nous n'avons rien (vide), c'est un fichier avec + de 40000 lignes et 132 colonnes donc assez gros fichier...

J'ai essayé de mettre en place la macro suivante mais j'ai un problème de dépassement de capacité que je ne parviens pas à résoudre (Erreur 6)

Pourriez vous m'aider ?

Sub Suppr()
    Dim n%, i%  'Déclaration des variables
    Application.ScreenUpdating = False
    With Worksheets("Formatage") 'Nom de la feuille à modifier suivant le cas
        n = .Range("CI" & .Rows.Count).End(xlUp).Row 'N° de la dernière ligne remplit
          For i = n To 2 Step -1 'Boucle de la dernière ligne remplit vers la ligne 2 (première ligne remplit) par PAS de -1
              If Range("CI" & i) = "" Then .Range("CI" & i).EntireRow.Delete 'si la ligne de la colonne CI est = à "" , suppression de la ligne
          Next i
    End With
End Sub

J'ai également essayé de faire la macro suivante mais cela freeze Excel, donc surement pas adaptée ... :

Sub ExclureCertainnesLignes()

Sheets("Formatage").Select
Dim i As Long, j As Long, MesVals As Variant
'Renseigner les valeur recherchée pour supprimer les lignes
MesVals = Array("")

For i = Range("CI50000").End(xlUp).Row To 1 Step -1
    For j = LBound(MesVals) To UBound(MesVals)
    '88 correspond à la colonne CI
        If MesVals(j) = Cells(i, 88).Value Then Rows(i).Delete: Exit For
    Next j
'Next i
End Sub

Bonjour toutes et tous

j'ai un petit un doute avec une des deux des déclarations de ces variables

n, i as Long

Dim n&, i&  'Déclaration des variables

Long (&)

Les variables de type Long peuvent avoir des valeurs comprises entre -2 147 483 648 et 2 147 483 647


Integer (%)

Les variables de type Integer peuvent avoir des valeurs comprises entre -32 768 et 32 767

Option Explicit 
Sub Suppr()
On Error Resume Next
    Dim n&, i&  'Déclaration des variables
    Application.ScreenUpdating = False
    With Worksheets("Formatage") 'Nom de la feuille à modifier suivant le cas
        n = .Range("CI" & .Rows.Count).End(xlUp).Row 'N° de la dernière ligne remplit
          For i = n To 2 Step -1 'Boucle de la dernière ligne remplit vers la ligne 2 (première ligne remplit) par PAS de -1
              If Range("CI" & i) = "" Then .Range("CI" & i).EntireRow.Delete 'si la ligne de la colonne CI est = à "" , suppression de la ligne

          Next i
              End With   ' corrigé 22062020 à 21h26
On Error Goto 0
    Application.ScreenUpdating = True ' pas obligatoire
End Sub

sans aucune certitude

crdlt,

André

Bonjour,

Merci d'avoir pris le temps pour répondre,

J'ai essayé votre code, J'ai un message qui me dit : Erreur de compilation :

End With sans With

re

oups

End With

Next i

j'ai inversé sans faire exprès

         Next i
            End With

J'ai le même problème de freeze d'Excel ...

J'ai essayé cela mais sans succès, ça mouline et rien ne semble se passer :

Sub suppr()
'Lancement de toutes les Bruts
Worksheets("Formatage").Range("CI:CI").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Bon j'ai adapté cette macro qui fait ce que je veux (supprime les lignes qui ont dans la colonne CI "" (en regardant la derniere celule remplie en G, néanmoins c'est affreusement long (5 minutes) et j'imagine que ça pourrais aller plus vite si c'était optimisé par un connaisseur du forum, du genre ajouter à la sélection pour supprimer à la fin au lieu de supprimer à chaque fois la ligne ?

Ou faire un filtre pour ne pas avoir les cellules vide de la colonne CI et remplacer les données de la feuille en cours par le resultat de ce filtre ? mais la ça me dépasse !

help ? =)

Sub Ma_05_ExclureCertainnesLignes()
    ThisWorkbook.Worksheets("formatage").Activate
    j = 1
    For i = 1 To Range("G50000").End(xlUp).Row   'calcule la dernière cellule remplie dans la colonne 7 colonne G
        If Cells(j, 87).Value = "" Then 
            Cells(j, 87).EntireRow.Delete
        Else
            j = j + 1
        End If
    Next i
    MsgBox "Macro terminée"

Bonjour toutes et tous

Ah je comprend mieux, s'il y a des filtres, il faut chercher dans le forum comment ôter les filtres provisoirement dans un 1er temps dans 2nd temps l’exécution de ton code et dans le 3ème temps remettre les filtres

Spoiler
Sub AjouteFiltre()
  With Sheets("MAFEUILLE") ' remplacer  MAFEUILLE par la feuille adéquate
    .Select
    If .AutoFilterMode = True Then .AutoFilterMode = False
    .Range("A2:Z2").AutoFilter
  End With
End Sub
Sub SupprimeFiltre()
  With Sheets("MAFEUILLE") ' remplacer  MAFEUILLE par la feuille adéquate
    .Select
    If .AutoFilterMode = True Then .AutoFilterMode = False
  End With
End Sub

suivant ton code ci-dessus à tester:

Sub Ma_05_ExclureCertainnesLignes()
' déclaration des variables 
Dim i, j As Integer
On Error Resume Next
  With Sheets("formatage")
    .Select
    If .AutoFilterMode = True Then .AutoFilterMode = False

    j = 1
    For i = 1 To Range("G50000").End(xlUp).Row   'calcule la dernière cellule remplie dans la colonne 7 colonne G
        If Cells(j, 87).Value = "" Then 
            Cells(j, 87).EntireRow.Delete
        Else
            j = j + 1
        End If
    Next i
    MsgBox "Macro terminée"
      If .AutoFilterMode = False Then .AutoFilterMode = True

  End With
On Error Goto 0
End Sub

@+

Rechercher des sujets similaires à "suppression ligne colonne vide"