Suppression plage dans tableau si cel = " "

sambrero -  
 Lepicipaska -
Bonjour,

Je suis sous excel 97 et cette macro ci-dessous ne fonctionne pas chez moi
Est-ce normal ?
Je verrai votre réponse demain si je ne la vois pas ce soir. Ne vous inquiétez pas de mon silence alors !

Sub Macro2()
Dim Cel_vide As Range
Dim ad_cel As Integer

For Each Cel_vide In Range("J6:N2777")
If Cel_vide.Value = "" Then
ad_cel = Cel_vide.Row
Rows(ad_cel).Delete
End If
Next Cel_vide
End Sub

A voir également:

5 réponses

cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   361
 
Bonsoir,

Une suppression de ligne commence de la dernière ligne à la 1ère...

Dans ton code, tu vérifies environ 13860 cellules......

Veux-tu une suppression de ligne dès qu'il y a une cellule vide dans ladite ligne, ou si une cellule de la colonne J est vide?

Dans le 1er cas, tu peux essayer ce code :

Sub suppr()
Dim Cel As Range
Dim DerLig As Long, I As Long
Application.ScreenUpdating = False
DerLig = Cells(Rows.Count, "J").End(xlUp).Row
For I = DerLig To 6 Step -1
    If Application.CountA(Cells(I, "J").Resize(1, 5)) <> 5 Then Rows(I).Delete
Next I
End Sub


si ce n'est que pour la colonne J, tu peux essayer ainsi :

Sub suppr_col_J()
Dim DerLig As Long
Dim Plg As Range
Application.ScreenUpdating = False
DerLig = Cells(Rows.Count, "J").End(xlUp).Row
Set Plg = Range("J6:J" & DerLig)
Plg.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub


Bonne soirée
0
sambrero
 
Bonsoir,

de retour ce soir.
Merci de votre aide, cependant :

J'aimerais que dans la plage de données J6K6L6M6N6, si cellule vide (J6 ou K6 ou L6 ou M6 ou N6), alors il supprime uniquement J6K6L6M6N6 et pas toute la ligne entière.(row 6)

Et qu'il vérifie toutes les plages suivantes jusqu'à J2777K2777L2777M2777N2777
et qu'il fasse de même.

C'est ce que je croyais avoir avec mon premier code.

J'ai essayé les deux vôtres, mais ça me laisse des plages avec des chiffres et des cellules vides associés. de plus, ça touche également à des données qui sont en colonnes ABCDE.

Bonne soirée
0
cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   361
 
Re-,

En lieu et place de la ligne "Rows(I).Delete", tu peux remplacer par ceci :

Cells(I, "J").Resize(1, 5).Delete Shift:=xlUp


Par contre, si les cellules comportent des formules, il va falloir opérer autrement....

Ou si tes données proviennent d'une extraction quelconque, il se peut qu'une cellule apparemment vide, ne le soit pas au vu d'Excel...

Donc si cela ne fonctionne toujours pas, précise un peu....

Bonne nuit
0
sambrero
 
Bonjour,

La nuit a été bonne merci.

"En lieu et place de la ligne "Rows(I).Delete", tu peux remplacer par ceci :

Cells(I, "J").Resize(1, 5).Delete Shift:=xlUp"

C'est ce que je viens de faire. Résultat partiellement satisfaisant. Je m'explique :

Mes données qui étaient complètes en JKLMN sont bien remontées à partir de Range("J6:N6") mais les lignes qui avaient des cellules vides n'ont pas été supprimées.
Merci à vous et bon appétit.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lepicipaska
 
Bonjour,

Je souhaiterais utiliser la même macro mais en supprimant la ligne entière, si la colonne R contient le numéro "1".

Pouvez-vous m'aider ?

Merci beaucoup !
0