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 paramétré avec Textbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Par défaut Filtre paramétré avec Textbox
    Je veux réaliser un filtre en vba qui tourne grâce à deux textbox. Ces derniers transmet les valeurs critere1 et critere2 dans la procédure suivante :

    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
     
    Sub Filtrer(critere1 As String, critere2 As String)
    ActiveSheet.Unprotect ("bla")
     
    Selection.AutoFilter Field:=2, Criteria1:=critere1 & "*"
    Selection.AutoFilter Field:=3, Criteria1:=critere2 & "*"
     
    If critere1 = "" Then
    Selection.AutoFilter Field:=2
    End If
     
    If critere2 = "" Then
    Selection.AutoFilter Field:=3
    End If
     
    ActiveSheet.Protect ("bla")
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
    ActiveSheet.EnableSelection = xlUnlockedCells
    End Sub
    Pour avoir un filtre "récursif" j'ai rajouté une * apres les variables critere1 et critere2 qui doit normalement me permettre ici de remplacer n'importe quoi.

    Malheureusement ça marche pas, et je sèche...

    Help me please

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bonjour hkpsyco,
    Tu es sûr qu'on peut utiliser des caractères génériques avec autofilter ? Je n'ai rien trouvé de tel dans l'aide en ligne.

    Edit
    Si Critere1 et critere2 sont issus d'une textbox, alors limite la longueur du mot qui s'y trouve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Critere1 = Left(Me.textbox, Longueur)
    Juste une idée

  3. #3
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Par défaut
    J'ai trouvé d'où vient le problème...

    Lorsque j'applique mon filtre sur du texte ça fonctionne correctement, par contre sur des nombres je peux pas. voila pourquoi mon code bug

    Auriez vous une solution ?

  4. #4
    Membre expérimenté Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Par défaut
    Essaie de voir si tu passez tes valeurs chiffre en texte.

    Sinon tu peut essayer de faire des fourchettes :

    Par exemple si tu souhaite tout les nombre commencant par 12*
    Tu peux peut etre faire 1200<x<1300 ?

    C'est juste une petite sugestion

  5. #5
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Par défaut
    Oui Drost, je vois ce que tu veux dire. Mais un truc que je n'arrive pas à comprendre c'est que lorsque je n'utilise pas de caractère générique (*) le filtre fonctionne super bien.

    Exemple :

    J'ai donc une colonne avec des numéros de compte (comptabilité).
    Dans mon textbox, si je tappe par exemple 455121, le filtre va bien me trouver le compte et pourtant là ce n'est pas du texte. Il faut donc, que ma recherche soit "finie".

    Des que je rajoute mon caractère générique (*), il ne fonctionne plus

    Question idiote... Est-ce que par hasard il n'y a pas de caractères génériques pour les nombres lol ?

  6. #6
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Par défaut
    Bon j'ai finalement solutionné mon problème.
    Ayant deux colonnes de type texte, l'une représentant les gestions, et l'autre le numéro de compte lui-même.

    J'ai donc rajouté une colonne (CONCATENER) qui concatène la colonne gestion et numéro de compte en les séparant d'un point. Ce qui me donne une valeur texte de la forme xx.yyyyyyyy

    Le code :

    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
     
     
    Sub Filtrer(critere1 As String, critere2 As String)
     
    ActiveSheet.Unprotect ("test")
    Selection.AutoFilter _
    field:=1, Criteria1:=critere1 & "*." & critere2 & "*"
     
     
    If critere1 = "" And critere2 = "" Then
    Selection.AutoFilter field:=1
    End If
     
     
    ActiveSheet.Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
    ActiveSheet.EnableSelection = xlUnlockedCells
     
     
    End Sub
    Maintenant fonctionne à la perfection. Je confirme donc que la fonction filtre n'accepte pas de caractère générique (*) si le format de la cellule n'est pas du type texte.

    Merci pour tous vos conseils, et j'espère que ça pourra aider d'autres personnes

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bojour hkpsyco,
    Citation Envoyé par hkpsyco 05h11
    Maintenant tout fonctionne à la perfection. Je confirme donc que la fonction filtre n'accepte pas de caractère générique (*) si le format de la cellule n'est pas du type texte.
    "Le monde appartient aux homme qui se lèvent tôt !"
    Intéressante ton observation. Peut-être devrais-tu mettre ça dans Contribuez, avec pour titre "Caractères génériques dans un filtre" et donner ton exemple. C'est la première fois que j'en entends parler... Mais je ne sais pas tout, tant s'en faut. C'est toi qui vois
    Merci pour ta solution
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/05/2008, 16h50
  2. Réponses: 2
    Dernier message: 12/09/2005, 15h33
  3. [C#] Probleme avec TextBox dans un DataGrid
    Par Oberown dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/12/2004, 16h05
  4. Date nulle dans une requete paramétrée avec TParameter
    Par denrette dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/06/2004, 08h37
  5. Récupération des paramètres avec une procedure stockée
    Par samlerouge dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/03/2004, 22h00

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