|
|
|
|
Configuration: Windows XP Internet Explorer 7.0
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 |
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 ! |
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 ! |
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) |
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 ! |
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) |
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 ! |
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 ! |
"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 ... |
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ésultats pour macro excel supprimer des lignes
Résultats pour macro excel supprimer des lignes