OVH Cloud OVH Cloud

Suppression lignes

14 réponses
Avatar
Gérard
Bonsoir,

J'essaye de supprimer les lignes dont la cellule "J" est à zéro , mais
la macro se bloque systématiquement au milieu (sur If .Range("J" &
L).Value = 0 Then ) en me disant "erreur 13 , type incompatible"

Voyez vous mon erreur ?

Sub SuppressionLignes()
Dim L As Integer
With Range("zone1")
For L = .Rows.Count To 1 Step -1
If .Range("J" & L).Value = 0 Then
.Range("J" & L).EntireRow.Delete Shift:=xlUp
End If
Next
End With
End Sub

zone1 comporte une centaine de lignes

Merci
--
Gérard

10 réponses

1 2
Avatar
ru-th
Salut Gérard

c'est quoi ton Range("zone1") ?
un range de range, (le goût des Hauts ranges amères comme dit enrico !
;-))

t'as essayé avec un
with activesheet

a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo
"Gérard" a écrit dans le message de news:

Bonsoir,

J'essaye de supprimer les lignes dont la cellule "J" est à zéro , mais
la macro se bloque systématiquement au milieu (sur If .Range("J" &
L).Value = 0 Then ) en me disant "erreur 13 , type incompatible"

Voyez vous mon erreur ?

Sub SuppressionLignes()
Dim L As Integer
With Range("zone1")
For L = .Rows.Count To 1 Step -1
If .Range("J" & L).Value = 0 Then
.Range("J" & L).EntireRow.Delete Shift:=xlUp
End If
Next
End With
End Sub

zone1 comporte une centaine de lignes

Merci
--
Gérard






Avatar
Gérard
Bonsoir Philippe,

non , le résultat est identique
Merci tout de même

Cordialement

--
Gérard


"Philippe.R" a écrit dans le message news:

Bonsoir Gérard,
Sauf erreur de ma part, le point devant range semble en trop ; essaie
if range("J" & L)=0 then

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
"Gérard" a écrit dans le message de
news:
Bonsoir,

J'essaye de supprimer les lignes dont la cellule "J" est à zéro ,
mais


la macro se bloque systématiquement au milieu (sur If .Range("J"
&


L).Value = 0 Then ) en me disant "erreur 13 , type incompatible"

Voyez vous mon erreur ?

Sub SuppressionLignes()
Dim L As Integer
With Range("zone1")
For L = .Rows.Count To 1 Step -1
If .Range("J" & L).Value = 0 Then
.Range("J" & L).EntireRow.Delete Shift:=xlUp
End If
Next
End With
End Sub

zone1 comporte une centaine de lignes

Merci
--
Gérard










Avatar
michdenis
Bonsoir Gérard,

Essaie ceci :

Tu dois adapter le nom de la feuille dans la deuxième ligne de code

.------------------------
Sub SuppressionLignes()

Dim Rg As Range, L As Long, NbLignes As Long
Set Rg = Worksheets("Feuil1").Range("zone1")

With Rg
NbLignes = .Rows.Count
For L = NbLignes To 1 Step -1
If Rg(L, Rg.Columns.Count).Value = 0 Then
Rg(L, 1).Resize(1, Rg.Columns.Count).Delete Shift:=xlUp
End If
Next
End With
Set Rg = Nothing
End Sub
.------------------------


Salutations!


"Gérard" a écrit dans le message de news:
Bonsoir,

J'essaye de supprimer les lignes dont la cellule "J" est à zéro , mais
la macro se bloque systématiquement au milieu (sur If .Range("J" &
L).Value = 0 Then ) en me disant "erreur 13 , type incompatible"

Voyez vous mon erreur ?

Sub SuppressionLignes()
Dim L As Integer
With Range("zone1")
For L = .Rows.Count To 1 Step -1
If .Range("J" & L).Value = 0 Then
.Range("J" & L).EntireRow.Delete Shift:=xlUp
End If
Next
End With
End Sub

zone1 comporte une centaine de lignes

