macro supp

Le
zimou
Bonjour,
je suis à la recherche d'une macro pour supprimer toutes les lignes
qui ne contiènnent pas un critère exp; je veux suuprimer toutes les
lignes dont la colone D< 900
merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Philippe.R
Le #4806441
Bonjour,

sub suplignes()
'MPFE le 12/08/2007
'Supprime toutes les lignes de la feuille active si le contenu de la colonne
d
' en regard est numérique et <900
dim zLiG as long
zLiG=range("a2345").end(xlup).row
for each c in range("a1:a"&zlig)
if isnumeric (cells(c.row,4).value) and cells(c.row,4).value<900 then
c.entirerow.delete
endif
next c

à tester sur une copie de la feuille
--
Avec plaisir
Philippe.R
"zimou" news:
Bonjour,
je suis à la recherche d'une macro pour supprimer toutes les lignes
qui ne contiènnent pas un critère exp; je veux suuprimer toutes les
lignes dont la colone D< 900
merci
R1
Le #4806371
"Philippe.R"
Bonjour,

sub suplignes()
'MPFE le 12/08/2007
'Supprime toutes les lignes de la feuille active si le contenu de la
colonne d
' en regard est numérique et <900
dim zLiG as long
zLiG=range("a2345").end(xlup).row
for each c in range("a1:a"&zlig)
if isnumeric (cells(c.row,4).value) and cells(c.row,4).value<900 then
c.entirerow.delete
endif
next c

à tester sur une copie de la feuille


On m'avait suggéré, en pareille situation, pour gagner du temps, de
parcourir la boucle for à l'envers (du bas vers le haut). Qu'en
pensez-vous? Comment adapter cela au "for each in"?

Philippe.R
Le #4806351
Bonjour,
Très juste, R1

sub suplignes()
'MPFE le 12/08/2007
'Supprime toutes les lignes de la feuille active si le contenu de la colonne
' D en regard est numérique et <900
'Suppose que la colonne A soit la plus longue
dim zLiG as long
zLiG=range("a2345").end(xlup).row
for i= zlig to 1 step -1
if isnumeric (cells(i,4).value) and cells(i,4).value<900 then
c.entirerow.delete
endif
next c

sera mieux
--
Avec plaisir
Philippe.R
"R1" news:%
"Philippe.R"
Bonjour,

sub suplignes()
'MPFE le 12/08/2007
'Supprime toutes les lignes de la feuille active si le contenu de la
colonne d
' en regard est numérique et <900
dim zLiG as long
zLiG=range("a2345").end(xlup).row
for each c in range("a1:a"&zlig)
if isnumeric (cells(c.row,4).value) and cells(c.row,4).value<900 then
c.entirerow.delete
endif
next c

à tester sur une copie de la feuille


On m'avait suggéré, en pareille situation, pour gagner du temps, de
parcourir la boucle for à l'envers (du bas vers le haut). Qu'en
pensez-vous? Comment adapter cela au "for each in"?



Trirème
Le #4806211
On m'avait suggéré, en pareille situation, pour gagner du temps, de
parcourir la boucle for à l'envers (du bas vers le haut). Qu'en
pensez-vous? Comment adapter cela au "for each in"?


C'est surtout que lorsqu'on supprime une ligne, la ligne suivante "remonte". Dans ce cas
il ne faut pas que l'algorithme incrémente en plus à la ligne suivante comme le fait le
1er code de Philippe, au risque de rater une ligne.
Pour s'en convaincre il faut le tester avec plusieurs lignes contigües répondant au
critère de suppression.
J'ai l'impression également que le 1er code de Philippe devait boucler sans fin.

Il me semble après essais que le gain de temps ne doit s'apprécier que pour plusieurs
milliers de lignes.

Cordialement,
Trirème

Philippe.R
Le #4806201
Bonsoir Trirème,
J'ai écris le 1er code à la volée dans le message, sans prendre le soin de
le tester
Il ne supprimait effectivement pas toutes les lignes concernées puisque,
comme tu l'expliques, il sautait des lignes pour peu qu'elles soient
consécutives.
En revanche, il ne boucle pas sans fin !
Le prétendre frise la diffamation ! ;-O
;o)))
Ca m'apprendra à vouloir aller trop vite (on en oubli les règles
élémentaires)
;o)))
--
Avec plaisir
Philippe.R
"Trirème" news:
On m'avait suggéré, en pareille situation, pour gagner du temps, de
parcourir la boucle for à l'envers (du bas vers le haut). Qu'en
pensez-vous? Comment adapter cela au "for each in"?


C'est surtout que lorsqu'on supprime une ligne, la ligne suivante
"remonte". Dans ce cas il ne faut pas que l'algorithme incrémente en plus
à la ligne suivante comme le fait le 1er code de Philippe, au risque de
rater une ligne.
Pour s'en convaincre il faut le tester avec plusieurs lignes contigües
répondant au critère de suppression.
J'ai l'impression également que le 1er code de Philippe devait boucler
sans fin.

Il me semble après essais que le gain de temps ne doit s'apprécier que
pour plusieurs milliers de lignes.

Cordialement,
Trirème



Trirème
Le #4806171
J'ai écris le 1er code à la volée dans le message, sans prendre le soin
de le tester
Je comprends mieux tous ces mots clés en minuscule.


...
En revanche, il ne boucle pas sans fin !
Le prétendre frise la diffamation ! ;-O
;o)))
Intente moi un procès :-P


Ca m'apprendra à vouloir aller trop vite (on en oubli les règles
élémentaires)
;o)))
ALors, as-tu testé ton second code ? ;-)

