Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

suppression de lignes

6 réponses
Avatar
Patrice C.
Bonjour
J'ai un tableau recapitulatif A3:H1000 contenant des formules donnant des
resultats visibles ou non (MEFC)
Dans la colonneH en fonction de ces resultats j'ai les mots "garder" ou
"nettoyer" qui s'affichent
Apres un tri qui me place toutes les lignes visibles en haut du tableau, je
voudrais effacer toutes les lignes
comportant le mot "nettoyer" mais pas 1 par 1 car c'est tres long
J'ai trouvé une macro de Denis MICHON que j'ai tenté d'adapter mais ça ne
fonctionne pas
Pourriez vous m'aider ?
Merci d'avance
Voici la macro massacrée :

Sub SuppLigne()
Application.ScreenUpdating = False
For i = Range("h1000").End(xlUp).Row To 1 Step -1
If Cells(i, 8).Value = "nettoyer" Then Cells(i, 8).ClearContents
Next
Columns("H:H").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Cordialement
Patrice CASADEI

6 réponses

Avatar
michdenis
J'ai ajouté une ligne à la procédure pour faire le tri désiré sur le tableau pour réunir les lignes contenant "nettoyer"
en premier ...

'-------------------------
Sub SuppLigne()

Dim Trouve As Range
With Worksheets("Feuil1")
With .Range("H3:H" & .Range("H65536").End(xlUp).Row)
.CurrentRegion.Sort Key1:=.Item(1, 1), Order1:=xlAscending
Set Trouve = .Find("nettoyer", Range("h3"), xlValues, xlWhole, xlRows, xlPrevious)
End With

If Not Trouve Is Nothing Then
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
.Range("A3:H" & Trouve.Row).Delete (xlUp)
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End If
End With
Set Trouve = Nothing

End Sub
'-------------------------


Salutations!







"michdenis" a écrit dans le message de news:%
Bonjour Patrice,


La procédure soumise suppose que tu as trier ta plage de données comme mentionné dans ta question et que tous les lignes
dont la valeur en colonne H:H affiche "nettoyer" se retrouve réuni entre H3:Hx consécutives.

A copier dans un module standard, et tu dois adapter le nom de la feuille dans la procédure.
'-------------------------------------
Sub SuppLigne()
Dim Trouve As Range
With Worksheets("Feuil1")
With .Range("H3:H" & .Range("H65536").End(xlUp).Row)
Set trouve = .Find("nettoyer", Range("h3"), xlValues, xlWhole, xlRows, xlPrevious)
End With

If Not trouve Is Nothing Then
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
.Range("A3:H" & trouve.Row).Delete (xlUp)
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End If
End With
Set Trouve = Nothing

End Sub
'-------------------------------------


Salutations!




"Patrice C." a écrit dans le message de news:
Bonjour
J'ai un tableau recapitulatif A3:H1000 contenant des formules donnant des
resultats visibles ou non (MEFC)
Dans la colonneH en fonction de ces resultats j'ai les mots "garder" ou
"nettoyer" qui s'affichent
Apres un tri qui me place toutes les lignes visibles en haut du tableau, je
voudrais effacer toutes les lignes
comportant le mot "nettoyer" mais pas 1 par 1 car c'est tres long
J'ai trouvé une macro de Denis MICHON que j'ai tenté d'adapter mais ça ne
fonctionne pas
Pourriez vous m'aider ?
Merci d'avance
Voici la macro massacrée :

Sub SuppLigne()
Application.ScreenUpdating = False
For i = Range("h1000").End(xlUp).Row To 1 Step -1
If Cells(i, 8).Value = "nettoyer" Then Cells(i, 8).ClearContents
Next
Columns("H:H").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Cordialement
Patrice CASADEI
Avatar
Patrice C.
Bonjour Denis
Merci, mais.....
Ta procédure fonctionne trop bien car elle efface tout ....
Apres mon tri, les lignes possedant 'nettoyer" sont toutes regroupées en bas
de mon tableau
allant de bas en haut de "H1000" à "Hx" car le nombre de lignes ecrites
varie à chaque tri
Peux tu encore m'aider
--
Cordialement
Patrice CASADEI


"michdenis" a écrit dans le message de news:
#
Bonjour Patrice,


La procédure soumise suppose que tu as trier ta plage de données comme
mentionné dans ta question et que tous les lignes

dont la valeur en colonne H:H affiche "nettoyer" se retrouve réuni entre
H3:Hx consécutives.