Merci
--
Gérard
Avatar
ru-th
rep = c.Address
à supprimer, c'était juste pour tester :-((


--
a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo
"ru-th" a écrit dans le message de news:

re

une possibilité en supposant que zn ne contient pas que la colonne J
For Each c In Intersect(Range("zn"), Columns(10))
rep = c.Address
If c.Value = 0 Then c.ClearContents
Next
Intersect(Range("zn"),
Columns(10)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

--
a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo
"Gérard" a écrit dans le message de news:

Bonsoir Thierry(?)

Effectivement avec activesheet ça fonctionne mais je voudrais ne trier
que la zone que j'ai définie , càd "zone1" qui comporte une centaine de
ligne

Comment puis je faire ?


--
Gérard


"ru-th" a écrit dans le message news:

Salut Gérard

c'est quoi ton Range("zone1") ?
un range de range, (le goût des Hauts ranges amères comme dit enrico !
;-))

t'as essayé avec un
with activesheet

a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo
"Gérard" a écrit dans le message de news:

Bonsoir,

J'essaye de supprimer les lignes dont la cellule "J" est à zéro ,
mais


la macro se bloque systématiquement au milieu (sur If .Range("J"
&


L).Value = 0 Then ) en me disant "erreur 13 , type incompatible"

Voyez vous mon erreur ?

Sub SuppressionLignes()
Dim L As Integer
With Range("zone1")
For L = .Rows.Count To 1 Step -1
If .Range("J" & L).Value = 0 Then
.Range("J" & L).EntireRow.Delete Shift:=xlUp
End If
Next
End With
End Sub

zone1 comporte une centaine de lignes

Merci
--
Gérard


















Avatar
Gérard
Re Re

avec F8 le résultat est le même
l'image sautille mais rien ne se passe dans la zone concernée

--
Gérard


"Philippe.R" a écrit dans le message news:
#
Re Gérard,
De manière générale, pour voir ce qui se passe pendant l'execution, tu
utilises le mode pas à pas avec

la touche F8.


Avatar
michdenis
Bonjour Gérard,


Il ne faut pas oublier qu'à chaque fois que tu utilises "Delete" pour supprimer
une ligne de ta "Zone1" , l'adresse de cette zone1 se met à jour. De telle sorte
qu'au moment d'un deuxième essai, elle va nécessairement être diminué du nombre de lignes qui ont été supprimées lors de
l'exécution de la première fois. Les plages nommées ne peuvent pas avoir seulement des bons côtés ! ;-))


Salutations!



"michdenis" a écrit dans le message de news:uX%
Bonsoir Gérard,

Qu'est-ce qu'il y a dans ta plage ? En particulier dans ta colonne J ?

J'ai testé la procédure qui suit et elle fonctionne très bien !


Tu peux avoir un fichier exemple sur demande.

Sub SuppressionLignes()

Dim Rg As Range, L As Long, NbLignes As Long
Set Rg = Worksheets("Feuil1").Range("zone1")
Application.ScreenUpdating = False
With Rg
NbLignes = .Rows.Count
For L = NbLignes To 1 Step -1
If Rg(L, Rg.Columns.Count).Value = 0 Then
Rg(L, 1).Resize(1, Rg.Columns.Count).Delete Shift:=xlUp
End If
Next
End With
Set Rg = Nothing
End Sub


Salutations!
Avatar
Gérard
Dans cette plage il y a des noms , des montants etc..
Dans la colonne J ce sont les montants initiaux
format nombre , sans formules
S'ils sont restés à zéro j'aimerais supprimer la ligne

Je pensais que ce serait simple au départ
et plus ça va plus je m'embourbe :-{

Je vais retester ta proc sur un classeur différent

--
Gérard


"michdenis" a écrit dans le message news:
uX#
Bonsoir Gérard,

Qu'est-ce qu'il y a dans ta plage ? En particulier dans ta colonne J ?

J'ai testé la procédure qui suit et elle fonctionne très bien !


Tu peux avoir un fichier exemple sur demande.

