Liste déroulante intélligente
Résolu
viret1290
Messages postés
146
Statut
Membre
-
viret1290 Messages postés 146 Statut Membre -
viret1290 Messages postés 146 Statut Membre -
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.
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
A voir également:
- Liste déroulante intélligente
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Site dangereux liste - Guide
6 réponses
Bonjour,
A condition qu'il y ait un espace entre les deux textes(Nom Prenom ou Prenom Nom):
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
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
https://www.cjoint.com/c/FBcqSjgJfFh
merci d'avance
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
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
Re,
Ecrire en majuscule exprime une colere qui ici n'est pas justifiee, donc ......
un autre exemple: https://www.cjoint.com/c/FBdg32yJaJf
Ecrire en majuscule exprime une colere qui ici n'est pas justifiee, donc ......
un autre exemple: https://www.cjoint.com/c/FBdg32yJaJf
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question