A copier dans un module standard, et tu dois adapter le nom de la feuille
dans la procédure.

'-------------------------------------
Sub SuppLigne()
Dim Trouve As Range
With Worksheets("Feuil1")
With .Range("H3:H" & .Range("H65536").End(xlUp).Row)
Set trouve = .Find("nettoyer", Range("h3"), xlValues, xlWhole,
xlRows, xlPrevious)

End With

If Not trouve Is Nothing Then
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
.Range("A3:H" & trouve.Row).Delete (xlUp)
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End If
End With
Set Trouve = Nothing

End Sub
'-------------------------------------


Salutations!




"Patrice C." a écrit dans le message de
news:

Bonjour
J'ai un tableau recapitulatif A3:H1000 contenant des formules donnant des
resultats visibles ou non (MEFC)
Dans la colonneH en fonction de ces resultats j'ai les mots "garder" ou
"nettoyer" qui s'affichent
Apres un tri qui me place toutes les lignes visibles en haut du tableau,
je

voudrais effacer toutes les lignes
comportant le mot "nettoyer" mais pas 1 par 1 car c'est tres long
J'ai trouvé une macro de Denis MICHON que j'ai tenté d'adapter mais ça ne
fonctionne pas
Pourriez vous m'aider ?
Merci d'avance
Voici la macro massacrée :

Sub SuppLigne()
Application.ScreenUpdating = False
For i = Range("h1000").End(xlUp).Row To 1 Step -1
If Cells(i, 8).Value = "nettoyer" Then Cells(i, 8).ClearContents
Next
Columns("H:H").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Cordialement
Patrice CASADEI





Avatar
Patrice C.
Re

Après bricolage j'ai trouvé une partie du probleme
Range("A3:H" & trouve.Row).Delete (xlUp)
doit en fait s'ecrire
Range("H3:H" & trouve.Row).Delete (xlUp)
J'obtiens bien mes lignes dans ce cas.
Mais....
les lignes 1 et 2 du tableau où sont mes titres et entetes de colonnes se
retrouvent
tout en bas au niveau de l'ancienne fin du tableau
Y a t il moyen d'y remedier?
Merci d'avance

Cordialement
Patrice CASADEI



"Patrice C." a écrit dans le message de news:

Bonjour Denis
Merci, mais.....
Ta procédure fonctionne trop bien car elle efface tout ....
Apres mon tri, les lignes possedant 'nettoyer" sont toutes regroupées en
bas

de mon tableau
allant de bas en haut de "H1000" à "Hx" car le nombre de lignes ecrites
varie à chaque tri
Peux tu encore m'aider
--
Cordialement
Patrice CASADEI


"michdenis" a écrit dans le message de news:
#
Bonjour Patrice,


La procédure soumise suppose que tu as trier ta plage de données comme
mentionné dans ta question et que tous les lignes

dont la valeur en colonne H:H affiche "nettoyer" se retrouve réuni entre
H3:Hx consécutives.


A copier dans un module standard, et tu dois adapter le nom de la
feuille


dans la procédure.
'-------------------------------------
Sub SuppLigne()
Dim Trouve As Range
With Worksheets("Feuil1")
With .Range("H3:H" & .Range("H65536").End(xlUp).Row)
Set trouve = .Find("nettoyer", Range("h3"), xlValues, xlWhole,
xlRows, xlPrevious)

End With

If Not trouve Is Nothing Then
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
.Range("A3:H" & trouve.Row).Delete (xlUp)
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End If
End With
Set Trouve = Nothing

End Sub
'-------------------------------------


Salutations!




"Patrice C." a écrit dans le message de
news:

Bonjour
J'ai un tableau recapitulatif A3:H1000 contenant des formules donnant
des


resultats visibles ou non (MEFC)
Dans la colonneH en fonction de ces resultats j'ai les mots "garder" ou
"nettoyer" qui s'affichent
Apres un tri qui me place toutes les lignes visibles en haut du tableau,
je

voudrais effacer toutes les lignes
comportant le mot "nettoyer" mais pas 1 par 1 car c'est tres long
J'ai trouvé une macro de Denis MICHON que j'ai tenté d'adapter mais ça
ne


fonctionne pas
Pourriez vous m'aider ?
Merci d'avance
Voici la macro massacrée :

