Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Macro excel supprimer des lignes

maloi1278, le mercredi 30 janvier 2008 à 14:58:04
Bonjour,

J'ai un très gros fichier excel.

Dans ma colonne A, je vais avoir diverses données.
ex: A1= AAAA
A2= AAAA
A34= BBBBB
A35=CCCCC
A36= FFFFF

Je veux supprimer toutes les lignes dont les cellules contiennent certaines données comme CCCCC et FFFFF.

J'avais commencé une macro en faisant une boucle mais c'est super long vu que j'ai beaucoup de lignes à supprimer en fonction de mes critères.

ex: si ma cellule = CCCCC alors
je descend d'une ligne
sinon
je supprime la ligne

Et tout ça tant que je suis pas à la fn du fichier.

Et donc je suis obligé de marquer les valeurs de ma cellule une par une ! Et je trouve ça un peu trop fastidieux, il doit y avoir un meilleur moyen !

Je voulais donc savoir comment faire que ma macro aille comparer, sur une autre feuille (feuille2), la liste de mes données à supprimer.

En clair, je ferai sur une autre feuille:

A1=CCCCC
A2=FFFFF ....
Et ma macro comparerait chaque ligne de ma feuille 2 avec chaque ligne de ma feuille 1. Si elles sont égales, la ligne en feuille 1 est supprimée.

Voilà ce que je pensais faire. J'ai peur que ce soit long aussi.

A votre avis, est ce une meilleure idée que la 1ère?
J'espère avoir été clair !

Merci beaucoup !
Configuration: Windows XP
Internet Explorer 7.0
Répondre à maloi1278  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le mercredi 30 janvier 2008 à 17:38:13
bonjour

Avec une macro de ce genre, cela m'étonnerait que cela soit très long.
Sub supprime()
Dim lig As Double
For lig = Cells(65536, 1).End(xlUp).Row To 1 Step -1
    Select Case Cells(lig, 1).Value
        Case "CCCCC", "FFFFF"
            Rows(lig).Delete
    End Select
Next lig
End Sub

Tu peux rajouter d'autres valeurs, séparées par des virgules.

toujours zen
Répondre à gbinforme

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
maloi1278, le jeudi 31 janvier 2008 à 11:23:07
Bonjour,

Je viens de tester ta macro et effectivement, c'est beaucoup plus simple que ce que je fesais....

Par contre, je vais avoir beaucoup d'autres valeurs à rajouter (quand je dis beaucoup je parle d'une cinquantaine, voire plus).

Je les ai sur un fichier excel. Est ce possible de "lier" ce fichier de manière à ce qu'il commpare les valeurs directement sans avoir à les taper manuellement?

Merci beaucoup pour vos réponses !
Répondre à maloi1278

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
maloi1278, le jeudi 31 janvier 2008 à 15:32:37
Bonjour,

Autre chose, je suis sous excel 2007. J'ai voulu changer le nombre de lignes dans le code suivant mais il me met un message d'erreur.

For lig = Cells(65536, 1).End(xlUp).Row To 1 Step -1

Pourquoi??

Merci !
Répondre à maloi1278

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le jeudi 31 janvier 2008 à 18:24:55
bonjour

