OVH Cloud OVH Cloud

Suppression de lignes selon critère

11 réponses
Avatar
Laurent S.
Bonjour à tous,

Voici ma problématique :

Je dispose d'un onglet dans un classeur qui m'indique un certains nombre de
codes Agence (environ 15)

Dans un autre onglet du classeur, il faudrait que je supprime toutes les
lignes dont l'agence n'est pas dans le premier onglet.

Avez-vous une idée ?

Merci de votre aide.

Laurent

10 réponses

1 2
Avatar
Ellimac
Bonjour,

Sub Toto()
Sheets(1).Select
Columns("A:A").AdvancedFilter Action:=xlFilterCopy,
CopyToRange _
:=Range("G1"), Unique:=True
Range("g2:g5000").Copy
Sheets(2).Range("g1").PasteSpecial
Sheets(2).Select
Range("a50000").End(xlUp).Select
While ActiveCell.Row <> 1
r = Application.VLookup(ActiveCell, Range("g1:g5000"),
1, 0)
If IsError(r) Then ActiveCell.EntireRow.Delete
ActiveCell.Offset(-1).Select
Wend
End Sub

Camille

-----Message d'origine-----
Bonjour à tous,

Voici ma problématique :

Je dispose d'un onglet dans un classeur qui m'indique un
certains nombre de

codes Agence (environ 15)

Dans un autre onglet du classeur, il faudrait que je
supprime toutes les

lignes dont l'agence n'est pas dans le premier onglet.

Avez-vous une idée ?

Merci de votre aide.

Laurent


.



Avatar
anomymousA
bonjour,

dans l'exemple suivant on admet que ton onglet contenant les Agences est la
Feuil1 et que la plage de cellules contenant le nom des agences est A1:A15
et que ton onglet contenant les lignes à supprimer est la Feuil2 et que le
critère de dsicrimination ( donc le nom des agences) se situe dans la colonne
A de ce présent onglet. à adapter bien sur

Sheets("Feuil1").Activate
Set rngA = ActiveSheet.Range("A1:A15")
Sheets("Feuil2").Activate
derligne = Range("A65536").End(xlUp).Row
For I = derligne To 1 Step -1
On Error Resume Next
tampon = Application.WorksheetFunction.VLookup(Cells(I, 1), rngA, 1, False)
If Err.Number <> 0 Then
Err.Clear
Cells(I, 1).EntireRow.Delete
End If
Next

Il existe d'autres méthodes mais celle-ci fonctionne et est relativement
rapide.

A+




Bonjour à tous,

Voici ma problématique :

Je dispose d'un onglet dans un classeur qui m'indique un certains nombre de
codes Agence (environ 15)

Dans un autre onglet du classeur, il faudrait que je supprime toutes les
lignes dont l'agence n'est pas dans le premier onglet.

Avez-vous une idée ?

Merci de votre aide.

Laurent





Avatar
Laurent S.
Merci pour vos réponses, cela semble marcher mais c'est très très (trop)
lent !!!
Il y a plus de 47500 lignes dans l'onglet "Data" dans lequel il faut
supprimer des lignes.

N'y-a-t-il pas moyen d'accélérer un peu le traitement ?

Merci

PS: J'ai essayé d'accélérer un peu en suspendant le rafraîchissement ainsi
que les évènements.

Pour information, j'ai repris ton code que j'ai adapté à mon problème

Sub SuppressionAgencesInutiles()
Application.ScreenUpdating = False
Application.EnableEvents = False
Sheets("Menu").Activate
Set rngA = ActiveSheet.Range("B7:B42")
Sheets("Data").Activate
derligne = Range("B65536").End(xlUp).Row
For I = derligne To 1 Step -1
On Error Resume Next
tampon = Application.WorksheetFunction.VLookup(Cells(I, 1), rngA, 1,
False)
If Err.Number <> 0 Then
Err.Clear
'Cells(I, 1).EntireRow.Delete
Rows(I).Delete Shift:=xlUp
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub








"anomymousA" a écrit dans le message
de news:
bonjour,

dans l'exemple suivant on admet que ton onglet contenant les Agences est
la
Feuil1 et que la plage de cellules contenant le nom des agences est A1:A15
et que ton onglet contenant les lignes à supprimer est la Feuil2 et que le
critère de dsicrimination ( donc le nom des agences) se situe dans la
colonne
A de ce présent onglet. à adapter bien sur

