Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 !

T

tokou

Guest
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 :



Après filtrage :




Niquel !

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

Avant filtrage :



Après filtrage :


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

Hello sylvanu, je te remercie beaucoup pour ta réponse. Malheureusement, ça marche toujours pas avec des grandes données sur la colonne A. J'essaye de voir sur le code.

 

Pièces jointes

Dernière modification par un modérateur:
Dans la première PJ le filtre était toujours en place des lignes 1 à 22.
Avec cette ligne j'active le filtre sur toute la colonne. Comme ça le résultat ne dépendra pas de la taille du tableau.
 
- 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
649
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…