(For i .... Next c)

Cordialement,
Trirème

Philippe.R
Le #4806091
OK Chef, OK !
(c'était encore directement dans le message pour le 2ème)
Après test :

Sub suplignesB()
'MPFE le 12/08/2007
'Supprime toutes les lignes de la feuille active si le contenu de la colonne
' D en regard est numérique et <900
'Suppose que la colonne A soit la plus longue
Dim zLiG As Long
zLiG = Range("a2345").End(xlUp).Row
For i = zLiG To 1 Step -1
If IsNumeric(Cells(i, 4).Value) And Cells(i, 4).Value < 900 Then
Cells(i, 4).EntireRow.Delete
End If
Next i
End Sub

J'ai bon, Chef ?
--
Avec plaisir
Philippe.R
"Trirème" news:
J'ai écris le 1er code à la volée dans le message, sans prendre le soin
de le tester
Je comprends mieux tous ces mots clés en minuscule.


...
En revanche, il ne boucle pas sans fin !
Le prétendre frise la diffamation ! ;-O
;o)))
Intente moi un procès :-P


Ca m'apprendra à vouloir aller trop vite (on en oubli les règles
élémentaires)
;o)))
ALors, as-tu testé ton second code ? ;-)

(For i .... Next c)

Cordialement,
Trirème



Trirème
Le #4806061
OK Chef, OK !
(c'était encore directement dans le message pour le 2ème)
Après test :

Sub suplignesB()
'MPFE le 12/08/2007
'Supprime toutes les lignes de la feuille active si le contenu de la
colonne
' D en regard est numérique et <900
'Suppose que la colonne A soit la plus longue
Dim zLiG As Long
zLiG = Range("a2345").End(xlUp).Row
For i = zLiG To 1 Step -1
If IsNumeric(Cells(i, 4).Value) And Cells(i, 4).Value < 900 Then
Cells(i, 4).EntireRow.Delete
End If
Next i
End Sub

J'ai bon, Chef ?


Ben elle supprime aussi les lignes si la cellules Dx est vide. Il faudrait voir avec zimou
ce qu'il y a lieu de faire mais il ne donne pas signe de vie. Ça va zimou ?
Sinon :
If Not IsEmpty(Cells(i, 4)) And IsNumeric(Cells(i, 4).Value) And Cells(i, 4).Value < 900 Then

Allez, maintenant file dans ta chambre, c'est bientôt l'heure des hommes en nuisette ;-)

Philippe.R
Le #4806031
Avant coucher, quand même juste préciser qu'on peut comprendre qu'une
cellule vide a une valeur inférieure à 900
Et bonne nuit( Zette ) à toi aussi
;o))))
--
Avec plaisir
Philippe.R
"Trirème" news:
OK Chef, OK !
(c'était encore directement dans le message pour le 2ème)
Après test :

Sub suplignesB()
'MPFE le 12/08/2007
'Supprime toutes les lignes de la feuille active si le contenu de la
colonne
' D en regard est numérique et <900
'Suppose que la colonne A soit la plus longue
Dim zLiG As Long
zLiG = Range("a2345").End(xlUp).Row
For i = zLiG To 1 Step -1
If IsNumeric(Cells(i, 4).Value) And Cells(i, 4).Value < 900 Then
Cells(i, 4).EntireRow.Delete
End If
Next i
End Sub

J'ai bon, Chef ?


Ben elle supprime aussi les lignes si la cellules Dx est vide. Il faudrait
voir avec zimou ce qu'il y a lieu de faire mais il ne donne pas signe de
vie. Ça va zimou ?
Sinon :
If Not IsEmpty(Cells(i, 4)) And IsNumeric(Cells(i, 4).Value) And Cells(i,
4).Value < 900 Then

Allez, maintenant file dans ta chambre, c'est bientôt l'heure des hommes
en nuisette ;-)



zimou
Le #4805721
On 12 août, 22:40, "Philippe.R"
Avant coucher, quand même juste préciser qu'on peut comprendre qu'une
cellule vide a une valeur inférieure à 900
Et bonne nuit( Zette ) à toi aussi
;o))))
--
Avec plaisir
Philippe.R
"Trirème"


OK Chef, OK !
(c'était encore directement dans le message pour le 2ème)
Après test :

Sub suplignesB()
'MPFE le 12/08/2007
'Supprime toutes les lignes de la feuille active si le contenu de la
colonne
' D en regard est numérique et <900
'Suppose que la colonne A soit la plus longue
Dim zLiG As Long
zLiG = Range("a2345").End(xlUp).Row
For i = zLiG To 1 Step -1
If IsNumeric(Cells(i, 4).Value) And Cells(i, 4).Value < 900 Then
Cells(i, 4).EntireRow.Delete
End If
Next i
End Sub

J'ai bon, Chef ?


Ben elle supprime aussi les lignes si la cellules Dx est vide. Il faudr ait
voir avec zimou ce qu'il y a lieu de faire mais il ne donne pas signe de
vie. Ça va zimou ?
Sinon :
If Not IsEmpty(Cells(i, 4)) And IsNumeric(Cells(i, 4).Value) And Cells( i,
4).Value < 900 Then

Allez, maintenant file dans ta chambre, c'est bientôt l'heure des hom mes
en nuisette ;-)- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


bonjour et merci pour l'aide,
j'ai copier coller les codes telquels, mais le suis désolé de dire que
sa marche pas, en plus lorsque je redémarre ma feuille de calcule
excel "2007" m'affiche un méssage "présence d'une boucle circulaire
etc....." ou quelque chose comme ça.
merci



Publicité
Poster une réponse
Anonyme