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   -
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
A voir également:

2 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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 ?
0
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.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
0
Micky_Willys Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Un grand merci, j'ai suivi votre conseil et il est vrai que c'est beaucoup plus lisible.
0
Micky_Willys Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0