Sub SuppLigne()
Application.ScreenUpdating = False
For i = Range("h1000").End(xlUp).Row To 1 Step -1
If Cells(i, 8).Value = "nettoyer" Then Cells(i, 8).ClearContents
Next
Columns("H:H").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Cordialement
Patrice CASADEI









Avatar
michdenis
Bonjour Patrice,

Correction apportée ...

'--------------------------------
Sub SuppLigne()

Dim Trouve As Range, Trouve1 As Range
With Worksheets("Feuil1")
With .Range("H3:H" & .Range("H65536").End(xlUp).Row)
Set Trouve = .Find("nettoyer", .Item(1), xlValues, xlWhole, xlRows, xlNext)
Set Trouve1 = .Find("nettoyer", .Item(1), xlValues, xlWhole, xlRows, xlPrevious)
End With

If Not Trouve Is Nothing Then
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
addd = .Range("A" & Trouve.Row & ":H" & Trouve1.Row).Address
.Range("A" & Trouve.Row & ":H" & Trouve1.Row).Delete (xlUp)
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End If
End With
Set Trouve = Nothing: Set Trouve1 = Nothing

End Sub
'--------------------------------


Salutations!




"Patrice C." a écrit dans le message de news:
Bonjour Denis
Merci, mais.....
Ta procédure fonctionne trop bien car elle efface tout ....
Apres mon tri, les lignes possedant 'nettoyer" sont toutes regroupées en bas
de mon tableau
allant de bas en haut de "H1000" à "Hx" car le nombre de lignes ecrites
varie à chaque tri
Peux tu encore m'aider
--
Cordialement
Patrice CASADEI


"michdenis" a écrit dans le message de news:
#
Bonjour Patrice,


La procédure soumise suppose que tu as trier ta plage de données comme
mentionné dans ta question et que tous les lignes

dont la valeur en colonne H:H affiche "nettoyer" se retrouve réuni entre
H3:Hx consécutives.


A copier dans un module standard, et tu dois adapter le nom de la feuille
dans la procédure.

'-------------------------------------
Sub SuppLigne()
Dim Trouve As Range
With Worksheets("Feuil1")
With .Range("H3:H" & .Range("H65536").End(xlUp).Row)
Set trouve = .Find("nettoyer", Range("h3"), xlValues, xlWhole,
xlRows, xlPrevious)

End With

If Not trouve Is Nothing Then
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
.Range("A3:H" & trouve.Row).Delete (xlUp)
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End If
End With
Set Trouve = Nothing

End Sub
'-------------------------------------


Salutations!




"Patrice C." a écrit dans le message de
news:

Bonjour
J'ai un tableau recapitulatif A3:H1000 contenant des formules donnant des
resultats visibles ou non (MEFC)
Dans la colonneH en fonction de ces resultats j'ai les mots "garder" ou
"nettoyer" qui s'affichent
Apres un tri qui me place toutes les lignes visibles en haut du tableau,
je

voudrais effacer toutes les lignes
comportant le mot "nettoyer" mais pas 1 par 1 car c'est tres long
J'ai trouvé une macro de Denis MICHON que j'ai tenté d'adapter mais ça ne
fonctionne pas
Pourriez vous m'aider ?
Merci d'avance
Voici la macro massacrée :

Sub SuppLigne()
Application.ScreenUpdating = False
For i = Range("h1000").End(xlUp).Row To 1 Step -1
If Cells(i, 8).Value = "nettoyer" Then Cells(i, 8).ClearContents
Next
Columns("H:H").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Cordialement
Patrice CASADEI





Avatar
Patrice C.
Rebonjour Denis
je viens de faire un essai rapide.
Le resultat a l'air correct
Je ferai un test plus approfondi demain
Merci pour ta gentillesse et ta patience

Cordialement
Patrice CASADEI


"michdenis" a écrit dans le message de news:

Bonjour Patrice,

Correction apportée ...

'--------------------------------
Sub SuppLigne()

Dim Trouve As Range, Trouve1 As Range
With Worksheets("Feuil1")
With .Range("H3:H" & .Range("H65536").End(xlUp).Row)
Set Trouve = .Find("nettoyer", .Item(1), xlValues, xlWhole,
xlRows, xlNext)

Set Trouve1 = .Find("nettoyer", .Item(1), xlValues, xlWhole,
xlRows, xlPrevious)

End With

If Not Trouve Is Nothing Then
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
addd = .Range("A" & Trouve.Row & ":H" & Trouve1.Row).Address
.Range("A" & Trouve.Row & ":H" & Trouve1.Row).Delete (xlUp)
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End If
End With
Set Trouve = Nothing: Set Trouve1 = Nothing

