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 :

VBA - Listbox afficher un résultat avec moteur de recherche [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut VBA - Listbox afficher un résultat avec moteur de recherche
    Bonjour à vous,

    J'ai crée une feuille Excel contenant une ListBox et une TextBox.
    Dans ma première colonne, j'ai renseigné sur chaque ligne une question différente et sur la deuxième colonne en face des questions, les réponses adaptées.
    Dans la TextBox, on peut y taper la donnée recherchée et elle s'affiche dans la ListBox.

    Exemple : Si on tape "date" dans la TextBox on va retrouver toutes les lignes qui peuvent contenir "Date"
    Ensuite en double cliquant sur la ligne ("la question") que l'on veut sélectionné, la sélection s'affiche à l'écran.

    Mon souhait et de faire afficher à l'écran la réponse se trouvant dans la colonne B qui se trouve en face de la question.
    Est-ce possible ? Si oui, pouvez-vous m'aider svp ?

    Merci beaucoup

    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
     
     
    Option Compare Text
     
    Private Sub ListBox1_DblClick(ByVal Cancel as MSForms.ReturnBoolean)
     
    Dim resultat as string
     
    resultat = ListBox1.value
     
    Msgbox resultat
     
    End Sub
     
    Private Sub TextBox1_Change()
     
    Application.ScreenUpdating = False
     
    Range("A:A100").interior.ColorIndex = 2
    ListBox1.Clear
     
    If TextBox1 <> "" then
    For ligne = 2 to 100
    If Cells(ligne, 1) like "*" & TextBox1 & "*" then
    Cells(ligne, 1).Interior.ColorIndex = 43
    ListBox1.Additem Cells(ligne,1)
    End if
    Next
    End if
     
    End sub

  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,

    Exemple multi-mots multi-colonnes

    Boisgontier
    http://boisgontierjacques.free.fr
    Fichiers attachés Fichiers attachés

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut affichage d'une information suite à un double clique
    Bonjour Jacques,

    C'est excellent. Cependant je souhaite ajouter une autre textbox comme ci-joint pour faire afficher une remarque qui peut contenir plusieurs lignes. Pourriez-vous m'aider ?

    Merci beaucoup
    Fichiers attachés Fichiers attachés

  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
    CF 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    Dim f, choix(), Rng, Ncol
    Private Sub UserForm_Initialize()
       Set f = Sheets("bd")
       Set Rng = f.Range("A3:H" & f.[a65000].End(xlUp).Row)
       Ncol = Rng.Columns.Count
       '---- entêtes ListBox
       x = 15
       Y = Me.ListBox1.Top - 12
       For i = 1 To Ncol
        Set Lab = Me.Controls.Add("Forms.Label.1")
        Lab.Caption = f.Cells(2, i)
        Lab.Top = Y
        Lab.Left = x + 2
        x = x + f.Columns(i).Width * 0.8
        temp = temp & f.Columns(i).Width * 0.8 & ";"
      Next
      Me.ListBox1.ColumnCount = Ncol
      Me.ListBox1.ColumnWidths = temp
      '-- entêtes TextBox
      For i = 1 To Ncol
        Set Lab = Me.Controls.Add("Forms.Label.1")
        Lab.Caption = f.Cells(2, i)
        Lab.Top = Me("textbox" & i + 1).Top - 17
        Lab.Left = Me("textbox" & i + 1).Left
        x = x + f.Columns(i).Width * 0.5
      Next
      '--
      TblTmp = Rng.Value
       For i = LBound(TblTmp) To UBound(TblTmp)
         ReDim Preserve choix(1 To i)
         For k = LBound(TblTmp) To UBound(TblTmp, 2)
           choix(i) = choix(i) & TblTmp(i, k) & " * "
         Next k
       Next i
       Me.ListBox1.List = Rng.Value
    End Sub
     
    Private Sub TextBox1_Change()
       If Me.TextBox1 <> "" Then
           mots = Split(Trim(Me.TextBox1), " ")
           Tbl = choix
           For i = LBound(mots) To UBound(mots)
              Tbl = Filter(Tbl, mots(i), True, vbTextCompare)
           Next i
           If UBound(Tbl) > -1 Then
              Dim b(): ReDim b(1 To UBound(Tbl) + 1, 1 To Ncol)
              For i = LBound(Tbl) To UBound(Tbl)
                a = Split(Tbl(i), "*")
                For k = 1 To Ncol: b(i + 1, k) = a(k - 1): Next k
              Next i
              Me.ListBox1.List = b
              Me.Label1.Caption = UBound(Tbl) + 1
            End If
       Else
         UserForm_Initialize
      End If
    End Sub
     
    Private Sub ListBox1_Click()
        For k = 0 To Ncol - 1
          Me("TextBox" & k + 2) = Me.ListBox1.Column(k)
        Next k
    End Sub
    Boisgontier
    http://boisgontierjacques.free.fr
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut retirer des textbox et des données de la listbox
    TOP !

    Est-ce que possible de garder 3 colonnes dans le fichier Excel qui ne comporte que Context / Questions / Réponses et modifier l'userform de la manière suivante ?

    Afficher dans la ListBox (Context / Questions) et lorsque l'on clique dessus la partie réponse s'affiche dans la text2.
    Voir l'affichage ci-joint.

    Je vous remercie d'avance pour votre aide précieuse, excellent site et tuto
    Fichiers attachés Fichiers attachés

  6. #6
    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
    Cf 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    Dim f, choix(), Rng, Ncol
    Private Sub UserForm_Initialize()
       Set f = Sheets("bd")
       Set Rng = f.Range("A3:C" & f.[a65000].End(xlUp).Row)
       Ncol = Rng.Columns.Count
       '---- entêtes ListBox
       x = 15
       Y = Me.ListBox1.Top - 12
       For i = 1 To Ncol - 1
        Set Lab = Me.Controls.Add("Forms.Label.1")
        Lab.Caption = f.Cells(2, i)
        Lab.Top = Y
        Lab.Left = x + 2
        x = x + f.Columns(i).Width * 0.8
        temp = temp & f.Columns(i).Width * 0.8 & ";"
      Next
      Me.ListBox1.ColumnCount = Ncol
      '--
      TblTmp = Rng.Value
       For i = LBound(TblTmp) To UBound(TblTmp)
         ReDim Preserve choix(1 To i)
         For k = LBound(TblTmp) To UBound(TblTmp, 2)
           choix(i) = choix(i) & TblTmp(i, k) & " * "
         Next k
       Next i
       Me.ListBox1.List = Rng.Value
    End Sub
     
    Private Sub TextBox1_Change()
       If Me.TextBox1 <> "" Then
           mots = Split(Trim(Me.TextBox1), " ")
           Tbl = choix
           For i = LBound(mots) To UBound(mots)
              Tbl = Filter(Tbl, mots(i), True, vbTextCompare)
           Next i
           If UBound(Tbl) > -1 Then
              Dim b(): ReDim b(1 To UBound(Tbl) + 1, 1 To Ncol)
              For i = LBound(Tbl) To UBound(Tbl)
                a = Split(Tbl(i), "*")
                For k = 1 To Ncol: b(i + 1, k) = a(k - 1): Next k
              Next i
              Me.ListBox1.List = b
              Me.Label1.Caption = UBound(Tbl) + 1
            End If
       Else
         UserForm_Initialize
      End If
    End Sub
     
    Private Sub ListBox1_Click()
        Me.TextBox9 = Me.ListBox1.Column(2)
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. afficher les résultats avec matlab
    Par usthb23 dans le forum Images
    Réponses: 1
    Dernier message: 15/04/2010, 07h13
  2. Afficher un résultat avec Progressebar ou Gauge ?
    Par kangouroux dans le forum Débuter
    Réponses: 8
    Dernier message: 11/10/2009, 13h02
  3. [VBA-EXCEL] Afficher le résultat d'une variable à l'écran
    Par Froggy007 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 29/09/2008, 16h10
  4. Réponses: 13
    Dernier message: 26/07/2007, 08h50
  5. [MySQL] Comment affiché un résultat avec plusieurs lignes et plusieurs champs dans un tableau
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 15/05/2007, 14h19

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