Supprimer une ligne dans excel selon condition

rimbaut Messages postés 61 Date d'inscription jeudi 19 mai 2005 Statut Membre Dernière intervention 1 juin 2014 - 22 août 2008 à 00:00
rimbaut Messages postés 61 Date d'inscription jeudi 19 mai 2005 Statut Membre Dernière intervention 1 juin 2014 - 22 août 2008 à 12:57
Bonsoir à tous,

J'ai un fichier dont la 1er colonne présente des références et la colonne 3 présente des quantités. Je voudrai supprimer les lignes dont les quantités sont à zéro.

Pour ce faire j'ai écrit ce code mais il ne fonctionne pas. Je pense que celà vient de la condition de la boucle car par moment dans la colonne 1 la cellule est vide. Comment puis je remédier à celà ?

Voici le code :

Sub SupprimerLigne()
Worksheets("Stockretraite").Activate

Dim y As Integer
y = 11


Do While Sheets("Stockretraite").Cells(y, 1).Value <> 0

If Sheets("Stockretraite").Cells(y, 3).Value = 0 Then
Cells(y, 1).Select
Selection.Delete Shift:=xlUp
End If

y = y + 1

Loop

End Sub

Merci à tous pour votre aide

4 réponses

dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
22 août 2008 à 02:54
Bonsoir ,

Voici un exemple de code:

'Code VBA Excel 2000
'Supprime Ref materiel de quantite=0






Dim HautListe As Long
Dim BasListe As Long
Dim c, i
Dim nombreLigneAvec0 As Long




nombreLigneAvec0 = 0
HautListe = 11





'Detecte la derniere de la liste

BasListe = Worksheets("Stockretraite").Range("A" & HautListe).End(xlDown).Row
'tri dans l'ordre de tableau suivant colonne C
Worksheets("Stockretraite").Range("A" & HautListe & ":C" & BasListe). _
Sort Key1:=Worksheets("Stockretraite").Range("C" & HautListe), order1:=xlAscending





'Calcul le nombre de ligne a effacer

For Each c In Range("C" & HautListe & ":C" & BasListe)
If Trim(c.Value) Like "0" Then
    nombreLigneAvec0 = 1 + nombreLigneAvec0
    End If
 Next
'Supprime les lignes
 For i = 1 To nombreLigneAvec0
      Sheets("Stockretraite").Rows(HautListe).Delete
 Next i
'Detecte la derniere de la liste apres effacement ligne
 BasListe = Worksheets("Stockretraite").Range("A" & HautListe).End(xlDown).Row
 'tri ordre colonne reference
Worksheets("Stockretraite").Range("A" & HautListe & ":C" & BasListe). _
Sort Key1:=Worksheets("Stockretraite").Range("A" & HautListe), order1:=xlAscending

A++
0
rimbaut Messages postés 61 Date d'inscription jeudi 19 mai 2005 Statut Membre Dernière intervention 1 juin 2014
22 août 2008 à 10:13
Bonjour Dedenet2,
J'ai essayé le code que tu m'as communiqué mais cela ne fonctionne pas. Les lignes avec 0 quantités demeurent.
0
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
22 août 2008 à 12:31
Salut ,
Sur nom Excel 2000 , ça fonctionne !
Quelle version as tu ?
La quantité est t'elle dans la colonne C ?
Quelle est le format des cellules dans colonne C ?
je me pose plein de question mais pour t'aider, il faut voir le code.
Peux tu envoyer ton fichier ?
A+++
0
rimbaut Messages postés 61 Date d'inscription jeudi 19 mai 2005 Statut Membre Dernière intervention 1 juin 2014
22 août 2008 à 12:57
Re,
J'ai excel 2003. je veux bien t'envoyer le fichier mais je ne sais pas comment l'on fait ?
0
Rejoignez-nous