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 :

Amélioration combobox liste client Boisgontier


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
    Novembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 90
    Par défaut Amélioration combobox liste client Boisgontier
    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 !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Mosar3

    Ce code ne correspond pas à une recherche sur occurrences donc forcément il ne peut convenir

    Pourtant il existe sur le site de feu BOIGONTIER

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 90
    Par défaut
    Mince j'ai oublié la partie du code importante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ChoixPatients_Change()
      'On trie la combobox à chaque changement. Permet de faire une recherche intelligente. Chopé sur le site de jacquesboisgontier encore... merci à lui :-)
      'If Me.ChoixPatients.ListIndex = -1 And IsError(Application.Match(Me.ChoixPatients, ListePatients, 0)) Then
      Me.ChoixPatients.List = Filter(ListePatients, Me.ChoixPatients.Text, True, vbTextCompare)
      Me.ChoixPatients.DropDown
      'End If
      Call ChoixPatientsRemplissage
    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re,

    Il aurait été plus simple de joindre le fichier, non

    a+
    Dernière modification par Invité ; 04/10/2022 à 03h59.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 90
    Par défaut
    Bilan kiné anonyme.xlsm

    Comme le code à l'intérieur me paraît lourd j'ai évité, mais voici

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re,

    Ca marche très bien 🤔
    Nom : 2022-10-04_04h01_35.png
Affichages : 187
Taille : 2,1 Ko


    Du coup je me demande quel était le problème et je reviens sur ce qui a été dis :

    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ément et que peu importe l'ordre de saisie il vienne la cellule correspondante ?
    Alors à moins d'être aveugle, le fait de commencer à saisir l'un des 2 termes, vous donne une liste complète de ce qui est trouvé

    Quel intérêt de vouloir absolument saisir "Antoine dupont" dans ce cas là

    Perso je laisse tomber, c'est une demande absurde (désolé de vous le dire comme ça )

Discussions similaires

  1. [VBA]amelioration combobox liste deroulante
    Par surftoon dans le forum Général VBA
    Réponses: 4
    Dernier message: 26/04/2007, 22h47
  2. Améliorer une liste déroulante
    Par fpecastaing dans le forum IHM
    Réponses: 10
    Dernier message: 08/02/2007, 11h53
  3. Réponses: 9
    Dernier message: 10/11/2006, 15h07
  4. Test sur une ComboBox (Liste déroulante).
    Par SeaWolf601 dans le forum IHM
    Réponses: 5
    Dernier message: 05/10/2006, 17h29
  5. [CSS] Améliorer mes listes ul li
    Par barthoose dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 13/09/2005, 23h14

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