End Sub
'--------------------------------


Salutations!




"Patrice C." a écrit dans le message de
news:

Bonjour Denis
Merci, mais.....
Ta procédure fonctionne trop bien car elle efface tout ....
Apres mon tri, les lignes possedant 'nettoyer" sont toutes regroupées en
bas

de mon tableau
allant de bas en haut de "H1000" à "Hx" car le nombre de lignes ecrites
varie à chaque tri
Peux tu encore m'aider
--
Cordialement
Patrice CASADEI


"michdenis" a écrit dans le message de news:
#
Bonjour Patrice,


La procédure soumise suppose que tu as trier ta plage de données comme
mentionné dans ta question et que tous les lignes

dont la valeur en colonne H:H affiche "nettoyer" se retrouve réuni entre
H3:Hx consécutives.


A copier dans un module standard, et tu dois adapter le nom de la
feuille


dans la procédure.
'-------------------------------------
Sub SuppLigne()
Dim Trouve As Range
With Worksheets("Feuil1")
With .Range("H3:H" & .Range("H65536").End(xlUp).Row)
Set trouve = .Find("nettoyer", Range("h3"), xlValues, xlWhole,
xlRows, xlPrevious)

End With

If Not trouve Is Nothing Then
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
.Range("A3:H" & trouve.Row).Delete (xlUp)
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End If
End With
Set Trouve = Nothing

End Sub
'-------------------------------------


Salutations!




"Patrice C." a écrit dans le message de
news:

Bonjour
J'ai un tableau recapitulatif A3:H1000 contenant des formules donnant
des


resultats visibles ou non (MEFC)
Dans la colonneH en fonction de ces resultats j'ai les mots "garder" ou
"nettoyer" qui s'affichent
Apres un tri qui me place toutes les lignes visibles en haut du tableau,
je

voudrais effacer toutes les lignes
comportant le mot "nettoyer" mais pas 1 par 1 car c'est tres long
J'ai trouvé une macro de Denis MICHON que j'ai tenté d'adapter mais ça
ne


fonctionne pas
Pourriez vous m'aider ?
Merci d'avance
Voici la macro massacrée :

Sub SuppLigne()
Application.ScreenUpdating = False
For i = Range("h1000").End(xlUp).Row To 1 Step -1
If Cells(i, 8).Value = "nettoyer" Then Cells(i, 8).ClearContents
Next
Columns("H:H").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Cordialement
Patrice CASADEI










Avatar
Céline Brien
Bonjour Patrice,
Dernièrement, j'ai justement profité des lumières de Thierry sur le même
problème : supprimer les lignes affichées après un filter.
Les codes magiques sont :
Range("H4:H" &
Range("H65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible).EntireRow
.Delete
Voir les codes complets ci-dessous.
Au plaisir,
Céline
---------------------------------------------
Sub SuppLigne()

' Sélectionner une cellule du tableau
Range("A4").Select
' Filtrer les lignes pour afficher uniquement les lignes contenant le
mot Nettoyer
Selection.AutoFilter Field:=8, Criteria1:="Nettoyer",
Operator:=xlAnd
' Supprimer les lignes filtrées
Range("H4:H" &
Range("H65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible).EntireRow
.Delete
' Désactiver le filtre automatique
Selection.AutoFilter
End sub
---------------------------------------------


"Patrice C." a écrit dans le message de news:

Bonjour
J'ai un tableau recapitulatif A3:H1000 contenant des formules donnant
des

resultats visibles ou non (MEFC)
Dans la colonneH en fonction de ces resultats j'ai les mots "garder"
ou

"nettoyer" qui s'affichent
Apres un tri qui me place toutes les lignes visibles en haut du
tableau, je

voudrais effacer toutes les lignes
comportant le mot "nettoyer" mais pas 1 par 1 car c'est tres long
J'ai trouvé une macro de Denis MICHON que j'ai tenté d'adapter mais ça
ne

fonctionne pas
Pourriez vous m'aider ?
Merci d'avance
Voici la macro massacrée :

Sub SuppLigne()
Application.ScreenUpdating = False
For i = Range("h1000").End(xlUp).Row To 1 Step -1
If Cells(i, 8).Value = "nettoyer" Then Cells(i, 8).ClearContents
Next
Columns("H:H").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Cordialement
Patrice CASADEI