OVH Cloud OVH Cloud

selectionner pour supprimer des lignes

18 réponses
Avatar
Bruno RCSC
Bonsoir,

Win XP - Excel 2002

En cherchant dans excelabo, j'ai trouvé le code suivant :
Sub toto()
For Each ligne In ActiveSheet.UsedRange.Rows
r = ligne.Row
cherché = Application.Find("toto", Cells(r, 3))
If Not (IsError(cherché)) Then Cells(r, 3).EntireRow.Hidden = True
Next
End Sub

Code qui permet de masquer les lignes qui ont toto dans la colonne 3

Mes questions :
- quel est le code pour supprimer les lignes et non les masquer
- comment faire pour que la boucle commence à ligne 2 ?
Mon objectif est de supprimer toutes les lignes dont la valeur est
différente du chiffre zéro, la première ligne étant le titre.

Merci pour votre aide.

BH

10 réponses

1 2
Avatar
Garette
Bonsoir,

Ce code peut fonctionner :

Sub test()
Set Mazone = ActiveSheet.UsedRange
For Each Varcell In Mazone
If Varcell.Value = 0 Then
Cells(Varcell.Row, Mazone.Column).Resize(1,
Mazone.Columns.Count).ClearContents
End If
Next
ActiveSheet.UsedRange.Sort Key1:Îlls(Mazone.Row, Mazone.Column)
End Sub

Cette macro detruit la ligne dès qu'elle trouve une cellule vide ou egale à
zero !



Ca veut dire quoi une ligne = 0 ?
La ligne est vide ? une cellule est vide ? elle contient la valeur 0 ?
A priori, la ligne de tritre ne peut pas contenir zero ou etre vide, si ce
sont les titres ? donc pas besoin de commencer en ligne 2.
Avatar
MichDenis
'----------------------------
Sub toto()
Dim LastLigne As Long, adr As String
Dim C As Range, F As Range, G As Range
With Worksheets("Feuil1") ' à déterminer
LastLigne = .Range("C65536").End(xlUp).Row
With .Range("C2:C" & LastLigne)
Set F = .Find("toto", , xlFormulas, xlPart)
If Not F Is Nothing Then
adr = F.Address
Application.ScreenUpdating = False
Do While Not F Is Nothing And F.Address = adr
Set G = F
Set F = .FindNext(F)
G.EntireRow.Delete xlUp
Loop
End If
End With
End With
End Sub
'----------------------------



"Bruno RCSC" a écrit dans le message de news:
455cd9bc$0$5081$
Bonsoir,

Win XP - Excel 2002

En cherchant dans excelabo, j'ai trouvé le code suivant :
Sub toto()
For Each ligne In ActiveSheet.UsedRange.Rows
r = ligne.Row
cherché = Application.Find("toto", Cells(r, 3))
If Not (IsError(cherché)) Then Cells(r, 3).EntireRow.Hidden = True
Next
End Sub

Code qui permet de masquer les lignes qui ont toto dans la colonne 3

Mes questions :
- quel est le code pour supprimer les lignes et non les masquer
- comment faire pour que la boucle commence à ligne 2 ?
Mon objectif est de supprimer toutes les lignes dont la valeur est
différente du chiffre zéro, la première ligne étant le titre.

Merci pour votre aide.

BH
Avatar
JB
Bonjour,

For Each c In Range([B65000].End(xlUp), "B2")
If c.Value <> 0 Then c.EntireRow.Delete
Next c

Cordialement JB


Bonsoir,

Win XP - Excel 2002

En cherchant dans excelabo, j'ai trouvé le code suivant :
Sub toto()
For Each ligne In ActiveSheet.UsedRange.Rows
r = ligne.Row
cherché = Application.Find("toto", Cells(r, 3))
If Not (IsError(cherché)) Then Cells(r, 3).EntireRow.Hidden = True
Next
End Sub

Code qui permet de masquer les lignes qui ont toto dans la colonne 3

Mes questions :
- quel est le code pour supprimer les lignes et non les masquer
- comment faire pour que la boucle commence à ligne 2 ?
Mon objectif est de supprimer toutes les lignes dont la valeur est
différente du chiffre zéro, la première ligne étant le titre.

Merci pour votre aide.

BH


