Supprimer plusieurs lignes avec condition depuis un bouton

Résolu/Fermé
niksi56 Messages postés 2 Date d'inscription jeudi 7 février 2013 Statut Membre Dernière intervention 7 février 2013 - 7 févr. 2013 à 11:11
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 7 févr. 2013 à 12:20
Bonjour,

J'ai un tableau d'environ 400 lignes et je voudrais supprimer toutes les lignes dont la case en colonne N est vide.

Je voudrais faire cela depuis un bouton situé sur ma page Excel.

Pour l'instant j'ai tester ça mais sa ne marche pas :

i = 1
Sheets("test300").Select
While Not Range("N" & i & "").Value = 0
Rows(ligne).Delete
i = i + 1
Wend

J'ai également testé ça :

If Cells(ligne, N).Text() = "" Then
Rows(ligne).Delete
ligne = ligne - 1
End If

Je débute sur les macros.

Merci de votre aide

A voir également:

4 réponses

chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
7 févr. 2013 à 11:18
bonjour,

le principe de base dans la suppression de ligne par macro est de commencer par la dernière ligne, et remonter à la première, afin de ne pas laisser de lignes en route.

Voici une macro qui devrait fonctionner :

Sub SupprLignes()
dim derligne As Integer
dim numligne As Integer

derligne = Sheets("test300").Cells(Rows.Count, 14).End(xlUp).Row

For numligne = derligne To 2 Step - 1
      If IsEmpty(Cells(numligne, 14)) Then
            Rows(numligne).Select
            Selection.entireRow.Delete
      End If

Next 
End sub

Cordialement.
0
exel2003 Messages postés 57 Date d'inscription vendredi 1 février 2013 Statut Membre Dernière intervention 8 avril 2013 1
7 févr. 2013 à 11:24
salut
je t'ai fait une macro basique à adapter ligne par ligne
attention si tu a fusionné des lignes il masquera les deux

Sub masque()

'Masque les lignes 1 si la case N1 est égal à zéro
If Range("N1") = "0" Then
Rows("1").Select
Selection.EntireRow.Hidden = True
End If

'Affiche les lignes 1 si la case N1 n'est pas égal à zéro
If Range("N1") > "0" Then
Rows("1").Select
Selection.EntireRow.Hidden = False
End If

voila en espérant que cela t'ira bonne journée a toi
0
niksi56 Messages postés 2 Date d'inscription jeudi 7 février 2013 Statut Membre Dernière intervention 7 février 2013
7 févr. 2013 à 11:40
Bonjour

Je viens de modifier un petit peux ma demande, j'ai trouver une solution pour remplacer les cellules vide pas un 0, et j'ai donc trouver une macro qui marche presque bien.

Dim rcel As Range
Range("N2").Select
Selection.CurrentRegion.Select
For Each rcel In Selection
If rcel.Text = 0 Then
rcel.EntireRow.Delete
End If
Next rcel

Le seul soucis c'est que si la ligne 3 est vide, elle est bien supprimée, et donc la ligne 4 devient 3, donc celle-ci ne passe pas dans ma macro et ne peux donc pas être supprimé.

Merci
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
7 févr. 2013 à 11:41
D'où ce que je disais plus haut : une suppression de ligne dans Excel se fait de bas en haut (et non de haut en bas) pour ne pas oublier de lignes lors de la suppression.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 7/02/2013 à 12:25
Bonjour,

Peut-^tre + simple

Sub Supprimer_si_vide() 
    Dim Ligne As Long 
    On Error Resume Next 
   With ActiveSheet 
     Ligne = .UsedRange.Rows.Count 
     .Range("N1:N" & Ligne).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
    End With 
End Sub


https://excel.developpez.com/faq/?page=Feuille#SupprimeCellLigneVide

Michel
0