Macro Excel VBA: Problème avec condition If et filtre

ricardo512

XLDnaute Nouveau
Bonjour à tous ,

Étant débutant j'ai un soucis avec une macro que j'essaie de développer
Voila je doit filtrer les donnée d'un fichier excel en fonction de nom de société et de numéro de compte

Jusque la pas de grand problème étant donné que j'ai fai des filtres automatique avec deux critères ( je n'en avais pas besoin de plus ) le tout compris dans différents onglet ( ex : onglet : "compte523" ou onglet "société X"...

Maintenant la difficulté réside dans le fait que je me retrouve avec un onglet "autres" qui doit répertorier tout ce qui na pas été filtré encore, excepté certains comptes qui ne sont pas à traiter

Ainsi je ne peux pas faire de filtre auto vu qu'il y 10 critères au moins, j'ai donc commence à réaliser cela :
Dim I As Long

Dim J As Long
Dim K As Long
Dim L As Long
Dim Plage As Range

Sheets(6).Select
Set Plage = Range("D2:E" & Range("D2").End(xlDown).Row)


For I = Plage.Cells.Count To 1 Step -1
If Plage.Cells(I).Value = 5580 Then
Plage.Cells(I).EntireRow.delete

End If

Next I


For J = Plage.Cells.Count To 1 Step -1
If Plage.Cells(J).Value = 5672 Then
Plage.Cells(J).EntireRow.delete
End If

Next J


For K = Plage.Cells.Count To 1 Step -1
If Plage.Cells(K).Value = 5678 Then
Plage.Cells(K).EntireRow.delete
End If

Next K
For L = Plage.Cells.Count To 1 Step -1
If Plage.Cells(L).Value = 5655 Then
Plage.Cells(L).EntireRow.delete

End If

Next L


Je demande donc à excel d'aller dans la feuille 6 puis la colonne D ( la ou ce trouve met numéro de cpte) et de me supprimer tout les lignes qui comprennent les valeurs de compte marquées ( 5655 5678...)
Jusque la ça marche mais le problème est que j'ai encore une dizaine de compte à inscrire et que je remarque, d'une, que le traitement est lourd et de deux, que cela peut ce simplifier en les imbriquants ensemble du genre :


For L = Plage.Cells.Count To 1 Step -1
If Plage.Cells(L).Value = 5655 or =5678 or=6890 Then
Plage.Cells(L).EntireRow.delete

Je sais que cela ne marche pas mais j'aimerais quelque chose qui s'y rapproche

Sinon autre idée , à la place des numéro de compte mettre les nom des société que je ne veux pas faire apparaitre dans la feuille

Un point important aussi certaines sociétés on le même numéro de compte




Voila j'espère que vous pourrez m'aider en tout cas merci d'avance à ceux qui se pencherons sur mon problème
 

skoobi

XLDnaute Barbatruc
Re : Macro Excel VBA: Problème avec condition If et filtre

Bonsoir ricardo512, bienvenue sur XLD,

une solution serait de mettre les numéros de compte dans un tableau VBA (en bleu) puis de parcourir tous les éléments qui le composent (en vert) comme ceci:

Code:
Sub test()
  Dim I As Long
  Dim J As Long
  Dim Plage As Range
  Dim NumCpte()
  Sheets(6).Select
  Set Plage = Range("D2:E" & Range("D2").End(xlDown).Row)
  [COLOR=Blue][B]NumCpte = Array(5580, 5672, 5678, 5655)[/B][/COLOR]
  Application.ScreenUpdating = False
  For I = Plage.Cells.Count To 1 Step -1
    [B][COLOR=Green]For J = LBound(NumCpte) To UBound(NumCpte)[/COLOR][/B]
      If Plage.Cells(I).Value = [B][COLOR=Green]NumCpte(J)[/COLOR][/B] Then
        Plage.Cells(I).EntireRow.Delete
      End If
    [COLOR=Green][B]Next J[/B][/COLOR]
  Next I
  Application.ScreenUpdating = True
End Sub
 

ricardo512

XLDnaute Nouveau
Re : Macro Excel VBA: Problème avec condition If et filtre

Merci beaucoup skoobi pour ta réactivité je viens de tester cela marche nikel , sauf dans le cas ou il n'y a rien de saisis dans une cellule compte
La macro ne supprime aucunes lignes voulues si ces dernières ce trouvent après la cellule blanche
 

ricardo512

XLDnaute Nouveau
Re : Macro Excel VBA: Problème avec condition If et filtre

A non pas du tout , je t'explique imaginons que dans la colonne D il y a une cellule qui ne contient aucun numéro de compte , la macro s'applique très bien sur les cellules avant cette cellule blanche ( elle supprime donc les lignes qu'il faut) par contre après cette cellule blanche la macro s'arrête et les lignes qui aurait du être supprimer
 

skoobi

XLDnaute Barbatruc
Re : Macro Excel VBA: Problème avec condition If et filtre

Je vois.
Si ta plage peux contenir des cellules vident, il faut définir la dernière cellule de la plage en partant du bas comme ceci:

Set Plage = Range("D2:E" & Range("D65536").End(xlUp).Row)
 

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 867
dernier inscrit
XFPRO