Combo dans USF : recherche plein texte

Bonjour

dans le fichier joint, 2 formulaires.

On se place sur la feuille "Acc". On clic sur formulaire

Dans ce formulaire, 3 combo correspondant au listing de la colonne A feuille1

Parfois, la recherche par l'utilisateur se fait difficilement sur les premières lettres du combo.

Objectif du bouton recherche : ouvrir par dessus le formulaire déjà ouvert (je ne souhaite pas que l'on "décharge" celui-ci) le formulaire recherche dans lequel on saisirai un mot dans le textbox et après avoir cliqué sur le bouton lister le résultat, s'afficherai dans la listbox tous les items contenant le mot choisi quelque soit :

* la casse utilisée

* sa position (début, milieu ou fin de cellule)

Dans cette liste réduite de résultat, l'utilisateur a pu repérer le bon item qu'il veut sélectionner. Il referme cet USF de "recherche", retourne sur l'USF principal et peut continuer sa saisie.

J'espère m'être bien expliqué et ne pas avoir oublié de détail.

Merci d'avance

Bonjour Bby, bonjour le forum,

En pièce jointe ton fichier modifié. J'ai supprimé le bouton. Pour lancer la recherche, double clique dans l'une de 3 ComboBoxes.

Tape le texte à rechercher, double-clique dans la listBox1. Le mot double-cliqué est renvoyé dans la ComboBox précédemment double-cliquée...

29boby-v02.xlsm (116.70 Ko)

Bonjour ThauThème

C'est Super, ça marche nickel et j'aime bien le principe de l'ouverture du second formulaire au double-clic avec renvoi du résultat dans le combo concerné.

Vais en user et en abuser (si j'arrive à bien maitriser le code du 2° formulaire )

Franchement génial, et avec les explications en prime !!!

Merci beaucoup et bonne journée

Re

Bon ben finalement j'ai un bug quand je veux adapter le tout à un de mes fichiers :

dans les propriétés de mes combo (formulaire initial), j'avais mis dans la catégorie Style : "2 - fmStyledropDownList" afin d'éviter lasaisie de données inexistante au lieu de sélectionner uniquement dans la liste

Sauf que pour que tes macros fonctionnent, visiblement il faut que la propriété soit à "1 - fmStyledropDownCombo".

Enfin c'est ce que mes différents tests me font comprendre.

Une solution pour que ta (géniale) proposition fonctionne tout en interdisant la saisie de données incohérentes ?

Merci d'avance

Tu peux laisser le fmStyledropDownCombo et mettre ca (Quand tu sorts de la combobox, ca vérifie que la valeur saisie est bien dans la liste).

Tu peux changer le MsgBox ("Saisie non valide") par ce que tu veux.

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim saisieValide As Boolean
Dim tableau() As String
Dim i As Integer
Dim j As Integer
saisieValide = False
i = 2
j = 0

While Sheets("Feuil1").Cells(i, 1) <> ""
ReDim Preserve tableau(i)
tableau(i) = Sheets("Feuil1").Cells(i, 1)
i = i + 1
Wend

For j = 0 To UBound(tableau)
If Me.ComboBox1.Value = tableau(j) Then saisieValide = True
Next

If saisieValide = False Then
MsgBox ("Saisie non valide")
End If

End Sub

Bonjour le fil, bonjour le forum,

Peut-être aussi comme ça :

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'à la sortie de la Combobox
If Me.ComboBox1.Value = "" Then Exit Sub 'si la ComboBox est vide, sort de la procédure (supprimer cette ligne si la Combobox doit être impérativement renseignée)
If Me.ComboBox1.ListIndex = -1 Then 'si la valeur de la ComboBox ne fait pas partie de sa liste d'éléments
    Cancel = True 'empêche la sortie de la ComboBox
    MsgBox "Non valide ! Ne fait pas partie de la liste." 'message
    Me.ComboBox1.Value = "" 'efface le contenu de la ComboBox
End If 'fin de la condition
End Sub

ThauTheme,

Tu m'en apprends des choses, merci à toi

Bonjour

Je reviens sur cet ancien fil car si le mode de fonctionnement me convient parfaitement (ouverture d'un formulaire de recherche en double cliquant sur une combo de mon USF avec retour du résultat de la recherche sur le bon combo), j'aimerai savoir s'il était possible d'ouvrir ce formulaire de recherche à partir d'autres USF (avec retour du résultat dans le bon combo du bon USF ?

En effet, dans la solution proposée ici même (ci-dessous), le résultat pointe vers un USF clairement nommé (ligne "USF cible" dans le code ci-dessous) :

Private Sub ListBox1_Click() 'au click dans la ListBox
Dim CTRL As Control
For Each CTRL In USFAdm.Controls ' USF cible
    If CTRL.Tag = "O" Then
        CTRL.Value = Me.ListBox1.Column(0, Me.ListBox1.ListIndex) 'récupère la valeur en colonne 0 de l'élément cliqué
        CTRL.Tag = ""
        Exit For
    End If
Next CTRL
Unload Me
End Sub

Serait-il possible de remplacer

USFAdm

par une variable ?

Merci d'avance et bonne journée

Bonjour

De nombreux mois après, je ne parviens toujours pas à résoudre le problème exposé ci-dessus.

Merci d'avance

Rechercher des sujets similaires à "combo usf recherche plein texte"