Supression de lignes sous conditions multiple
Résolu
Micky_Willys
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
Micky_Willys Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Micky_Willys Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je desire nettoyer un fichier, en supprimant des lignes inutiles. Mon code fonctionne mais j'ai au moins 20 condition et je trouve que le code n'est pas pratique car la condition est trop longue. Auriez vous des suggestions?
Merci d'avance.
code partiel (seulement 5 conditions)
Range("A1").Select
Do Until ActiveCell = ""
If ActiveCell.Offset(0, 12) = "CASH BALANCES" Or ActiveCell.Offset(0, 12) = "CASH" Or ActiveCell.Offset(0, 12) = "MARGIN" Or ActiveCell.Offset(0, 12) = "EXTERNAL FX HEDGE" Or ActiveCell.Offset(0, 12) = "HEDGE FORWARD" Then
ActiveCell.Offset(0, 0).Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Je desire nettoyer un fichier, en supprimant des lignes inutiles. Mon code fonctionne mais j'ai au moins 20 condition et je trouve que le code n'est pas pratique car la condition est trop longue. Auriez vous des suggestions?
Merci d'avance.
code partiel (seulement 5 conditions)
Range("A1").Select
Do Until ActiveCell = ""
If ActiveCell.Offset(0, 12) = "CASH BALANCES" Or ActiveCell.Offset(0, 12) = "CASH" Or ActiveCell.Offset(0, 12) = "MARGIN" Or ActiveCell.Offset(0, 12) = "EXTERNAL FX HEDGE" Or ActiveCell.Offset(0, 12) = "HEDGE FORWARD" Then
ActiveCell.Offset(0, 0).Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
A voir également:
- Supression de lignes sous conditions multiple
- Partage de photos en ligne - Guide
- Ecran multiple pc - Guide
- Excel cellule choix multiple - Guide
- Copier coller multiple - Guide
- Paris multiple 2/6 explication ✓ - Forum Loisirs / Divertissements
2 réponses
hello
mettre les arguments de test (CASH BALANCES, CASH, MARGIN,... ) dans un tableau et faire une boucle en comparant ActiveCell.Offset(0, 12) avec chaque élément du tableau ?
mettre les arguments de test (CASH BALANCES, CASH, MARGIN,... ) dans un tableau et faire une boucle en comparant ActiveCell.Offset(0, 12) avec chaque élément du tableau ?
Micky_Willys
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
En effet, ca pourrait faire le job. Penses tu qu'il serait possible de creer une espece de variable dans le code qui permettrait d'eviter la creation d'un tableau.
même en mettant la liste dans une seule variable, il faut tester chaque élément en manipulant la chaine de caractères, il me semble plus simple d'utiliser un tableau
Bonjour,
Ma question va peut etre sonnée stupide ou bizarre, mais je me demande si une macro peut etre trop rapide pour l'execution de certaines taches.
En effet, lorsque j'execute la macro tache par tache (avec F8) j'obtiens le résultat excompté mais des que je l'execute en mode lecture, no results!
Le principe de ma macro est de comparer une valeur a un ensemble de valeur afin de supprimer les lignes inutiles de ma feuille Excel.
Voici mon code:
'create a table with all the securities you don't want to see appaer in the report
Range("Z10001").Select
ActiveCell.Formula = "CASH BALANCES"
Range("Z10002").Select
ActiveCell.Formula = "MARGIN"
Range("Z10003").Select
ActiveCell.Formula = "EXTERNAL FX HEDGE"
Range("Z10004").Select
ActiveCell.Formula = "FX CASH BALANCES"
Range("Z10005").Select
ActiveCell.Formula = "FUNDING FOREX"
Range("Z10006").Select
ActiveCell.Formula = "FUTURE"
Range("Z10007").Select
ActiveCell.Formula = "HEDGE FORWARD FX"
' select the first row of the file
Range("A1").Select
'going to go until the last cell populated
Do Until ActiveCell = ""
'initialize the counter
i = 10001
'going to compare the column M (Type) to the table created previously
Do Until i = 10008
If ActiveCell.Offset(0, 12).Value = Range("Z" & i).Value Then
ActiveCell.Offset(0, 0).Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Else
i = i + 1
End If
Loop
ActiveCell.Offset(1, 0).Select
Loop
'delete the table
Range("Z8001:Z10007").Select
Selection.ClearContents
Range("A1").Select
Merci d'avance,
M.
Ma question va peut etre sonnée stupide ou bizarre, mais je me demande si une macro peut etre trop rapide pour l'execution de certaines taches.
En effet, lorsque j'execute la macro tache par tache (avec F8) j'obtiens le résultat excompté mais des que je l'execute en mode lecture, no results!
Le principe de ma macro est de comparer une valeur a un ensemble de valeur afin de supprimer les lignes inutiles de ma feuille Excel.
Voici mon code:
'create a table with all the securities you don't want to see appaer in the report
Range("Z10001").Select
ActiveCell.Formula = "CASH BALANCES"
Range("Z10002").Select
ActiveCell.Formula = "MARGIN"
Range("Z10003").Select
ActiveCell.Formula = "EXTERNAL FX HEDGE"
Range("Z10004").Select
ActiveCell.Formula = "FX CASH BALANCES"
Range("Z10005").Select
ActiveCell.Formula = "FUNDING FOREX"
Range("Z10006").Select
ActiveCell.Formula = "FUTURE"
Range("Z10007").Select
ActiveCell.Formula = "HEDGE FORWARD FX"
' select the first row of the file
Range("A1").Select
'going to go until the last cell populated
Do Until ActiveCell = ""
'initialize the counter
i = 10001
'going to compare the column M (Type) to the table created previously
Do Until i = 10008
If ActiveCell.Offset(0, 12).Value = Range("Z" & i).Value Then
ActiveCell.Offset(0, 0).Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Else
i = i + 1
End If
Loop
ActiveCell.Offset(1, 0).Select
Loop
'delete the table
Range("Z8001:Z10007").Select
Selection.ClearContents
Range("A1").Select
Merci d'avance,
M.