Avatar
Garette
Bonjour,

Petite erreur dans ma macro, elle faisait l'inverse (voir plus bas).

MAIS ca sert à quoi de supprimer toutes les cellules differentes de zero ??
Autant tout efffacer... sauf ligne de titres.
Avec le code ci-dessous :

Sub nettoyage()
ActiveSheet.UsedRange.Offset(1, 0).Delete
End Sub



------------------
Sub test()
Set Mazone = ActiveSheet.UsedRange
For Each Varcell In Mazone
If Varcell.Value <> 0 Then
Cells(Varcell.Row, Mazone.Column).Resize(1,
Mazone.Columns.Count).ClearContents
End If
Next
End Sub
Avatar
MichDenis
| For Each c In Range([B65000].End(xlUp), "B2")
| If c.Value <> 0 Then c.EntireRow.Delete
| Next c

Es-tu vraiment sûr que ça marche ?
Avatar
JB
Bonjour,

Différent de 0 dans la colonne 3. Il y a sans doute des infos dans les
autres colonnes.

JB

Bonjour,

Petite erreur dans ma macro, elle faisait l'inverse (voir plus bas).

MAIS ca sert à quoi de supprimer toutes les cellules differentes de zer o ??
Autant tout efffacer... sauf ligne de titres.
Avec le code ci-dessous :

Sub nettoyage()
ActiveSheet.UsedRange.Offset(1, 0).Delete
End Sub



------------------
Sub test()
Set Mazone = ActiveSheet.UsedRange
For Each Varcell In Mazone
If Varcell.Value <> 0 Then
Cells(Varcell.Row, Mazone.Column).Resize(1,
Mazone.Columns.Count).ClearContents
End If
Next
End Sub


Avatar
Garette
Bonjour,

Exact, ma macro ne teste pas que la colonne 3.
Celle-ci le fait.
Elle efface les lignes <> 0 et fait un tri à la fin pour rassembler tout le
monde.
Avec Delete, j'ai plus de mal...

Sub test()
Set MesDonnees = ActiveSheet.UsedRange
Set MaZone = MesDonnees.Offset(1, 2).Resize(MesDonnees.Rows.Count - 1, 1)

For Each VarCell In MaZone
If VarCell.Value <> 0 Then _
VarCell.Offset(0, -2).Resize(1, MesDonnees.Columns.Count).ClearContents
Next
MesDonnees.Sort Key1:Îlls(MesDonnees.Row, MesDonnees.Column),
Header:=xlYes
End Sub
Avatar
JB
http://cjoint.com/?lrqgJRaBkD

For i = [b65000].End(xlUp).Row To 2 Step -1
If Cells(i, 3) <> 0 Then Cells(i, 3).EntireRow.Delete
Next i

JB


Bonjour,

Exact, ma macro ne teste pas que la colonne 3.
Celle-ci le fait.
Elle efface les lignes <> 0 et fait un tri à la fin pour rassembler tou t le
monde.
Avec Delete, j'ai plus de mal...

Sub test()
Set MesDonnees = ActiveSheet.UsedRange
Set MaZone = MesDonnees.Offset(1, 2).Resize(MesDonnees.Rows.Count - 1, 1)

For Each VarCell In MaZone
If VarCell.Value <> 0 Then _
VarCell.Offset(0, -2).Resize(1, MesDonnees.Columns.Count).ClearContents
Next
MesDonnees.Sort Key1:Îlls(MesDonnees.Row, MesDonnees.Column),
Header:=xlYes
End Sub


Avatar
Garette
Re-Bonjour,

OK. L'astuce, c'est de partir du bas ;-)
Merci
Avatar
Bruno RCSC
Bonsoir,

Merci à tous pour votre contribution.
Mon explication n'était pas assez claire,
Je veux supprimer toutes les lignes d'un tableau de 8 colonnes pour
lesquelles il y a la valeur zéro dans la colonne 3. La longueur du tableau
est variable.

Le deuxième code de JB est parfait :
For i = [C65000].End(xlUp).Row To 2 Step -1
If Cells(i, 3) <> 0 Then Cells(i, 3).EntireRow.Delete
Next i

Je vais essayer de comprendre les autres propositions et celle ci ....!

Merci.
1 2