Liste déroulante intélligente

Résolu/Fermé
viret1290 Messages postés 137 Date d'inscription samedi 17 août 2013 Statut Membre Dernière intervention 12 octobre 2022 - Modifié par pijaku le 2/02/2016 à 12:20
viret1290 Messages postés 137 Date d'inscription samedi 17 août 2013 Statut Membre Dernière intervention 12 octobre 2022 - 4 févr. 2016 à 10:18
Bonjour,

J'ai réussi à faire un code pour que ma liste déroulante recherche a fur et à mesure le nom dans une liste, mais le problème c'est que dans la même cellule il y a le nom et prénom.
le prénom est aussi devant et le nom après, donc il ne trouve pas le nom.

Comment puis je faire pour qu'il regarde dans la cellule intégralement et qui me sorte tous les groupes de lettres que je tape.


Dim a()

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  
  If Not Intersect([A2:A16], Target) Is Nothing And Target.Count = 1 Then
    a = Application.Transpose(Sheets("Feuil3").Range("C:C"))
    Me.ComboBox21.List = a
    Me.ComboBox21.Height = Target.Height + 3
    Me.ComboBox21.Width = Target.Width
    Me.ComboBox21.Top = Target.Top
    Me.ComboBox21.Left = Target.Left
    Me.ComboBox21 = Target
    Me.ComboBox21.Visible = True
    Me.ComboBox21.Activate
    'Me.ComboBox1.DropDown ' ouverture automatique au clic dans la cellule
  Else
    Me.ComboBox21.Visible = False
  End If
End Sub

Private Sub ComboBox21_Change()

  If Me.ComboBox21 <> "" And IsError(Application.Match(Me.ComboBox21, a, 0)) Then
    Set d1 = CreateObject("Scripting.Dictionary")
    tmp = UCase(Me.ComboBox21) & "*"
    For Each c In a
      If UCase(c) Like tmp Then d1(c) = ""
    Next c
    Me.ComboBox21.List = d1.keys
    Me.ComboBox21.DropDown
 End If
  ActiveCell.Value = Me.ComboBox21
End Sub
Private Sub ComboBox21_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  ComboBox21.List = Sheets("Feuil3").Range("C:C").Value
  Me.ComboBox21.DropDown
End Sub
Private Sub ComboBox21_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 13 Then ActiveCell.Offset(1).Select
End Sub

6 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
2 févr. 2016 à 14:24
Bonjour,

A condition qu'il y ait un espace entre les deux textes(Nom Prenom ou Prenom Nom):

Dim a()

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  
  If Not Intersect([A2:A16], Target) Is Nothing And Target.Count = 1 Then
    With Worksheets("Feuil3")
        derlig = .Range("C" & Rows.Count).End(xlUp).Row
        a = Application.Transpose(.Range("C1:C" & derlig))
    End With
    With Me.ComboBox21
        .List = a
        .Height = Target.Height + 3
        .Width = Target.Width
        .Top = Target.Top
        .Left = Target.Left
        .Visible = True
        .Activate
    End With
    Me.ComboBox21 = Target
    'Me.ComboBox1.DropDown ' ouverture automatique au clic dans la cellule
  Else
    Me.ComboBox21.Visible = False
  End If
End Sub

Private Sub ComboBox21_Change()
    If Me.ComboBox21 <> "" And IsError(Application.Match(Me.ComboBox21, a, 0)) Then
        Set d1 = CreateObject("Scripting.Dictionary")
        tmp = UCase(Me.ComboBox21) & "*"
        tmp1 = "* " & UCase(Me.ComboBox21) & "*"
        For Each c In a
            If UCase(c) Like tmp Or UCase(c) Like tmp1 Then
                d1(c) = ""
            End If
        Next c
        Me.ComboBox21.List = d1.keys
        Me.ComboBox21.DropDown
    End If
  ActiveCell.Value = Me.ComboBox21
End Sub

Private Sub ComboBox21_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    With Worksheets("Feuil3")
        derlig = .Range("C" & Rows.Count).End(xlUp).Row
        ComboBox21.List = .Range("C1:C" & derlig).Value
    End With
  Me.ComboBox21.DropDown
End Sub

Private Sub ComboBox21_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 13 Then ActiveCell.Offset(1).Select
End Sub
0
viret1290 Messages postés 137 Date d'inscription samedi 17 août 2013 Statut Membre Dernière intervention 12 octobre 2022 2
2 févr. 2016 à 17:44
Ca ne fonctionne pas. j'aimerai même si les lettres que je tape ne sont pas au début de la chaîne de caractère, qu'il les trouve et me propose toutes cellules ou il y a ce que je viens de taper dans la cellule déroulante. je joint le fichier en annexe
https://www.cjoint.com/c/FBcqSjgJfFh

merci d'avance
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
2 févr. 2016 à 18:08
0
viret1290 Messages postés 137 Date d'inscription samedi 17 août 2013 Statut Membre Dernière intervention 12 octobre 2022 2
2 févr. 2016 à 18:49
PAR EXEMPLE IL Y A
KING STEPHEN
DONC SI JE TAPE KING IL ME PROPOSE KING STEPHEN
MAIS SI JE TAPE STEPHEN K IL ME PROPOSE RIEN

DON J'AIMERAI QUE CI JE TAPE STEPHEN K IL ME PROPOSE STEPHEN KING
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
3 févr. 2016 à 07:56
Re,

Ecrire en majuscule exprime une colere qui ici n'est pas justifiee, donc ......

un autre exemple: https://www.cjoint.com/c/FBdg32yJaJf
0
viret1290 Messages postés 137 Date d'inscription samedi 17 août 2013 Statut Membre Dernière intervention 12 octobre 2022 2
3 févr. 2016 à 15:50
Désolé ce n'est pas de la colère mais le clavier était sur majuscule. Alors désolé si tu y a pris mal ....
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > viret1290 Messages postés 137 Date d'inscription samedi 17 août 2013 Statut Membre Dernière intervention 12 octobre 2022
3 févr. 2016 à 16:27
Re,

Simple remarque. Et cette combobox ????
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
viret1290 Messages postés 137 Date d'inscription samedi 17 août 2013 Statut Membre Dernière intervention 12 octobre 2022 2
3 févr. 2016 à 16:57
Merci ça fonctionne.
J'ai encore un soucis il fonctionne avec mon ordi qui fonctionne avec Windows7 64bits et office2010 32bits, et quand je veux le faire fonctionner avec un autre ordi qui fonctionne avec les même programmes, il met une erreur...
Savez-vous pourquoi ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 3/02/2016 à 17:08
Re,

chez moi, W8 64bits, office2013 32bits

Quelle erreur ??
0
viret1290 Messages postés 137 Date d'inscription samedi 17 août 2013 Statut Membre Dernière intervention 12 octobre 2022 2
4 févr. 2016 à 10:18
Bonjour,

J'ai vue sur des Blogs, qu'il fallait tenter une ré-installation d'Office pour résoudre le problème.

C'est ce que j'ai fait, et ça fonctionne.

Merci de votre aide.
0