Sheets("Feuil1").Activate
Set rngA = ActiveSheet.Range("A1:A15")
Sheets("Feuil2").Activate
derligne = Range("A65536").End(xlUp).Row
For I = derligne To 1 Step -1
On Error Resume Next
tampon = Application.WorksheetFunction.VLookup(Cells(I, 1), rngA, 1,
False)
If Err.Number <> 0 Then
Err.Clear
Cells(I, 1).EntireRow.Delete
End If
Next

Il existe d'autres méthodes mais celle-ci fonctionne et est relativement
rapide.

A+




Bonjour à tous,

Voici ma problématique :

Je dispose d'un onglet dans un classeur qui m'indique un certains nombre
de
codes Agence (environ 15)

Dans un autre onglet du classeur, il faudrait que je supprime toutes les
lignes dont l'agence n'est pas dans le premier onglet.

Avez-vous une idée ?

Merci de votre aide.

Laurent







Avatar
AV
N'y-a-t-il pas moyen d'accélérer un peu le traitement ?


Si passe par un filtre au lieu d'une boucle, les choses vont considérablement
s'arranger !

AV

Avatar
Laurent S.
Pourquoi pas, mais je ne sais pas du tout faire. Pour tout avouer, je ne
suis pas une bête d'Excel ;-)))



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

N'y-a-t-il pas moyen d'accélérer un peu le traitement ?


Si passe par un filtre au lieu d'une boucle, les choses vont
considérablement
s'arranger !

AV





Avatar
AV
Si tu veux me communiquer (dans ma bal) une adresse valide, je te transmets un
exemple
PS : avec 47500 cellules renseignées, comme ça semble être le cas dans ton
exemple, le poids du fichier est trop "respectable" pour être accepté par
http://cjoint.com

AV


Pourquoi pas, mais je ne sais pas du tout faire. Pour tout avouer, je ne
suis pas une bête d'Excel ;-)))



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

N'y-a-t-il pas moyen d'accélérer un peu le traitement ?


Si passe par un filtre au lieu d'une boucle, les choses vont
considérablement
s'arranger !

AV









Avatar
Laurent S.
Je t'ai envoyé un mail qui vient de me revenir en retour en erreur.

Voici mon adresse mail si tu veux

Encore merci.


"AV" a écrit dans le message de news:
%
Si tu veux me communiquer (dans ma bal) une adresse valide, je te
transmets un
exemple
PS : avec 47500 cellules renseignées, comme ça semble être le cas dans ton
exemple, le poids du fichier est trop "respectable" pour être accepté par
http://cjoint.com

AV


Pourquoi pas, mais je ne sais pas du tout faire. Pour tout avouer, je ne
suis pas une bête d'Excel ;-)))



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

N'y-a-t-il pas moyen d'accélérer un peu le traitement ?


Si passe par un filtre au lieu d'une boucle, les choses vont
considérablement
s'arranger !

AV













Avatar
AV
Je t'ai envoyé un mail qui vient de me revenir en retour en erreur.


Ben faut enlever PFFF de l'adresse !
Je te transmets un exemple

AV

Avatar
Laurent S.
As-tu reçu mon fichier exemple, car même en enlevant PFFF, j'ai un
message de retour en erreur m'indiquant
"
This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es)
failed:


SMTP error from remote mailer after RCPT TO::
host smtp.wanadoo.fr [193.252.22.110]: 550 :
Recipient address rejected: User unknown"

J'ai modifié ton adresse mail par zzz et j'avais bien enlevé le PFFF
avant d'envoyer le message.



AV a exposé le 01/02/2005 :
Je t'ai envoyé un mail qui vient de me revenir en retour en erreur.


Ben faut enlever PFFF de l'adresse !
Je te transmets un exemple

AV


--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net


Avatar
Laurent S.
J'ai allégé le fichier pour permettre d'utilisser CJoint
Voici le lien vers le fichier : http://cjoint.com/?cbmzFQGDHg





AV vient de nous annoncer :
Si tu veux me communiquer (dans ma bal) une adresse valide, je te transmets
un exemple
PS : avec 47500 cellules renseignées, comme ça semble être le cas dans ton
exemple, le poids du fichier est trop "respectable" pour être accepté par
http://cjoint.com

AV


Pourquoi pas, mais je ne sais pas du tout faire. Pour tout avouer, je ne
suis pas une bête d'Excel ;-)))



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

N'y-a-t-il pas moyen d'accélérer un peu le traitement ?


Si passe par un filtre au lieu d'une boucle, les choses vont
considérablement
s'arranger !

AV




--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net




1 2