XL 2019 Filtrer un colonne de donnée suivant une autre colonne

  • Initiateur de la discussion Initiateur de la discussion tokou
  • Date de début Date de début
  • Mots-clés Mots-clés
    vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

tokou

XLDnaute Nouveau
Bonjour , je vous écris ce post car je peine à trouver une solution à mon problème .

L'option filtrer de Excel ne permet pas de filtrer selon une colonne de valeurs et la fonction rechercheV ne résolu n'ont plus à mon souci .

Ce que je recherche à faire c'est tout simplement de filtrer une colonne selon une autre colonne de référence de filtrage ( Sans perdre aucune données ) .

Dans mon exemple filtrer la colonne A selon la colonne filtrage E.


J'avais déjà fait un post similaire il y'a 4 mois ( https://www.excel-downloads.com/thr...e-selon-une-autre-colonne-de-valeur.20063978/ )

mais il y'a quelque chose qui marche pas , je vous explique :

Lorsque qu'il y'a pas beaucoup de données dans la colonne A à trier, la macro filtrage fonctionne correctement mais dès qu'il dépasse une certaine valeur, le filtrage déconne .

Avant filtrage :

1651501972547.png


Après filtrage :


1651501914043.png


Niquel !

Mais dès qu'on a des données plus longue dans la colonne A, la VBA déconne :

Avant filtrage :

1651502082265.png


Après filtrage :

1651502179238.png

Vba de @sylvanu
:
VB:
Sub Filtre()
    Dim DLA%, DLE%, La%, Le%, F
    Application.ScreenUpdating = False
    DLA = Range("A65500").End(xlUp).Row
    DLE = Range("E65500").End(xlUp).Row
    Range("F2:F65000").ClearContents
    For La = 2 To DLA
        F = Cells(La, "A")
        For Le = 2 To DLE
            If Application.CountIf([E:E], F) > 0 Then
                Cells(La, "F") = "X"
                Exit For
            End If
        Next Le
    Next La
    ActiveSheet.Range("$F$1:$F$22").AutoFilter Field:=1, Criteria1:="<>"
End Sub
Sub FiltreOFF()
    Application.ScreenUpdating = False
    Range("F2:F65000").ClearContents
    ActiveSheet.Range("$F$1:$F$65000").AutoFilter Field:=1
End Sub

Je vous remercie pour toutes aides .
 
Bonjour Tokou,
Dans votre première PJ le tableau s'arrêtait à la ligne 22 d'où le filtrage :
VB:
ActiveSheet.Range("$F$1:$F$22").AutoFilter Field:=1, Criteria1:="<>"
Dans cette PJ, le filtrage est effectué sur tout le tableau :
Code:
ActiveSheet.Range("$F$1:$F$" & DLA).AutoFilter Field:=1, Criteria1:="<>"
A tester.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
439
Réponses
5
Affichages
396
Réponses
7
Affichages
84
Retour