Supression de lignes sous conditions multiple

Résolu
Micky_Willys Messages postés 5 Statut Membre -  
Micky_Willys Messages postés 5 Statut Membre -
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
Configuration: Windows XP
Firefox 2.0.0.13

2 réponses

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