IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA - Pb Suppression lignes sur plage filtrée


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Points : 52
    Points
    52
    Par défaut VBA - Pb Suppression lignes sur plage filtrée
    Bonjour à tous,

    Voici mon problème :

    Après avoir filtré une plage selon un critère je veux supprimer les lignes résultantes répondant à un second critère. J'ai donc ce type de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    pr_PlageLiée.AutoFilter Field:=1, Criteria1:=sCritere1
    For Each rligne In pr_PlageLiée.SpecialCells(xlCellTypeVisible).Rows
        If rligne.Cells(1, 1).Offset(0, 9).Value = sCritere2 Then
            rligne.EntireRow.Delete
        End If
    Next rligne
    Malheureusement cela ne marche pas bien dans le sens où si 2 lignes consécutives (dans la plage résultante du filtre) répondent au second critère alors une seule est supprimée.

    Pouvez-vous SVP m'aider à trouver ce qui ne va pas dans ce code.

    Merci d'avance.
    Cordialement
    oracle7556

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    pr_PlageLiée.AutoFilter Field:=1, Criteria1:=sCritere1
    pr_PlageLiée.AutoFilter Field:=9, Criteria1:=sCritere2
     
    'supprime les lignes visibles
    'pr_PlageLiée doit contenir toutes les colonnes de données

    Edit: ci joint proposition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim LastLig As Long
    Dim Plage As Range
    Application.ScreenUpdating = False
    With Sheets("Base")
       LastLig = .Cells(Rows.Count, 1).End(xlUp).Row
       Set Plage = .Range("A1:S" & LastLig)
       Plage.AutoFilter field:=1, Criteria1:=strCriteria1
       Plage.AutoFilter field:=9, Criteria1:=strCriteria2
       If Plage.SpecialCells(xlCellTypeVisible).Count > Plage.Columns.Count Then
          .Range("A2:S" & LastLig).SpecialCells(xlCellTypeVisible).EntireRow.Delete
       End If
       Plage.AutoFilter
       Set Plage = Nothing
    End With
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Points : 52
    Points
    52
    Par défaut
    Bonsoir mercatog

    1 - D'abord MERCI de ta réponse, elle m'a mis sur la voie de la solution.

    2 - En fait, il suffisait de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pr_PlageLiée.AutoFilter Field:=1, Criteria1:=sCritere1
    pr_PlageLiée.AutoFilter Field:=10, Criteria1:=sCritere2
    pr_PlageLiée.SpecialCells(xlCellTypeVisible).EntireRow.Delete
    Comme quoi, pourquoi chercher à faire compliqué quand on peut faire simple ...
    Heureusement que tu m'as donné le déclic. MERCI encore de ton aide.
    Je considère le Pb comme résolu.

    Cordialement
    oracle7556

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pr_PlageLiée.SpecialCells(xlCellTypeVisible).EntireRow.Delete
    ne supprime t'elle pas même la ligne des titres?

    et au cas où le filtre sur les 2 critères ne donne aucun résultat
    tu auras des problèmes avec xlcelltypevisible
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] Enregistrement d'une plage filtrée
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 15/01/2008, 11h14
  2. vba suppresion de lignes sur condition
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/07/2007, 22h49
  3. [VBA-E] Connaître la 1ère & la dernière ligne sur un filtre AUTO
    Par CléoB dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2007, 18h09
  4. [VBA-E]suppression lignes a partir d'une cellule active
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/02/2007, 15h01
  5. [VBA-E]suppression ligne d'après lisbox multicritère
    Par clairefranclieu dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/09/2006, 22h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo