Macro excel supprimer des lignes
Fermé
maloi1278
-
30 janv. 2008 à 14:58
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 1 févr. 2008 à 17:27
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 1 févr. 2008 à 17:27
A voir également:
- Macro excel supprimer des lignes
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Aller à la ligne excel - Guide
- Liste déroulante excel - Guide
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
10 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 711
30 janv. 2008 à 17:38
30 janv. 2008 à 17:38
bonjour
Avec une macro de ce genre, cela m'étonnerait que cela soit très long.
Tu peux rajouter d'autres valeurs, séparées par des virgules.
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.
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 !
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 !
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 !
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 !
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 !
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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !
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 !
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 !
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 !
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 711
1 févr. 2008 à 17:27
1 févr. 2008 à 17:27
bonjour
Par contre, j'ai vraiment du mal avec cette instruction:
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 ?
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 ?
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 711
31 janv. 2008 à 18:24
31 janv. 2008 à 18:24
bonjour
Si tu veux utiliser des paramètres externes il faut changer de procédure et ceci devrait fonctionner
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 ?
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 ?
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 711
1 févr. 2008 à 15:15
1 févr. 2008 à 15:15
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
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"
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.
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.
phil_232
Messages postés
286
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
33
1 févr. 2008 à 16:58
1 févr. 2008 à 16:58
"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 ...
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 ...