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 :

Votre avis pour utilisation ListView


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut Votre avis pour utilisation ListView
    Bonjour,

    J'utilise une listview que je remplie avec un recordset qui est le résultat d'une requête sur une base access.
    Je me trouve maintenant avec une listview remplie de plusieurs colonnes. Certaines colonnes correspondent à des champs numerique et d'autres à des champs texte.

    Je souhaite pouvoir filtrer sur 3 champs. Je pensais au départ, implémenter ma première requete en ajouter les critères : "Where Champ = '" valeur "' etc..."

    Je souhaite développer quelque chose de dynamique, que je pourrais exploiter sur différents formulaires.
    Au départ, j'ai ajouté mes 3 combobox au dessus de la listview, et je viens remplir ces combo avec les données de mes trois colonnes à filtrer.

    J'ai ajouté mes combobox à un module de classe, de cette manière, j'ai un seul événement "On Change" pour les 3.
    Le nom des combo est formaté de cette manière : "FiltreNomDuChampBase" exemple : "FiltreCodepostal" correspond au nom de champ de ma base "Codepostal"
    Grace au nom de la liste, je récupère le nom du champ. Il me faut maintenant pouvoir identifier le type de données pour ce champ. Si c'est du texte je dois ajouter '' dans les critères de filtre de ma requete, alors que si c'est du numérique je n'ajoute rien. Exemple : " Where codepostal = 37000" ou encore "Where prenom = 'jojo'"

    Avant d'aller plus loin, je me dis qu'il y a peut être un moyen plus simple de filtrer ma listview et que peut être j'ignore cette méthode...
    Sinon, j'avais pensé ajouter au nom de la combobox, le type de donnée par exemple : CNumFiltreCodepostal ou CTxtFiltrePrenom

    De cette manière, avec un Split, je peux découper le nom de la liste sur "Filtre" et retrouver le type de donnée et le nom du champ...

    Bref je suis perdu et j'ai besoin de votre avis...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Un recordset dispose le la propriété filtre (comme le where mais sur le résultat d'une requête)!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Rs.Filter="nomChamp='toto'"
     
    If not Rs.eof then msgbox "il y a des valeurs"
    Note le caractères qui délimite une zone de texte (string) en sql ['].

    Tu peux affecter ce caractère au tag du contrôle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ComboString.tag="'"
    ComboDate.tag="#"
    ComboNum.tag=rien
     
    Filtre="champ = " & ComboString.tag & ComboString  & ComboString.tag & " and chamX = " & etc...

  3. #3
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    Merci beaucoup pour ton aide !
    J'en conclu donc que ça ne sert à rien de me deconnecter de la base, je peux rester connecté dessus tant que j'ai besoin et donc "jouer" avec le recordset pour filtrer.
    Bien vu pour le tag !

    Par contre, si maintenant je désactive un filtre, comment puis-je soustraire du recordset le critère de filtre? Car j'ajoute du texte à la propriété filtre du recordset, mais pour en enlever, existe-il un moyen ou bien dois-je rechercher dans la chaine de caractère du filtre?

    Ou alors j'ai une autre option qui consisterait à reinitialiser les critères de filtre à 0, puis à boucler sur tous les objets de mon userform et qui s'appellent "Filtre" et si l'objet en question contient du texte, alors j'ajoute le critère au filtre. Sinon, je ne l'ajoute pas...

    Qu'en penses-tu?

    Merci !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tu repasse ton filtre à Filtre=""

    si tu manipule ton filtre par des movenext, tu vide ton filtre
    Filtre="" et tu fais un Rs.movelast note que tu peux recalculer ton recordeset rs.Filtre="": rs.requery! requery revient à ré-exécuter ta requête!

Discussions similaires

  1. Votre avis pour l'utilisation de Qt
    Par KonTiKI dans le forum Débuter
    Réponses: 2
    Dernier message: 01/09/2016, 08h58
  2. Réponses: 4
    Dernier message: 26/04/2006, 14h36

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