supprimer lignes si une cellule est vide

patrmich

XLDnaute Nouveau
Bonjour,

Je souhaiterais faire une macro permettant l'action suvante :

- dans un tableau excel, supprimer toutes les lignes dont la cellule de la colonne B est vide.

Merci par avance pour toute suggestion

Patrick
 

Pierrot93

XLDnaute Barbatruc
Re : supprimer lignes si une cellule est vide

Bonjour Patrick

essaye le code ci dessous :

Code:
Sub test()
Dim i As Integer
For i = Range("B65536").End(xlUp).Row To 1 Step -1
    If IsEmpty(Cells(i, 2)) Then Rows(i).Delete
Next i
End Sub

bonne fin d'après midi
@+
 

matt31

XLDnaute Occasionnel
Re : supprimer lignes si une cellule est vide

Bonsoir,

je n'arrive pas à adapter la macro ci-dessus pour mon cas.
Je souhaiterais, à l'enregistrement du fichier supprimer toutes les lignes dont la cellule A est vide mais uniquement si A3 n'est pas vide. Si A3 est vide alors rien n'est fait, si A3 n'est pas vide alors dès qu'une cellule A est vide, il supprime toutes les lignes suivantes.

Merci pour votre aide.
 

mth

XLDnaute Barbatruc
Re : supprimer lignes si une cellule est vide

Bonsoir,

Un essai avec ce code (si j'ai bien comrpis)
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim lig As Long
With Sheets("Feuil1")
If .Range("A3") = "" Then Exit Sub
    lig = .Cells(Rows.Count, 1).End(xlUp).Row
    On Error Resume Next
    With .Range("A4:A" & lig).SpecialCells(xlCellTypeBlanks)
        .Delete Shift:=xlUp
    End With
End With
End Sub

Bonne soirée,

mth
 

nak

XLDnaute Occasionnel
Re : supprimer lignes si une cellule est vide

Bonsoir,

Peut être ce code :
Code:
Sub Macro1()
Dim i As Integer

Application.ScreenUpdating = False

For i = 1000 To 1 Step -1
If ucase(range("A" & i).Value) <> "" And ucase(range("B" & i).Value) = "" then rows(i).Delete
Next i

Application.ScreenUpdating = True

End Sub

Soit sur les 1000 premières lignes de ta feuille, lorsque tu as une valeur en colonne A et rien en colonne B tu effaces la ligne.

A+
 

matt31

XLDnaute Occasionnel
Re : supprimer lignes si une cellule est vide

Bonjour,

merci pour vos réponses.
Je joins un exemple à ce que je désire car je n'y arrive toujours pas même en essayant d'adopter et d'adapter la macro de mth

Je voudrais que si A3 est vide, rien ne se passe.
Par contre si A3 n'est pas vide alors on cherche la 1ère cellule en A de vide et on supprime toutes les lignes à partir de cette cellule vide.
Dans mon exemple on supprime à partir de la ligne 22.

Merci pour votre aide
 

Pièces jointes

  • EM 48 - S 39.xls
    94.5 KB · Affichages: 109
  • EM 48 - S 39.xls
    94.5 KB · Affichages: 115
  • EM 48 - S 39.xls
    94.5 KB · Affichages: 128

kjin

XLDnaute Barbatruc
Re : supprimer lignes si une cellule est vide

Bonsoir,
Avec un fichier qu'on ne peut pas ouvrir...
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With Sheets("Feuil1")
    If .Range("A3") = "" Then Exit Sub
    For i = .Range("A65536").End(xlUp).Row To 4 Step -1
        If .Range("A" & i) = "" Then .Rows(i).Delete
    Next i
End With
End Sub
...à adapter donc
A+
kjin
 

mth

XLDnaute Barbatruc
Re : supprimer lignes si une cellule est vide

re :)

Le fichier a l'air d'être d'accord pour se laisser lire sur ma machine, donc je remets le code du post 5 dedans, en espérant que tout le monde pourra accéder au fichier
(J'ai juste transformé en commenaires le 'Me.Unprotect /Unprotect Password:="motdepasse" :confused: )

@ +

mth
 

Pièces jointes

  • EM 48 - S 39.xls
    90.5 KB · Affichages: 118
  • EM 48 - S 39.xls
    90.5 KB · Affichages: 113
  • EM 48 - S 39.xls
    90.5 KB · Affichages: 118

matt31

XLDnaute Occasionnel
Re : supprimer lignes si une cellule est vide

merci mais ça ne m'efface pas les lignes vides en A à partir de la ligne 22, cela m'a effacé quelques cellules au dessus de la ligne 22 mais j'ai toujours mon quadrillage.
Je ne comprends pas...
 

mth

XLDnaute Barbatruc
Re : supprimer lignes si une cellule est vide

Bonsoir,

C'est parce que cette instruction:
Code:
lig = .Cells(Rows.Count, 1).End(xlUp).Row

calcule la dernière cellule renseignée colonne A, la macro travaille donc dans cette zone sans aller plus bas. Le quadrillage ne change rien à l'affaire, une cellule vide est vide, or tu parlais bien de cellules vides dans ton sujet.

Essaie éventuellement en ajoutant une ligne dans le code comme ceci:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim lig As Long
With Sheets("Séjours à coder")
If .Range("A3") = "" Then Exit Sub
    lig = .Cells(Rows.Count, 1).End(xlUp).Row
    .Range(.Cells(lig + 1, 1), .Cells(lig + 1, 13).End(xlDown)).Delete Shift:=xlUp
    On Error Resume Next
    With .Range("A4:M" & lig).SpecialCells(xlCellTypeBlanks)
        .Delete Shift:=xlUp
    End With
End With
End Sub

@ +

mth
 

matt31

XLDnaute Occasionnel
Re : supprimer lignes si une cellule est vide

c'est vrai que je parlais de supprimer une ligne et que je n'ai pas précisé que je souhaitais une suppression totale de ligne, quadrillage compris car j'ai des fichiers préparés à l'avance. 1 fichier par semaine pour une 100aine d'équipes. Certaines ont besoin de 500 lignes d'autres une 20aine et cela varie à chaque semaine.
Le quadrillage fait augmenter considérablement la taille des fichiers et je voudrais par une macro supprimer le quadrillage qui ne sert pas.

Ta correction supprime bien le quadrillage à partir de la ligne 22. Mais cela m'efface aussi des cellules sur des lignes dont la cellule en A n'est pas vide.

Voilà ce que cela donne en pièce jointe. Sur le fichier en copie la macro avec les cellules effacées, l'autre fichier étant l'original.

En tout cas merci pour l'aide apportée jusqu'à présent
 

Pièces jointes

  • EM 50 - S 39.xls
    75.5 KB · Affichages: 89
  • Copie de EM 50 - S 39.xls
    85.5 KB · Affichages: 99

mth

XLDnaute Barbatruc
Re : supprimer lignes si une cellule est vide

re :)

Une bêtise de ma part, sincèrement désolée, peux-tu corriger avec ceci après le "on error" ? :
Code:
    On Error Resume Next
    With .Range("A4:A" & lig).SpecialCells(xlCellTypeBlanks).EntireRow
        .Delete Shift:=xlUp
    End With

@ ++

mth
 

Discussions similaires

Statistiques des forums

Discussions
312 885
Messages
2 093 259
Membres
105 660
dernier inscrit
moi46