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

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
 

A1234

XLDnaute Nouveau
bonjour à tous

@fanch55 dans ce cas là tu fait un test strptr sur le return de l'input
un exemple comme ca vite fait
VB:
Sub test()
    a = Array(20, 21, 22, 23, 24)
    num = InputBox("Filtres en cours: " & vbLf & Join(a) & vbLf & "Inscrire le numéro de la version à ignorer:")
    If StrPtr(num) = 0 Then
        MsgBox "filtrage annulé !" & vbCrLf & "addressPtR : " & StrPtr(num)
    Else
        MsgBox "filtrage !" & vbCrLf & "addressPtR : " & StrPtr(num) & vbCrLf & "numero  à supprimer : " & Val(num) & _
               vbCrLf & Replace(Join(a), " " & num, "")
    End If
End Sub

il fait meme la différence entre 0 tapé et le 0 du strptr
;)
maintenant tu sais comment on gère l’annulation d'un inputbox ;)
Je n'arrive pas à faire fonctionner ce code
 

A1234

XLDnaute Nouveau
bonjour à tous

@fanch55 dans ce cas là tu fait un test strptr sur le return de l'input
un exemple comme ca vite fait
VB:
Sub test()
    a = Array(20, 21, 22, 23, 24)
    num = InputBox("Filtres en cours: " & vbLf & Join(a) & vbLf & "Inscrire le numéro de la version à ignorer:")
    If StrPtr(num) = 0 Then
        MsgBox "filtrage annulé !" & vbCrLf & "addressPtR : " & StrPtr(num)
    Else
        MsgBox "filtrage !" & vbCrLf & "addressPtR : " & StrPtr(num) & vbCrLf & "numero  à supprimer : " & Val(num) & _
               vbCrLf & Replace(Join(a), " " & num, "")
    End If
End Sub

il fait meme la différence entre 0 tapé et le 0 du strptr
;)
maintenant tu sais comment on gère l’annulation d'un inputbox ;)
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
 

patricktoulon

XLDnaute Barbatruc
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
 

fanch55

XLDnaute Barbatruc
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 :
a1234.gif
 

fanch55

XLDnaute Barbatruc
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

  • a1234.xlsm
    22.1 KB · Affichages: 0

Discussions similaires

Réponses
2
Affichages
686

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote