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

XL 2016 (Dé)sélection à partir d'un inputbox

  • Initiateur de la discussion Initiateur de la discussion A1234
  • Date de début Date de début

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 !

A1234

XLDnaute Nouveau
Bonjour,

Je réalise une macro et j'aurai besoin de votre aide. J'essaie d'automatiser un filtrage sur la cellule Prev (H1) avec comme critères des numéros de 20 à 44.
J'aimerai garder tous les critères sauf un, celui qui est précisé par l'utilisateur grâce à un inputbox.

J'ai essayé le code suivant mais il bloque sur la partie c....

'a. Sélectionner toutes les versions
ActiveSheet.ListObjects("TableauData").Range.AutoFilter Field:=8
'b.Demander la version qui est à traiter
Dim num As Byte
num = InputBox("Inscrire le numéro de la version à traiter:")
'c. Déselectionner la famille à traiter
ActiveSheet.ListObjects("TableauData").Range.AutoFilter Field:=8, Criteria1 _
:=Array("<> *num* "), Operator:=xlFilterValues


merci d'avance
 
Je n'arrive pas à faire fonctionner ce code
 
Bonjour,

Manque t - il une partie sur ce code? En effet, il a l'air de bien fonctionner au niveau des input box mais ne s'applique pas au filtre: la valeur n'est pas décochée

merci d'avance
 
re
bonjour
oui bien sur je ne montrais que le principe de gestion d'anulation de l'input
VB:
Option Explicit
Sub FiltrerCol8()
Dim num As Long, dico, aux, x
With Sheets("Feuil1")
   Set dico = CreateObject("scripting.dictionary")
   Set aux = .ListObjects("Tableau1").DataBodyRange.Columns(8)
   For Each x In aux.SpecialCells(xlCellTypeVisible): dico(CStr(x.Value)) = "": Next x
   num = InputBox("Filtres en cours: " & vbLf & Join(dico.keys) & vbLf & "Inscrire le numéro de la version à ignorer:")
   If StrPtr(num) = 0 Then
        MsgBox "filtrage annulé !" 
    Else
   If dico.exists(CStr(num)) Then dico.Remove CStr(CStr(num))
   .ListObjects("Tableau1").Range.AutoFilter Field:=8
   If dico.Count > 0 Then .ListObjects("Tableau1").Range.AutoFilter Field:=8, Criteria1:=dico.keys, Operator:=xlFilterValues
End If
End With
End Sub
 
Après différents tests j'ai compris que ça ne fonctionnait pas si on décoche pas une première cellule avant d'utiliser la formule.
C'est plutôt rassurant: on ne peut pas enlever de filtres s'ils n'existent pas ....

Et il y a aussi une autre limite, si le numéro écrit dans l'input box ne correspond pas au numéro de la BDD la macro tourne dans le vie
Sur ma version, ce n'est pas possible :
 
Mince, j'ai un problème d'affichage chronologique des messages, les posts sont un peu mélangés ou la date n'est pas la bonne ...

La sub a été modifiée pour s'adapter à une table multi-filtres .
Elle est désormais exécutée quand on "double-clique" sur une des entêtes de table
 

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

M
Réponses
8
Affichages
3 K
M
Réponses
4
Affichages
1 K
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…