Si tu veux utiliser des paramètres externes il faut changer de procédure et ceci devrait fonctionner
Sub supprime()
Dim lig As Double
Dim del As Object
Dim prm As Range
Set prm = Workbooks("ton-classeur.xls").Sheets("tafeuille").Range(" A1:A5 " )
' il faut modifier la ligne ci-dessus pour définir tes paramètres de suppression :nom classeur, feuille et range
For lig = Cells(65536, 1).End(xlUp).Row To 1 Step -1
    Set del = Nothing
    Set del = prm.Find(What:=Cells(lig, 1).Value, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
    If Not del Is Nothing Then Rows(lig).Delete
Next lig
End Sub

J'ai voulu changer le nombre de lignes dans le code suivant mais il me met un message d'erreur.

Effectivement il y a le double de lignes en 2007 mais si tu as mis une valeur correcte tu ne devrais pas avoir d'erreur.
Quelle erreur ? Le savoir est la seule matière qui s'accroît quand on la partage. (Socrate)
Répondre à gbinforme

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
maloi1278, le vendredi 1 février 2008 à 14:59:39
Bonjour,

Je débute en vb et j'ai un peu de mal.
Je comprend à peu près ton code, mais comment je rappelle mon autre classeur?

Je récapitule:

Classeur1-feuille1 : ma liste de données avec la colonne B qui contient mes éléments de contrôle
Classeur2-Feuille1 : ma liste sur uniquement la colonne A de mes valeurs à comprarer dans Classeur1

Je voudrais que la macro compare la valeur en A1 de mon Classeur2 avec les valeurs de la colonne B de mon classeur1.

Si elles sont identiques je descends d'une ligne pour continuer la comparaison, sinon je supprime la ligne et je continue à comparer en dessous. Et ca, jusqu'à ce que je n'ai plus de valeur dans la colonne A de mon Classeur2!

Est ce possible??

Merci beaucoup pour votre aide !
Répondre à maloi1278

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le vendredi 1 février 2008 à 15:15:10
bonjour

Classeur1-feuille1 : ma liste de données avec la colonne B qui contient mes éléments de contrôle
Classeur2-Feuille1 : ma liste sur uniquement la colonne A de mes valeurs à comprarer dans Classeur1


C'est exactement ce que fait la macro mais il faut paramétrer cette ligne
Set prm = Workbooks("ton-classeur.xls").Sheets("tafeuille").Range(" A1:A5 " )

tu remplaces
ton-classeur.xls => par le nom de Classeur1-feuille1
tafeuille => par le nom de feuille1 du Classeur1

" A1:A5 " => par le range concerné "B:B"

Set prm = Workbooks("Classeur1.xls").Sheets("feuille1").Range("B:B")

Cela ne doit pas être très loin...

Petite précision : lorsque l'on supprime des lignes, vaut mieux commencer par le bas et remonter car après suppression, il y a toujours moins de lignes à traiter. Le savoir est la seule matière qui s'accroît quand on la partage. (Socrate)
Répondre à gbinforme

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
maloi1278, le vendredi 1 février 2008 à 16:24:09
Je suis désolé, je suis vraiment très nul!!

C'est bien ce que j'ai fait mais à priori cela ne me compare pas dans mon classeur2.

Je ne comprend pas bien comment fonctionne la méthode find. Le début, ça va ça parcours bien mon classeur1 en partant de la fin.

Par contre, j'ai vraiment du mal avec cette instruction:

Set del = prm.Find(What:=Cells(lig, 1).Value, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)


xlFormulas: cela correspond à quoi exactement? Cela devrait être mon classeur2, non?

Merci !
Répondre à maloi1278

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
maloi1278, le vendredi 1 février 2008 à 16:24:09
Je suis désolé, je suis vraiment très nul!!

C'est bien ce que j'ai fait mais à priori cela ne me compare pas dans mon classeur2.

Je ne comprend pas bien comment fonctionne la méthode find. Le début, ça va ça parcours bien mon classeur1 en partant de la fin.

Par contre, j'ai vraiment du mal avec cette instruction:

Set del = prm.Find(What:=Cells(lig, 1).Value, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)


xlFormulas: cela correspond à quoi exactement? Cela devrait être mon classeur2, non?

Merci !
Répondre à maloi1278

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
phil_232, le vendredi 1 février 2008 à 16:58:18
"65536" Access permet 65535 lignes

bon, encore une fois : Excel n'est pas une base de données. MAIS ! depuis ADO on peut attaquer une feuille Excel avec des fonctionalités d'une base de données (ATTENTION ! ce n'est pas multi-user). c'est juste une idée : créer une connexion ADO vers cette feuille et puis faire un

DELETE FROM MyExcelWorkSheet WHERE ...
Répondre à phil_232

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 gbinforme, le vendredi 1 février 2008 à 17:27:59
bonjour

Par contre, j'ai vraiment du mal avec cette instruction:

    Set del = prm.Find(What:=Cells(lig, 1).Value, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

Cette instruction recherche (Find) dans ton Classeur1-feuille1 : ma liste de données avec la colonne B qui contient mes éléments de contrôle (prm) la présence du contenu de ta colonne A (Cells(lig, 1).Value) en cours d'analyse.

Elle recherche pour chaque ligne de ton classeur à épurer.

Le début, ça va ça parcours bien mon classeur1 en partant de la fin.

Et ensuite, qu'est-ce qui ne fonctionne pas ?
Le savoir est la seule matière qui s'accroît quand on la partage. (Socrate)
Répondre à gbinforme
[VB Excel] Suppression de ligne sur critère (Résolu) Bonjour, Je souhaiterais intégrer une fonction de tri/extraction dans une macro Excel : . le programme irait tester la valeur d'une cellule . si cette valeur est différente de celle souhaitée, la ligne est supprimée Comment pourrai-je faire pour... www.commentcamarche.net/forum/affich-2757952-vb-excel-suppression-de-ligne-sur-critere
Excel 2003 - supp ligne suiv val dans col (Résolu) Bonjour, Je trouve ce site génial et je m'y suis inscrit. Mon problème dans les macros Excel. J'ai une feuille qui contient 45000 ligne environ mais toutes les données ne sont pas intéressantes Donc je voudrais supprimer des lignes sous les... www.commentcamarche.net/forum/affich-5810546-excel-2003-supp-ligne-suiv-val-dans-col
Macro Excel - Suppression lignes à 0 (Résolu) Bonjour, Voila le problème: Je travail dans la logistique sur un ERP. Nous effectuons des extracts sur excel afin d'exploiter les données. Mais à cause d'un bug nous avons des lignes dans excel qui se répète. Nous les supprimons grace à un... www.commentcamarche.net/forum/affich-6726105-macro-excel-suppression-lignes-a-0
Macro excel rechercher texte et suppression (Résolu)Bonjour, Je viens vous demander de l'aide car cela fait 2 jours que je suis dessus et je suis sur le point d'exploser !!! Sous Excel, je voudrais faire une macro pour supprimer les lignes qui contienne un certain texte. Il me faut donc... www.commentcamarche.net/forum/affich-6133365-macro-excel-rechercher-texte-et-suppression
Macro avec suppression de colonne (Résolu)Bonjour à toutes et à tous, Mon niveau en macro excel est archi nul. Je souhaite régler deux problème différents dans un fichier Excel. 1/ Je dois rechercher et remplacer une vingtaine de nom différents par une autre vingtaine de noms différents.... www.commentcamarche.net/forum/affich-4087893-macro-avec-suppression-de-colonne