Je souhaite dans une feuille EXCEL supprimer toutes les lignes qui
comprennent en colonne C l'occurence "toto":
Voici ce que j'ai =E9crit:
For i =3D 2 To c
Cells(i, 3).Select
If Selection =3D "toto" Then
ActiveCell.EntireRow.Select
Selection.delete Shift:=3DxlUp
Else: ActiveCell.Offset(1, 0).Select
End If
Next i
Mon probl=E8me, c'est que lorsque la macro trouve "toto" en C4 par
exemple, elle supprime toute la ligne et passe ensuite =E0 la ligne 5.
Or avec la suppression, toute les lignes en dessous remontent d'un
cran, donc finalement la cellule C4 peut une fois encore comprendre
"toto", mais avec la boucle, je suis d=E9j=E0 pass=E9e =E0 la ligne 5.
Et ainsi, beaucoup de lignes "toto" restent dans le fichier au lieu
d'=EAtre supprim=E9es.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pounet95
Bonsoir, Sans voir plus loin ce que fait le code joint, je dirai que dans un tel cas de figure, faire la boucle à l'envers
For i = c to 2 step-1
Bonne soirée -- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/ Conseillé : http://dj.joss.free.fr/netiquet.htm (charte, nétiquette, conseils, abréviations, souriettes...) http://www.excelabo.net/mpfe/connexion.php (connexion, conseils...)
"JF" a écrit dans le message de news:
Bonjour
Je souhaite dans une feuille EXCEL supprimer toutes les lignes qui comprennent en colonne C l'occurence "toto":
Voici ce que j'ai écrit:
For i = 2 To c Cells(i, 3).Select
If Selection = "toto" Then ActiveCell.EntireRow.Select Selection.delete Shift:=xlUp Else: ActiveCell.Offset(1, 0).Select End If Next i
Mon problème, c'est que lorsque la macro trouve "toto" en C4 par exemple, elle supprime toute la ligne et passe ensuite à la ligne 5. Or avec la suppression, toute les lignes en dessous remontent d'un cran, donc finalement la cellule C4 peut une fois encore comprendre "toto", mais avec la boucle, je suis déjà passée à la ligne 5. Et ainsi, beaucoup de lignes "toto" restent dans le fichier au lieu d'être supprimées.
Merci de votre aide
Bonsoir,
Sans voir plus loin ce que fait le code joint, je dirai que dans un tel cas
de figure,
faire la boucle à l'envers
For i = c to 2 step-1
Bonne soirée
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)
"JF" <Juliette.Frehel@socgen.com> a écrit dans le message de news:
1134495015.652598.256320@g43g2000cwa.googlegroups.com...
Bonjour
Je souhaite dans une feuille EXCEL supprimer toutes les lignes qui
comprennent en colonne C l'occurence "toto":
Voici ce que j'ai écrit:
For i = 2 To c
Cells(i, 3).Select
If Selection = "toto" Then
ActiveCell.EntireRow.Select
Selection.delete Shift:=xlUp
Else: ActiveCell.Offset(1, 0).Select
End If
Next i
Mon problème, c'est que lorsque la macro trouve "toto" en C4 par
exemple, elle supprime toute la ligne et passe ensuite à la ligne 5.
Or avec la suppression, toute les lignes en dessous remontent d'un
cran, donc finalement la cellule C4 peut une fois encore comprendre
"toto", mais avec la boucle, je suis déjà passée à la ligne 5.
Et ainsi, beaucoup de lignes "toto" restent dans le fichier au lieu
d'être supprimées.
Bonsoir, Sans voir plus loin ce que fait le code joint, je dirai que dans un tel cas de figure, faire la boucle à l'envers
For i = c to 2 step-1
Bonne soirée -- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/ Conseillé : http://dj.joss.free.fr/netiquet.htm (charte, nétiquette, conseils, abréviations, souriettes...) http://www.excelabo.net/mpfe/connexion.php (connexion, conseils...)
"JF" a écrit dans le message de news:
Bonjour
Je souhaite dans une feuille EXCEL supprimer toutes les lignes qui comprennent en colonne C l'occurence "toto":
Voici ce que j'ai écrit:
For i = 2 To c Cells(i, 3).Select
If Selection = "toto" Then ActiveCell.EntireRow.Select Selection.delete Shift:=xlUp Else: ActiveCell.Offset(1, 0).Select End If Next i
Mon problème, c'est que lorsque la macro trouve "toto" en C4 par exemple, elle supprime toute la ligne et passe ensuite à la ligne 5. Or avec la suppression, toute les lignes en dessous remontent d'un cran, donc finalement la cellule C4 peut une fois encore comprendre "toto", mais avec la boucle, je suis déjà passée à la ligne 5. Et ainsi, beaucoup de lignes "toto" restent dans le fichier au lieu d'être supprimées.
Merci de votre aide
Michel Gaboly
Bien sûr ;-))
En commençant par la dernière ligne, les lignes supprimées n'ont + d'incidence sur les numéros des lignes restantes.
Cependant, pour le cas où il y a beaucoup de lignes, on peut envisager une autre méthode :
1 - On insére une colonne dans laquelle sur toute la plage utile on num érote les lignes (avec Edition/Recopier/Série), pas avec la formule =LIGNE(), ou alors il faut faire ensuite un Copier/ Collage spécial Valeurs.
2 - On trie avec comme clef la colonne contenant les "Toto".
3 - Toutes les lignes à supprimer étant groupées puisque contenant toutes "Toto" dans la colonne sur laquelle le tri a été basé, il est facile de toutes les supprimer à la fois.
4 - On refait un tri sur la colonne ajoutée (c'est pourquoi il ne faut pas avoir des =LIGNE(), car le résultat aurait été recalculé lors du tri. Cela rétablit l'ordre initial.
5 - On supprime la colonne insérée.
Si l'opération est ponctuelle, il n'est même + nécessaire d'écrir e une macro, car faire manuellement les 5 opérations décrites prend moins de temps que l'écriture de la macro et son exé cution.
Bonsoir, Sans voir plus loin ce que fait le code joint, je dirai que dans un tel cas de figure, faire la boucle à l'envers
For i = c to 2 step-1
Bonne soirée
-- Cordialement,
Michel Gaboly www.gaboly.com
Bien sûr ;-))
En commençant par la dernière ligne, les lignes supprimées n'ont + d'incidence sur les numéros des lignes restantes.
Cependant, pour le cas où il y a beaucoup de lignes, on peut envisager une autre méthode :
1 - On insére une colonne dans laquelle sur toute la plage utile on num érote les lignes (avec Edition/Recopier/Série),
pas avec la formule =LIGNE(), ou alors il faut faire ensuite un Copier/ Collage spécial Valeurs.
2 - On trie avec comme clef la colonne contenant les "Toto".
3 - Toutes les lignes à supprimer étant groupées puisque contenant toutes "Toto" dans la colonne sur laquelle le tri a
été basé, il est facile de toutes les supprimer à la fois.
4 - On refait un tri sur la colonne ajoutée (c'est pourquoi il ne faut pas avoir des =LIGNE(), car le résultat aurait
été recalculé lors du tri. Cela rétablit l'ordre initial.
5 - On supprime la colonne insérée.
Si l'opération est ponctuelle, il n'est même + nécessaire d'écrir e une macro, car faire manuellement les 5 opérations
décrites prend moins de temps que l'écriture de la macro et son exé cution.
Bonsoir,
Sans voir plus loin ce que fait le code joint, je dirai que dans un tel
cas de figure,
faire la boucle à l'envers
En commençant par la dernière ligne, les lignes supprimées n'ont + d'incidence sur les numéros des lignes restantes.
Cependant, pour le cas où il y a beaucoup de lignes, on peut envisager une autre méthode :
1 - On insére une colonne dans laquelle sur toute la plage utile on num érote les lignes (avec Edition/Recopier/Série), pas avec la formule =LIGNE(), ou alors il faut faire ensuite un Copier/ Collage spécial Valeurs.
2 - On trie avec comme clef la colonne contenant les "Toto".
3 - Toutes les lignes à supprimer étant groupées puisque contenant toutes "Toto" dans la colonne sur laquelle le tri a été basé, il est facile de toutes les supprimer à la fois.
4 - On refait un tri sur la colonne ajoutée (c'est pourquoi il ne faut pas avoir des =LIGNE(), car le résultat aurait été recalculé lors du tri. Cela rétablit l'ordre initial.
5 - On supprime la colonne insérée.
Si l'opération est ponctuelle, il n'est même + nécessaire d'écrir e une macro, car faire manuellement les 5 opérations décrites prend moins de temps que l'écriture de la macro et son exé cution.
Bonsoir, Sans voir plus loin ce que fait le code joint, je dirai que dans un tel cas de figure, faire la boucle à l'envers
For i = c to 2 step-1
Bonne soirée
-- Cordialement,
Michel Gaboly www.gaboly.com
Pounet95
Bonsoir Michel,
A la façon de Dupont et Dupond, je dirai même plus : Peut-être qu'un filtre élaboré du genre "contient toto" puis suppression des lignes affichées devrait aussi convenir, non ? En deux temps, trois mouvements, sans VBA, ça marche.
Qu'en penses-tu ?
-- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/ Conseillé : http://dj.joss.free.fr/netiquet.htm (charte, nétiquette, conseils, abréviations, souriettes...) http://www.excelabo.net/mpfe/connexion.php (connexion, conseils...)
"Michel Gaboly" a écrit dans le message de news:
Bien sûr ;-))
En commençant par la dernière ligne, les lignes supprimées n'ont + d'incidence sur les numéros des lignes restantes.
Cependant, pour le cas où il y a beaucoup de lignes, on peut envisager une autre méthode :
1 - On insére une colonne dans laquelle sur toute la plage utile on numérote les lignes (avec Edition/Recopier/Série), pas avec la formule =LIGNE(), ou alors il faut faire ensuite un Copier/Collage spécial Valeurs.
2 - On trie avec comme clef la colonne contenant les "Toto".
3 - Toutes les lignes à supprimer étant groupées puisque contenant toutes "Toto" dans la colonne sur laquelle le tri a été basé, il est facile de toutes les supprimer à la fois.
4 - On refait un tri sur la colonne ajoutée (c'est pourquoi il ne faut pas avoir des =LIGNE(), car le résultat aurait été recalculé lors du tri. Cela rétablit l'ordre initial.
5 - On supprime la colonne insérée.
Si l'opération est ponctuelle, il n'est même + nécessaire d'écrire une macro, car faire manuellement les 5 opérations décrites prend moins de temps que l'écriture de la macro et son exécution.
Bonsoir, Sans voir plus loin ce que fait le code joint, je dirai que dans un tel cas de figure, faire la boucle à l'envers
For i = c to 2 step-1
Bonne soirée
-- Cordialement,
Michel Gaboly www.gaboly.com
Bonsoir Michel,
A la façon de Dupont et Dupond, je dirai même plus :
Peut-être qu'un filtre élaboré du genre "contient toto" puis suppression
des lignes affichées devrait aussi convenir, non ?
En deux temps, trois mouvements, sans VBA, ça marche.
Qu'en penses-tu ?
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de news:
u8K0g4AAGHA.740@TK2MSFTNGP12.phx.gbl...
Bien sûr ;-))
En commençant par la dernière ligne, les lignes supprimées n'ont +
d'incidence sur les numéros des lignes restantes.
Cependant, pour le cas où il y a beaucoup de lignes, on peut envisager une
autre méthode :
1 - On insére une colonne dans laquelle sur toute la plage utile on numérote
les lignes (avec Edition/Recopier/Série),
pas avec la formule =LIGNE(), ou alors il faut faire ensuite un
Copier/Collage spécial Valeurs.
2 - On trie avec comme clef la colonne contenant les "Toto".
3 - Toutes les lignes à supprimer étant groupées puisque contenant toutes
"Toto" dans la colonne sur laquelle le tri a
été basé, il est facile de toutes les supprimer à la fois.
4 - On refait un tri sur la colonne ajoutée (c'est pourquoi il ne faut pas
avoir des =LIGNE(), car le résultat aurait
été recalculé lors du tri. Cela rétablit l'ordre initial.
5 - On supprime la colonne insérée.
Si l'opération est ponctuelle, il n'est même + nécessaire d'écrire une
macro, car faire manuellement les 5 opérations
décrites prend moins de temps que l'écriture de la macro et son exécution.
Bonsoir,
Sans voir plus loin ce que fait le code joint, je dirai que dans un tel
cas de figure,
faire la boucle à l'envers
A la façon de Dupont et Dupond, je dirai même plus : Peut-être qu'un filtre élaboré du genre "contient toto" puis suppression des lignes affichées devrait aussi convenir, non ? En deux temps, trois mouvements, sans VBA, ça marche.
Qu'en penses-tu ?
-- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/ Conseillé : http://dj.joss.free.fr/netiquet.htm (charte, nétiquette, conseils, abréviations, souriettes...) http://www.excelabo.net/mpfe/connexion.php (connexion, conseils...)
"Michel Gaboly" a écrit dans le message de news:
Bien sûr ;-))
En commençant par la dernière ligne, les lignes supprimées n'ont + d'incidence sur les numéros des lignes restantes.
Cependant, pour le cas où il y a beaucoup de lignes, on peut envisager une autre méthode :
1 - On insére une colonne dans laquelle sur toute la plage utile on numérote les lignes (avec Edition/Recopier/Série), pas avec la formule =LIGNE(), ou alors il faut faire ensuite un Copier/Collage spécial Valeurs.
2 - On trie avec comme clef la colonne contenant les "Toto".
3 - Toutes les lignes à supprimer étant groupées puisque contenant toutes "Toto" dans la colonne sur laquelle le tri a été basé, il est facile de toutes les supprimer à la fois.
4 - On refait un tri sur la colonne ajoutée (c'est pourquoi il ne faut pas avoir des =LIGNE(), car le résultat aurait été recalculé lors du tri. Cela rétablit l'ordre initial.
5 - On supprime la colonne insérée.
Si l'opération est ponctuelle, il n'est même + nécessaire d'écrire une macro, car faire manuellement les 5 opérations décrites prend moins de temps que l'écriture de la macro et son exécution.
Bonsoir, Sans voir plus loin ce que fait le code joint, je dirai que dans un tel cas de figure, faire la boucle à l'envers
For i = c to 2 step-1
Bonne soirée
-- Cordialement,
Michel Gaboly www.gaboly.com
JB
Bonjour,
Range("C2").Select Do While ActiveCell <> "" If ActiveCell = "toto" Then ActiveCell.EntireRow.Delete Else ActiveCell.Offset(1, 0).Select End If Loop
JB
Bonjour,
Range("C2").Select
Do While ActiveCell <> ""
If ActiveCell = "toto" Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Range("C2").Select Do While ActiveCell <> "" If ActiveCell = "toto" Then ActiveCell.EntireRow.Delete Else ActiveCell.Offset(1, 0).Select End If Loop
JB
Michel Gaboly
Tu as raison ;-))
Bonsoir Michel,
A la façon de Dupont et Dupond, je dirai même plus : Peut-être qu'un filtre élaboré du genre "contient toto" puis supp ression des lignes affichées devrait aussi convenir, non ? En deux temps, trois mouvements, sans VBA, ça marche.
Qu'en penses-tu ?
-- Cordialement,
Michel Gaboly www.gaboly.com
Tu as raison ;-))
Bonsoir Michel,
A la façon de Dupont et Dupond, je dirai même plus :
Peut-être qu'un filtre élaboré du genre "contient toto" puis supp ression
des lignes affichées devrait aussi convenir, non ?
En deux temps, trois mouvements, sans VBA, ça marche.
A la façon de Dupont et Dupond, je dirai même plus : Peut-être qu'un filtre élaboré du genre "contient toto" puis supp ression des lignes affichées devrait aussi convenir, non ? En deux temps, trois mouvements, sans VBA, ça marche.
Qu'en penses-tu ?
-- Cordialement,
Michel Gaboly www.gaboly.com
Pounet95
Bonjour, ... et je dirais même plus encore car je viens de me rendre compte que c'était d'un filtre automatique ( donc plus aisé à mettre en oeuvre ! ) dont je voulais parler.
Bonne journée
-- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/ Conseillé : http://dj.joss.free.fr/netiquet.htm (charte, nétiquette, conseils, abréviations, souriettes...) http://www.excelabo.net/mpfe/connexion.php (connexion, conseils...)
"Pounet95" a écrit dans le message de news: %
Bonsoir Michel,
A la façon de Dupont et Dupond, je dirai même plus : Peut-être qu'un filtre élaboré du genre "contient toto" puis suppression des lignes affichées devrait aussi convenir, non ? En deux temps, trois mouvements, sans VBA, ça marche.
Qu'en penses-tu ?
-- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/ Conseillé : http://dj.joss.free.fr/netiquet.htm (charte, nétiquette, conseils, abréviations, souriettes...) http://www.excelabo.net/mpfe/connexion.php (connexion, conseils...)
"Michel Gaboly" a écrit dans le message de news: Bien sûr ;-))
En commençant par la dernière ligne, les lignes supprimées n'ont + d'incidence sur les numéros des lignes restantes.
Cependant, pour le cas où il y a beaucoup de lignes, on peut envisager une autre méthode :
1 - On insére une colonne dans laquelle sur toute la plage utile on numérote les lignes (avec Edition/Recopier/Série), pas avec la formule =LIGNE(), ou alors il faut faire ensuite un Copier/Collage spécial Valeurs.
2 - On trie avec comme clef la colonne contenant les "Toto".
3 - Toutes les lignes à supprimer étant groupées puisque contenant toutes "Toto" dans la colonne sur laquelle le tri a été basé, il est facile de toutes les supprimer à la fois.
4 - On refait un tri sur la colonne ajoutée (c'est pourquoi il ne faut pas avoir des =LIGNE(), car le résultat aurait été recalculé lors du tri. Cela rétablit l'ordre initial.
5 - On supprime la colonne insérée.
Si l'opération est ponctuelle, il n'est même + nécessaire d'écrire une macro, car faire manuellement les 5 opérations décrites prend moins de temps que l'écriture de la macro et son exécution.
Bonsoir, Sans voir plus loin ce que fait le code joint, je dirai que dans un tel cas de figure, faire la boucle à l'envers
For i = c to 2 step-1
Bonne soirée
-- Cordialement,
Michel Gaboly www.gaboly.com
Bonjour,
... et je dirais même plus encore car je viens de me rendre compte que
c'était d'un filtre automatique
( donc plus aisé à mettre en oeuvre ! ) dont je voulais parler.
Bonne journée
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)
"Pounet95" <pasdepub@oneado.fr> a écrit dans le message de news:
%23cuL5lBAGHA.1568@TK2MSFTNGP10.phx.gbl...
Bonsoir Michel,
A la façon de Dupont et Dupond, je dirai même plus :
Peut-être qu'un filtre élaboré du genre "contient toto" puis suppression
des lignes affichées devrait aussi convenir, non ?
En deux temps, trois mouvements, sans VBA, ça marche.
Qu'en penses-tu ?
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de
news: u8K0g4AAGHA.740@TK2MSFTNGP12.phx.gbl...
Bien sûr ;-))
En commençant par la dernière ligne, les lignes supprimées n'ont +
d'incidence sur les numéros des lignes restantes.
Cependant, pour le cas où il y a beaucoup de lignes, on peut envisager une
autre méthode :
1 - On insére une colonne dans laquelle sur toute la plage utile on
numérote les lignes (avec Edition/Recopier/Série),
pas avec la formule =LIGNE(), ou alors il faut faire ensuite un
Copier/Collage spécial Valeurs.
2 - On trie avec comme clef la colonne contenant les "Toto".
3 - Toutes les lignes à supprimer étant groupées puisque contenant toutes
"Toto" dans la colonne sur laquelle le tri a
été basé, il est facile de toutes les supprimer à la fois.
4 - On refait un tri sur la colonne ajoutée (c'est pourquoi il ne faut pas
avoir des =LIGNE(), car le résultat aurait
été recalculé lors du tri. Cela rétablit l'ordre initial.
5 - On supprime la colonne insérée.
Si l'opération est ponctuelle, il n'est même + nécessaire d'écrire une
macro, car faire manuellement les 5 opérations
décrites prend moins de temps que l'écriture de la macro et son exécution.
Bonsoir,
Sans voir plus loin ce que fait le code joint, je dirai que dans un tel
cas de figure,
faire la boucle à l'envers
Bonjour, ... et je dirais même plus encore car je viens de me rendre compte que c'était d'un filtre automatique ( donc plus aisé à mettre en oeuvre ! ) dont je voulais parler.
Bonne journée
-- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/ Conseillé : http://dj.joss.free.fr/netiquet.htm (charte, nétiquette, conseils, abréviations, souriettes...) http://www.excelabo.net/mpfe/connexion.php (connexion, conseils...)
"Pounet95" a écrit dans le message de news: %
Bonsoir Michel,
A la façon de Dupont et Dupond, je dirai même plus : Peut-être qu'un filtre élaboré du genre "contient toto" puis suppression des lignes affichées devrait aussi convenir, non ? En deux temps, trois mouvements, sans VBA, ça marche.
Qu'en penses-tu ?
-- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/ Conseillé : http://dj.joss.free.fr/netiquet.htm (charte, nétiquette, conseils, abréviations, souriettes...) http://www.excelabo.net/mpfe/connexion.php (connexion, conseils...)
"Michel Gaboly" a écrit dans le message de news: Bien sûr ;-))
En commençant par la dernière ligne, les lignes supprimées n'ont + d'incidence sur les numéros des lignes restantes.
Cependant, pour le cas où il y a beaucoup de lignes, on peut envisager une autre méthode :
1 - On insére une colonne dans laquelle sur toute la plage utile on numérote les lignes (avec Edition/Recopier/Série), pas avec la formule =LIGNE(), ou alors il faut faire ensuite un Copier/Collage spécial Valeurs.
2 - On trie avec comme clef la colonne contenant les "Toto".
3 - Toutes les lignes à supprimer étant groupées puisque contenant toutes "Toto" dans la colonne sur laquelle le tri a été basé, il est facile de toutes les supprimer à la fois.
4 - On refait un tri sur la colonne ajoutée (c'est pourquoi il ne faut pas avoir des =LIGNE(), car le résultat aurait été recalculé lors du tri. Cela rétablit l'ordre initial.
5 - On supprime la colonne insérée.
Si l'opération est ponctuelle, il n'est même + nécessaire d'écrire une macro, car faire manuellement les 5 opérations décrites prend moins de temps que l'écriture de la macro et son exécution.
Bonsoir, Sans voir plus loin ce que fait le code joint, je dirai que dans un tel cas de figure, faire la boucle à l'envers