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 :

Filtre automatique de lignes selon valeur avec VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 28
    Par défaut Filtre automatique de lignes selon valeur avec VBA
    Bonjour à tous,

    Je joins un fichier dans lequel j'explique mon besoin.
    Ce fichier comporte déjà un filtre par VBA mais j'ai besoin d'un 2ème filtre.
    Je vous remercie par avance pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Les macros ci-dessous masques les lignes manuellement.
    Une autre solution est d'utiliser des filtres automatiques.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Private Sub Worksheet_Change(ByVal Target As Range)
     
       If Target.Count > 1 Or Target <> [E8] Then Exit Sub
       Application.ScreenUpdating = False
        MasqueToutesLesColonnesSaufLot Sheets("LOTTAGE").Range("K2"), Target.Value
        MasqueLesLignesSansX Sheets("LOTTAGE").Range("K2"), Target.Value
       Application.ScreenUpdating = True
    End Sub
     
    Sub MasqueToutesLesColonnesSaufLot(firstLot As Range, ByVal lot As String)
        Dim plageAllLot As Range
        Dim plageLotCible As Range
        With firstLot.Worksheet
            .UsedRange.EntireColumn.Hidden = False
            Set plageAllLot = .Range(firstLot, .Cells(firstLot.Row, Columns.Count).End(xlToLeft).Offset(0, 2))
        End With
     
        If UCase(lot) <> "TOUS" Then
            Dim l As Range
            For Each l In plageAllLot
                If l = lot Then
                    With l.Worksheet
                        Set plageLotCible = .Range(l.Offset(0, -5), .Cells(l.Row, l.Column + l.Columns.Count + 1))
                    End With
     
                    Exit For
                End If
            Next l
     
            plageAllLot.EntireColumn.Hidden = True
            If Not (plageLotCible Is Nothing) Then plageLotCible.EntireColumn.Hidden = False
        End If
    End Sub
     
    Sub MasqueLesLignesSansX(firstLot As Range, ByVal lot As String)
        Dim plageAllLot As Range
        Dim plageLotCible As Range
        With firstLot.Worksheet
            .UsedRange.EntireRow.Hidden = False
            Set plageAllLot = .Range(firstLot, .Cells(firstLot.Row, Columns.Count).End(xlToLeft).Offset(0, 2))
        End With
     
        If UCase(lot) <> "TOUS" Then
            Dim l As Range
            For Each l In plageAllLot
                If l = lot Then
                    With l.Worksheet
                        Set plageLotCible = l.Cells(5, 3)
                    End With
     
                    Exit For
                End If
            Next l
     
        With firstLot.Worksheet
            Set plageLotCible = .Range(plageLotCible, plageLotCible.End(xlDown)).Offset(0, -7)
        End With
     
        Dim cell As Range
        For Each cell In plageLotCible
            If cell.Value = "" Then cell.EntireRow.Hidden = True
        Next cell
        End If
    End Sub

Discussions similaires

  1. [XL-2010] Nb lignes selon valeur dans cellules
    Par Riko63 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2013, 19h49
  2. [XL-2010] Filtre automatique de lignes selon valeur avec VBA
    Par kit2412 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/06/2013, 13h54
  3. copier lignes selon valeur d'une colonne
    Par steeeve34 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 13/09/2012, 17h38
  4. Supprimer ligne selon valeur du ComboBox1
    Par avyrex dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/06/2007, 10h27
  5. Ajout n lignes selon valeur...
    Par nicburger dans le forum Access
    Réponses: 1
    Dernier message: 26/10/2005, 19h49

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