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 avec un textbox et combobox affichant dans une listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 617
    Par défaut Recherche avec un textbox et combobox affichant dans une listbox
    Bsr à vous.
    J'ai fouillé un peu partout sur les forums et sur les tutos comment faire un code pour une recherche spécifique ou intuitive mais j'avoue que je n'ai pas réussi à adapter à mon compte. Toute fois j'ai trouvé un code semblable à ma situation mais celui ci semble ne pas m'aider. 😖😖😖😖
    En fait j'ai un combobox destiné à la recherche des classes et un textbox pour les noms. J'ai utilisé l'enregistreur de macros pour pouvoir aller plus vide en passant par le filtre avancé de Excel. Mais après la recherche et fermeture ma listbox affiche toujours le résultat quand je l'ouvre à nouveau. Donc j'ai souhaité utiliser ma première base de données pour mes recherches et laisser la deuxième ( Celle de filtre avancé copier coller juste à côté du premier tableau)
    Bon je vais être bref.
    En un mot je souhaiterais faire une recherche soit avec le nom ou bien avec la classe oubien les deux combinés.
    Donc voici le code que j'ai trouvé
    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
    Option explicit
    Dim f, choix1()
     
    private sub t_rech nom_change
    Dim tmp as string
    Dim n as long, i as long
    Dim b()
    Tmp ="*"&Ucase(me.t_rech_nom) & "*"
    n=0
    For i =lbound(choix1) to ubound(choix1)
    If Ucase choix1(i,1) like tmp or Ucase( choix1(i,2)) like tmp then
    n=n+1 : redim preserve b(1 to 2 ,1 to n)
    b(1,n)=choix1(i,1) : b (2,n) = choix1(i, 1)
    End if
    Next i
    If n>0 then
    Redim preserve b(1 to 2, 1 to n+1)
    Me.listbox1.list = application.transpose(b)
    Me.listbox1. removeitem n
     
     
    Private sub userform_initialize ()
    Set f= sheets("source")
    Choix1=f.range("c8:d" & f.[c65000].end(xlup).Row).value
    Me.listbox1.list=choix1
    je note que je n'ai pas bien compris ce code.
    Mon tableau commence de B8 à O1500
    Colonne C et D nom et prénoms et colonne F: classe
    Si quelqu'un pouvait m' expliquer correctement ce code et corriger certaines erreurs pour que je puisse l'adapter à mon formulaire ça serait un 👍👍👍
    Pour terminer je voudrais ajouter un petit problème encore
    J'ai utilisé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t_result_rech=listbox1.listcount -1
    pour afficher le nombre de lignes dans le textbox à numéro mais le textbox m'affiche tout le nombre de lignes visibles ou invibles après une recherche ou pas. Donc qu'est ce qui ne va pas dans le code
    Merci pour votre aide...👍👍👍

  2. #2
    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
    Bonjour,


    Exemples de recherche intuitive multi-mots multi-colonnes en PJ

    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
    34
    Dim f, choix1()
    Private Sub UserForm_Initialize()
      Set f = Sheets("BD")
      Set Rng = f.Range("A2:D" & f.[A65000].End(xlUp).Row)
      choix1 = Rng.Value
      Me.ComboBox1.List = choix1
    End Sub
     
    Private Sub ComboBox1_Change()
       If Me.ComboBox1.ListIndex = -1 And IsError(Application.Match(Me.ComboBox1, Application.Index(choix1, , 1), 0)) Then
         Dim b()
         For k = 2 To 5: Me("textbox" & k) = "": Next k
         tmp = UCase("*" & Replace(Me.ComboBox1, " ", "*") & "*")
         n = 0
         For i = LBound(choix1) To UBound(choix1)
           If UCase(choix1(i, 1)) Like tmp Or UCase(choix1(i, 3)) Like tmp Then
             n = n + 1: ReDim Preserve b(1 To 4, 1 To n)
             b(1, n) = choix1(i, 1): b(2, n) = choix1(i, 2): b(3, n) = choix1(i, 3): b(4, n) = choix1(i, 4)
           End If
          Next i
          If n > 0 Then
            ReDim Preserve b(1 To 4, 1 To n + 1)
            Me.ComboBox1.List = Application.Transpose(b)
            Me.ComboBox1.RemoveItem n
            Me.ComboBox1.DropDown
          End If
        Else
          On Error Resume Next
          Me.TextBox2 = Me.ComboBox1.Column(0)
          Me.TextBox3 = Me.ComboBox1.Column(1)
          Me.TextBox4 = Me.ComboBox1.Column(2)
          Me.TextBox5 = Me.ComboBox1.Column(3)
        End If
    End Sub

    Boisgontier
    Fichiers attachés Fichiers attachés

  3. #3
    Membre éclairé
    Homme Profil pro
    instituteur
    Inscrit en
    Juillet 2018
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : instituteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2018
    Messages : 617
    Par défaut
    Merci pour la réponse rapide.
    J'ai vu les deux fichiers. Mais peux tu m'expliquer brièvement ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      If Me.ComboBox1.ListIndex = -1 And IsError(Application.Match(Me.ComboBox1, Application.Index(choix1, , 1), 0)) Then
         Dim b()
         For k = 2 To 5: Me("textbox" & k) = "": Next k
         tmp = UCase("*" & Replace(Me.ComboBox1, " ", "*") & "*")
         n = 0
         For i = LBound(choix1) To UBound(choix1)
           If UCase(choix1(i, 1)) Like tmp Or UCase(choix1(i, 3)) Like tmp Then
             n = n + 1: ReDim Preserve b(1 To 4, 1 To n)
             b(1, n) = choix1(i, 1): b(2, n) = choix1(i, 2): b(3, n) = choix1(i, 3): b(4, n) = choix1(i, 4)
           End If
          Next i
          If n > 0 Then
            ReDim Preserve b(1 To 4, 1 To n + 1)
    car mon tableau commence à la ligne b8 exceptés les en-têtes jusqu'à O1500.

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

Discussions similaires

  1. [XL-2010] Lier plusieurs Combobox pour afficher dans une listbox
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/10/2015, 13h49
  2. Chemin complet d'un fichier affiché dans une listBox
    Par Djang0 dans le forum C++Builder
    Réponses: 4
    Dernier message: 19/08/2009, 10h47
  3. [E03] - Modifier les valeurs affichées dans une listbox
    Par couistelle dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/03/2009, 13h46
  4. Réponses: 5
    Dernier message: 18/09/2008, 15h02
  5. Afficher dans une ListBox
    Par fermat dans le forum Delphi
    Réponses: 5
    Dernier message: 21/10/2006, 00h00

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