Bonjour,

J'ai récupéré sur le site de Jacques Boisgontier un code pour faire une saisie intelligente type google dans une combobox de liste client.
J'ai préféré faire une base de données avec une seule colonne qui regroupe Nom et Prénom, et l'utilisateur qui saisie dans la même box Nom Prénom du client (patient).

En l'état si je saisie "Antoine Dupont" au lieu de "Dupont Antoine", ça ne matche pas donc la combobox n'affiche pas "Dupont Antoine" (alors qu'en saisissant "Antoine" la combobox affiche "Dupont Antoine").
Est-il possible de modifier le code afin de reconnaître les mots séparéments et que peu importe l'ordre de saisie il vienne la cellule correspondante ?

Voici le code :
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
Private Sub userform_initialize()
    Call MettreDateBilan
 
    SetClass 'module de classe pour les label qui mettent en forme les textbox
    Set f = Sheets("Bilan 1") 'raccourci pour appeler l'onglet Patients actifs facilement dans la suite du code
 
     ListePatients = Application.Transpose(f.Range("B2:B" & f.[A65000].End(xlUp).Row).Value) 'On déclare ListePatients de cette manière pour que la suite du code soit homogène (ListePatients/ListePatientsbis) avec les 2 combobox, même si là on remplit ChoixPatientsActifs différemment. On se sert de ListePatients juste pour choper le n° de ligne quand on validera ou récupèrera les données.
     Me.ChoixPatients.List = ListePatients
     Me.ChoixPatients.Value = ""
     Me.MultiPage1.Value = 0
     Me.ChoixPatients.SetFocus
 
     LabelNomNouveau.Width = 0 'rendre invisible textbox nom du nouveau patient
     TextBox1.Width = 0
     BoutonCréerPatient.Width = 0
 
End Sub
 
 
Private Sub ChoixPatientsRemplissage()
    Dim Col As Long
    Dim MesControles As MSForms.Control
    Dim MesPages As MSForms.Page
 
        For i = 1 To UBound(ListePatients)
         If ListePatients(i) = ChoixPatients Then 'si la ligne i (de Transpose) correspond à la selection alors
           LigneSrc = i + 1
 
          With Me
           For Each MesPages In .MultiPage1.Pages 'routine pour remplir les cellules avec les textboxes
           MesPages.TransitionPeriod = 0 'on supprime la transition et on active les page pour permettre le setfocus sur le textbox
           .MultiPage1.Value = Mid(MesPages.Name, 5) - 1
             For Each MesControles In MesPages.Controls
              If TypeName(MesControles) = "TextBox" Then
                If MesControles.Tag <> "Résumé" And MesControles.Tag <> "Séances" Then
                Col = Mid(MesControles.Name, 8) + 1 ' la colonne à rentrer en fonction du textbox
                MesControles.Text = Sheets("Bilan 1").Cells(LigneSrc, Col)
                MesControles.SetFocus
                MesControles.CurLine = 0
                End If
              End If
             Next MesControles
            Next
 
            OptionButton1.Value = IIf(f.Cells(LigneSrc, 1) = "Madame", True, False)
            OptionButton2.Value = IIf(f.Cells(LigneSrc, 1) = "Monsieur", True, False)
 
         End With
        End If
        Next i
        Me.MultiPage1.Value = 0
        Me.ChoixPatients.SetFocus
        For Each MesPages In Me.MultiPage1.Pages
        MesPages.TransitionPeriod = 500
        Next
 
End Sub
Merci !