Effacer ligne si cellule vide en VBA

Bonjour à tous,

Je voudrais rajouter à une de mes macros une opération de plus, mais je ne sais pas comment le formuler en VBA.

Il faudrait que dès que la macro repère une cellule vide dans la colonne F, de la ligne 2 à la ligne NbLignes (c'est la variable que j'ai nommée, qui renvoie à la dernière cellule remplie de ma colonne), elle efface la ligne en question.

Merci d'avance pour votre aide,

Cordialement,

Plutel.

bonjour,

une possibilité

   Range("f2:f" & nblignes).SpecialCells(xlCellTypeBlanks).EntireRow.Delete shift:=xlUp

Bonjour h2so4,

Je viens d'essayer ton code et ça me renvoie le message d'erreur suivant :

"Run-time error '1004':

No cells were found."

bonjour,

soit tu n'exécutes pas la macro sur la bonne feuille, soit nblignes est à 0, soit il n'y a pas de cellules vides en F2:Fnblignes, soit ...

mets-nous ton fichier ou un extrait de ton fichier qui donne le message d'erreur.

Je pense savoir d'où vient le problème ... Ca doit venir du formattage.

Car je viens de cliquer sur une de mes cellules vides en colonne F, puis dans la barre de formule et j'ai validé par Enter, et quand j'exécute la macro, la ligne s'efface bien !

Est-ce qu'il existe un moyen d'automatiser cette manipulation ?

re-Bonjour,

oui, mais pas sans savoir ce qu'il y a dans ces cellules "vides".

je réitère la demande que tu nous mettes un extrait de ton fichier

J'ai réduit au minimum mon fichier mais il reste trop gros pour l'importer ici ...

tu peux essayer de le joindre via cjoint.com

Ah, je ne connaissais pas, merci !

Bonjour,

A tester dans ton environnement.

Option Explicit
Public Sub DeleteBlanks()
Dim ws As Worksheet
Dim NbLignes As Integer, i As Integer

    Application.ScreenUpdating = False

    Set ws = Worksheets("extrait")

    With ws
        NbLignes = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = NbLignes To 2 Step -1
            If .Cells(i, 6) = "" Then Rows(i).Delete shift:=xlUp
        Next
    End With

    Set ws = Nothing

End Sub

Bonjour,

sub test()
NbLignes = Cells(Rows.Count, 1).End(xlUp).Row
    Cells.AutoFilter
    Cells.AutoFilter Field:=6, Criteria1:="="
    On Error GoTo terreur
    Rows("2:" & NbLignes).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
    On Error GoTo 0
    Cells.AutoFilter
    Exit Sub

terreur:
    If Err = 1004 Then Resume Next ' pas de cellule vide
    Msg = "Error # " & Str(Err.Number) & " was generated by " _
            & Err.Source & Chr(13) & Err.Description
    MsgBox Msg, , "Error", Err.HelpFile, Err.HelpContext

End Sub

Bonjour Jean-Eric,

Merci infiment, ta solution marche à merveille !

Rechercher des sujets similaires à "effacer ligne vide vba"