FAQ sur Userform

Salut, je débute en VBA.

J'aimerais créer une Faq avec deux colonnes en utilisant les TextBox et ListBox.

Sur ma feuille, j'ai un tableau dans une colonne pour les questions et l'autre pour les réponses.

J'ai donc de haut en bas une zone de texte nommée "Mots-clés" pour trouver ma liste de questions dans ma

ListBox en dessous.

Jusque là tout fonctionne parfaitement bien.

Mon seul problème vient de ma zone de texte en dessous qui affichera après un Listbox_click() la réponse

à la question que j'aurai sélectionner dans ma liste.

J'arrive à afficher la même case mais pas celle de la colonne de droite.

Merci de m'aidé car je suis perdue

voici mon code :

Private Sub txtMotscles_Change()

Dim j As Integer

Dim NbMax As Integer

Dim MotsClesCherche As String

Me.lstQuestions.Clear

NbMax = Feuil1.Range("A100000").End(xlUp)

MotsClesCherche = Me.txtMotscles.Value

If Me.txtMotscles <> "" Then

For j = 2 To NbMax

If Feuil1.Cells(j, 3) Like "*" & Me.txtMotscles & "*" Then

Me.lstQuestions.AddItem Feuil1.Cells(j, 3)

End If

Next j

End If

End Sub

Et je souhaite après "clic" remplir correctement cette fonction mais impossible de se servir du j de la boucle

ci-dessus, même en static.

Private Sub lstClient_Click()

Dim F As String

F = Feuil1.Cells(j, 4)

Me.txtResultat.Value = F

Salut, peux-tu ajouter ton fichier ? ce sera plus simple pour comprendre ton souci

Bonjour,

ce Serait pas plus simple avec une combobox pour la liste de choix ?

ensuite avec la valeur combobox.listindex très facile d'afficher la ligne trouvé et la colonne suivante

Merci à vous pour vos réponses, c'est super gentil à vous

D'accord je vais regarder de plus près avec une combobox, c'est vrai que je débute, heureusement qu'il y a des personnes aussi sympa pour m'aider

Je vais essayer de joindre mon fichier pour vous montrer plus précisément

Le voici

Bonsoir,

cf PJ

Frapper dans le combobox intuitif un ou plusieurs mots.

La liste des questions se réduit au fur et à mesure de la frappe.

Dim f, choix(), Rng
Private Sub UserForm_Initialize()
   Set f = Sheets("bd")
   Set Rng = f.Range("A2:A" & f.[A65000].End(xlUp).Row)
   choix = Application.Transpose(Rng)
   Me.ComboBox1.List = choix
End Sub

Private Sub ComboBox1_Change()
 If Me.ComboBox1 <> "" Then
   mots = Split(Trim(Me.ComboBox1), " ")
   tbl = choix
   For i = LBound(mots) To UBound(mots)
     tbl = Filter(tbl, mots(i), True, vbTextCompare)
   Next i
   Me.ComboBox1.List = tbl
   Me.ComboBox1.DropDown
 Else
   ComboBox1_Click
 End If
End Sub

Private Sub ComboBox1_Click()
  Set result = Rng.Find(what:=Me.ComboBox1)
  If Not result Is Nothing Then
    Me.TextBox1 = result.Offset(, 1)
  End If
End Sub

Boisgontier

Je ne sais comment te remercier, c'est un super programme merci pour tout

Merci aussi à tous pour m'avoir aidé, vous êtes super sur ce forum

Autre solution avec un pgm générique (fait en 5 mn)

Boisgontier

Une solution variante du combobox intuitif avec textbox intuitif

Dim f, choix(), Rng
Private Sub UserForm_Initialize()
   Set f = Sheets("bd")
   Set Rng = f.Range("a2:a" & f.[A65000].End(xlUp).Row)
   choix = Application.Transpose(Rng)
   Me.ListBox1.List = choix
End Sub

Private Sub TextBox1_Change()
   mots = Split(Trim(Me.TextBox1), " ")
   tbl = choix
   For i = LBound(mots) To UBound(mots)
     tbl = Filter(tbl, mots(i), True, vbTextCompare)
   Next i
   Me.ListBox1.List = tbl
End Sub

Private Sub ListBox1_Click()
  Set result = Rng.Find(what:=Me.ListBox1, LookIn:=xlValues, LookAt:=xlWhole)
  If Not result Is Nothing Then
    Me.TextBox2 = result.Offset(, 1)
  End If
End Sub

Boisgontier

Je suis impressionnée, super travail merci ^^

Je regarderai ça de plus près, car ça pourra peut être résoudre mon problème de mes textbox qui ne vont pas à la ligne dès que l'encadré est trop rempli

C'est très gentil d'avoir fait tout ça pour moi mais le premier est déjà parfait je trouve

Bonjour,

Pour les textbox, il faut changer la propriété MultiLine

Boisgontier

Merci du coup oui j'ai réussi à le faire hier

Et j'aurais une dernière question après promis j'arrête, est ce qu'une textbox est capable d'afficher la police de ma cellule à l'identique (gras, italique,...).

Ne me le faite pas, je trouverai, c'est juste pour savoir si c'est possible

Bonsoir,

Je ne pense pas que ce soit possible. Les propriétés d'un TextBox sont les mêmes pour tout les TextBox.

Il faudrait renvoyer le résultat dans la cellule.

Boisgontier

ah dommage, merci beaucoup en tout cas

Une tentative en mettant le comboBox intuitif sur une feuille de calcul.

Boisgontier

Merci énormément c'est super gentil de m'avoir aidé, je ne sais comment te remercier pour tout ce que tu as fait pour moi.

Si tu ajoutes sur ton site la possibilité de faire des dons, je le ferai avec plaisir

Bonsoir,

>Si tu ajoutes sur ton site la possibilité de faire des dons, je le ferai avec plaisir

Ca me rappelle une stagiaire qui m'avait dit à la fin d'une formation que si je fondais une secte, elle adhérerait.

Je n'ai besoin de rien (je suis retraité).

Boisgontier

merci, c'est vraiment gentil en tout cas, c'est rare de voir des personnes comme vous

Bonne retraite aussi

Rechercher des sujets similaires à "faq userform"