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 :

Recherche multicritere via userform et affichage listbox [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    GESTIONNAIRE
    Inscrit en
    Novembre 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : GESTIONNAIRE
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2016
    Messages : 30
    Par défaut Recherche multicritere via userform et affichage listbox
    Bonjour à tous et merci d'avance pour votre aide
    J'ai réalisé un petit tableau d'exemple avec quelques noms, prénoms et numéro
    J'ai un Userform qui contient une Combobox pour le choix du critère de recherche et un textbox afin de saisir ce que l'on recherche.
    Ca marche très bien pour les champs NOM et PRENOM, de sorte que par exemple :
    - si l'on choisi NOM dans la Combo et tape "DU" dans la textbox il alimente la listbox avec DUPONT DURANT et DUPOND
    - si l'on choisi NOM dans la Combo et tape "OND" dans la textbox il alimente la listbox avec DUPOND
    il prend donc en compte en guise de recherche tout ce qui est contenu dans la textbox

    Le hic c'est que ça ne marche pas du tout pour le champs NUMERO, enfin ça marche seulement si on tape le numéro exact, j'aimerai trouver la même praticité de recherche qu'avec les champs PRENOM ET NOM comme par exemple :
    - si l'on choisi NUMERO dans la Combo et tape "56" dans la textbox il alimente la listbox avec les lignes DUPONT car le numéro = 5123456 et DUPOND car le numéro = 5652533

    Ci-dessous le code et en Fichier joint le doc excel
    Il doit s'agir d'une histoire de format, à voir peut être avec la fonction LIKE Vba, j'ai tenté de m'en servir mais sans succès
    Je pense que c'est un cas simple pour certain d'entre vous mais j'avoue que je sèche ! Merci

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Private Sub UserForm_Initialize()
    ComboBox1.List = WorksheetFunction.Transpose(Feuil1.Range("A1:C1")) ' on alimente en colonne la combobox1 avec les valeurs des intitulés de colonne _
                                                                          du tableau de la feuille
    End Sub
     
     
     
    Private Sub CommandButton1_Click()
    Sheets("SOURCE").Select
    Range("I3").Select
    Sheets("SOURCE").Range("I4") = ComboBox1.Value ' j'affecte le critere de recherche à la celulle I4
    Sheets("SOURCE").Range("I5") = CStr("*" & TextBox1.Value & "*")  ' et j'affecte le contenu de recherche à la cellule I5
     
     
    Call FILTRERPOURLISTBOX 'je lance un filtre pécial
     
    ListBox1.RowSource = Feuil1.Range("M4:O20").Address(external:=True) 'et j'alimente la listbox1 avec le resultat du filtre special
     
     
    End Sub
    Sub FILTRERPOURLISTBOX()
     
    Sheets("SOURCE").Select
        Range("A1:C20").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
            "I4:I5"), CopyToRange:=Range("M4:O4"), Unique:=False
    End Sub
     
     
     
    Private Sub CommandButton2_Click()
    Unload Me
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Bonjour

    c'est effectivement lié au fait que ce soit un nombre

    si dans ta colonne numéro tu ajoute un guillemet devant le numéro '5123456

    les numéro seront traités comme des texte et ça marche.

    voir si c'est envisageable...........

    dans ton cas :

    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
    Sub FILTRERPOURLISTBOX()
     
    Sheets("SOURCE").Select
     Set Plage = Range("C1:C20")
      For Each Cellule In Plage
        Cellule.Value = "'" & Cellule.Value
      Next Cellule
        Range("A1:C20").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
            "I4:I5"), CopyToRange:=Range("M4:O4"), Unique:=False
             Set Plage = Range("C1:C20")
      For Each Cellule In Plage
        Cellule.Value = Replace(Cellule.Value, "'", "")
      Next Cellule
     
    End Sub
    je transforme la colonne en texte pour faire le tri, il y a certainement mieux à faire.

    on pourrait aussi supprimer le ' dans la colonne O

  3. #3
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("SOURCE").Range("I5") = CStr("*" & TextBox1.Value & "*")  ' et j'affecte le contenu de recherche à la cellule I5
    Bonjour, je pense que ton problème vient du premier astérisque. Celui-ci indique que 51 par exemple peut être précédé de quelque chose et le deuxième qu'il peut être suivi de quelque chose il faut donc dans le cas des chiffres mettre CStr(Textbox1.Value & "*") .
    Il faudra sans doute prévoir une fonction If qui mettra celiui existant pour les lettres et le nouveau pour les chiffres
    J'espère avoir été clair
    Cordialement.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonsoir,

    Il n'y a pas besoin de filtre élaboré pour effectuer une recherche intuitive type Google (Alpha ou numérique)

    Voir en PJ:

    -Un exemple simple de recherche sur une colonne
    -Un programme générique de recherche muti-mots & multi-colonnes

    Boisgontier
    Fichiers attachés Fichiers attachés

  5. #5
    Membre averti
    Homme Profil pro
    GESTIONNAIRE
    Inscrit en
    Novembre 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : GESTIONNAIRE
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2016
    Messages : 30
    Par défaut
    Bonjour a_diard
    Je viens de tester ta solution et ça fonctionne, merci beaucoup d'avoir pu creuser ce problème de nombre et effectivement j'aurais du y penser avant,
    Le fait de placer un ' devant chaque cellule pour qu'elle soit reconnue comme texte, j'avais pourtant dejà eu le problème par le passé avec des numéros commençant par 0 et Excel voulait me les tronquer.
    Allez bon dimanche
    Au plaisir

  6. #6
    Membre averti
    Homme Profil pro
    GESTIONNAIRE
    Inscrit en
    Novembre 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : GESTIONNAIRE
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2016
    Messages : 30
    Par défaut
    Bonjour boisgontierjacques !
    Merci pour ton apport à la résolution de mon problème, et je serais tenté de dire quel apport !!! Ouah, impressionnant, j'avoue que mon niveau en VBA ne me permet pas de lire et de comprendre instantanément le déroulement du code de ton Userform mais je compte sérieusement décortiquer ton raisonnement et pourquoi pas l'appliquer à d'autres formulaires à venir concernant l'activité de mon association. Il n'est d’ailleurs pas exclu que je te contacte pour peut être plus de précision
    Chapeau en tout cas et merci de ton aide et de tes remarques pour le paramétrage en vue de l'application à nos bases de données respectives.
    J'avoue être toujours agréablement surpris par la rapidité et la qualité des réponses des membres du forum.
    Bon dimanche et bonne semaine à venir
    Alexandre

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

Discussions similaires

  1. Réponses: 26
    Dernier message: 28/08/2017, 10h58
  2. [XL-2010] Recherche valeur depuis Excel via Userform - éviter débogage si valeur non trouvée
    Par zielite dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/02/2015, 11h29
  3. Afficher les données rechercher via userform
    Par nora2603 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 11/07/2011, 00h50
  4. [XL-2007] userform et recherche multicritere
    Par dodo28 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/05/2010, 16h39
  5. Réponses: 5
    Dernier message: 13/05/2008, 10h16

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