Sub SuppressionLignes()

Dim Rg As Range, L As Long, NbLignes As Long
Set Rg = Worksheets("Feuil1").Range("zone1")
Application.ScreenUpdating = False
With Rg
NbLignes = .Rows.Count
For L = NbLignes To 1 Step -1
If Rg(L, Rg.Columns.Count).Value = 0 Then
Rg(L, 1).Resize(1, Rg.Columns.Count).Delete Shift:=xlUp
End If
Next
End With
Set Rg = Nothing
End Sub


Salutations!




Avatar
Gérard
OK , j'en prends note
Merci

Cordialement

--
Gérard


"Daniel.M" a écrit dans le message news:
#
Salut Gérard,

La comparaison d'une valeur d'erreur dans une cellule (DIV/0!, #NA,
etc)

avec une valeur numérique va provoquer une erreur 13.

Moi je ferais un test supplémentaire:
If IsNumeric(Rg(L, Rg.Columns.Count)) Then
If Rg(L, Rg.Columns.Count).Value = 0 Then
Rg(L, 1).Resize(1, ... etc
End If
End If

Salutations,

Daniel M.

"Gérard" wrote in message
news:%
Bonsoir Michdenis,

Il me refait le même coup , càd erreur 13 type incompatible
j'ai pourtant mis le bon nom de feuille et de plage.

??

--
Gérard


"michdenis" a écrit dans le message news:

Bonsoir Gérard,

Essaie ceci :

Tu dois adapter le nom de la feuille dans la deuxième ligne de code

.------------------------
Sub SuppressionLignes()

Dim Rg As Range, L As Long, NbLignes As Long
Set Rg = Worksheets("Feuil1").Range("zone1")

With Rg
NbLignes = .Rows.Count
For L = NbLignes To 1 Step -1
If Rg(L, Rg.Columns.Count).Value = 0 Then
Rg(L, 1).Resize(1, Rg.Columns.Count).Delete Shift:=xlUp
End If
Next
End With
Set Rg = Nothing
End Sub
.------------------------


Salutations!


"Gérard" a écrit dans le message de
news:

Bonsoir,

J'essaye de supprimer les lignes dont la cellule "J" est à zéro ,
mais



la macro se bloque systématiquement au milieu (sur If
.Range("J" &



L).Value = 0 Then ) en me disant "erreur 13 , type incompatible"

Voyez vous mon erreur ?

Sub SuppressionLignes()
Dim L As Integer
With Range("zone1")
For L = .Rows.Count To 1 Step -1
If .Range("J" & L).Value = 0 Then
.Range("J" & L).EntireRow.Delete Shift:=xlUp
End If
Next
End With
End Sub

zone1 comporte une centaine de lignes

Merci
--
Gérard














Avatar
michdenis
Bonsoir Daniel et Gérard,

Si on ajoute ceci : On Error Resume Next en début de procédure, si la colonne J affiche une valeur d'erreur, la procédure
effacera la ligne au même titre que les lignes dont leur colonne 10 égale 0 ou "" .

Reste à savoir ce qui convient à ton application.


Salutations!



"Daniel.M" a écrit dans le message de news:%
Salut Gérard,

La comparaison d'une valeur d'erreur dans une cellule (DIV/0!, #NA, etc)
avec une valeur numérique va provoquer une erreur 13.

Moi je ferais un test supplémentaire:
If IsNumeric(Rg(L, Rg.Columns.Count)) Then
If Rg(L, Rg.Columns.Count).Value = 0 Then
Rg(L, 1).Resize(1, ... etc
End If
End If

Salutations,

Daniel M.

"Gérard" wrote in message
news:%
Bonsoir Michdenis,

Il me refait le même coup , càd erreur 13 type incompatible
j'ai pourtant mis le bon nom de feuille et de plage.

??

--
Gérard


"michdenis" a écrit dans le message news:

Bonsoir Gérard,

Essaie ceci :

Tu dois adapter le nom de la feuille dans la deuxième ligne de code

.------------------------
Sub SuppressionLignes()

Dim Rg As Range, L As Long, NbLignes As Long
Set Rg = Worksheets("Feuil1").Range("zone1")

With Rg
NbLignes = .Rows.Count
For L = NbLignes To 1 Step -1
If Rg(L, Rg.Columns.Count).Value = 0 Then
Rg(L, 1).Resize(1, Rg.Columns.Count).Delete Shift:=xlUp
End If
Next
End With
Set Rg = Nothing
End Sub
.------------------------


Salutations!


"Gérard" a écrit dans le message de
news:

Bonsoir,

J'essaye de supprimer les lignes dont la cellule "J" est à zéro , mais
la macro se bloque systématiquement au milieu (sur If .Range("J" &
L).Value = 0 Then ) en me disant "erreur 13 , type incompatible"

Voyez vous mon erreur ?

Sub SuppressionLignes()
Dim L As Integer
With Range("zone1")
For L = .Rows.Count To 1 Step -1
If .Range("J" & L).Value = 0 Then
.Range("J" & L).EntireRow.Delete Shift:=xlUp
End If
Next
End With
End Sub

zone1 comporte une centaine de lignes

Merci
--
Gérard











Avatar
Gérard
En effet mais j'aime autant que , s'il y a erreur dans une cellule , la
ligne reste à l'affichage sinon il n'y a plus de trace .
Et là pour retrouver...!
à moins de faire des sauvegardes fréquentes et différentes.

re bonsoir et bonne nuit les noctambules.

--
Gérard


"michdenis" a écrit dans le message news:

Bonsoir Daniel et Gérard,

Si on ajoute ceci : On Error Resume Next en début de procédure, si la
colonne J affiche une valeur d'erreur, la procédure

effacera la ligne au même titre que les lignes dont leur colonne 10
égale 0 ou "" .


Reste à savoir ce qui convient à ton application.


Salutations!



"Daniel.M" a écrit dans le message de
news:%

Salut Gérard,

La comparaison d'une valeur d'erreur dans une cellule (DIV/0!, #NA,
etc)

avec une valeur numérique va provoquer une erreur 13.

Moi je ferais un test supplémentaire:
If IsNumeric(Rg(L, Rg.Columns.Count)) Then
If Rg(L, Rg.Columns.Count).Value = 0 Then
Rg(L, 1).Resize(1, ... etc
End If
End If

Salutations,

Daniel M.

"Gérard" wrote in message
news:%
Bonsoir Michdenis,

Il me refait le même coup , càd erreur 13 type incompatible
j'ai pourtant mis le bon nom de feuille et de plage.

??

--
Gérard


"michdenis" a écrit dans le message news:

Bonsoir Gérard,

Essaie ceci :

Tu dois adapter le nom de la feuille dans la deuxième ligne de code

.------------------------
Sub SuppressionLignes()

Dim Rg As Range, L As Long, NbLignes As Long
Set Rg = Worksheets("Feuil1").Range("zone1")

With Rg
NbLignes = .Rows.Count
For L = NbLignes To 1 Step -1
If Rg(L, Rg.Columns.Count).Value = 0 Then
Rg(L, 1).Resize(1, Rg.Columns.Count).Delete Shift:=xlUp
End If
Next
End With
Set Rg = Nothing
End Sub
.------------------------


Salutations!


"Gérard" a écrit dans le message de
news:

Bonsoir,

J'essaye de supprimer les lignes dont la cellule "J" est à zéro ,
mais



la macro se bloque systématiquement au milieu (sur If
.Range("J" &



L).Value = 0 Then ) en me disant "erreur 13 , type incompatible"

Voyez vous mon erreur ?

Sub SuppressionLignes()
Dim L As Integer
With Range("zone1")
For L = .Rows.Count To 1 Step -1
If .Range("J" & L).Value = 0 Then
.Range("J" & L).EntireRow.Delete Shift:=xlUp
End If
Next
End With
End Sub

zone1 comporte une centaine de lignes

Merci
--
Gérard















1 2