Saisie semi intuitive comme google

Bonjour,

Je viens vers vous car j'ai fait une combobox, avec saisie semi intuitive mais ça filtre avec les premiers caractères et non avec les caractère peut importe ou il se situe.

C'est à dire que j'aimerais que quand je tape une lettre il m'affiche tous le mot avec cette lettre peut importe qu'elle soit au début ou à la fin.

J'espère que je suis claire.

Je vous joint mon fichier

Bonjour,

Peut-être ainsi tmp = "*" & UCase(Me.ComboBox1) & "*"

ric

Merci bcp ça marche parfaitement.

Est il possible de créer un deuxième combobox pour rechercher dans une autre liste?

J'ai essayé mais ça ne fonctionne pas

Non c'est bon j'ai trouvé

Mais je n'arrive pas a partager le code que j'ai mis

Et bien non ça ne fonctionne pas comme je voudrais avec une deuxième combobox

Je vous joint le fichier

Bonjour,

Dans les nouveaux codes pour Combobox2, tu n'as pas renommé tous les éléments. Il restait des Combobox1. Il semblait y avoir des conflis avec a et mémo...

Un essai ...

Remplace tout le code par ceci ...

Dim a(), a2(), mémo, mémo2

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set zSaisie = Range("E18")
  If Not Intersect(zSaisie, Target) Is Nothing And Target.Count = 1 Then
    If mémo <> "" Then If IsError(Application.Match(Range(mémo), a, 0)) Then Range(mémo) = ""
    a = Application.Transpose(Sheets("Chantiers_Sections").Range("Liste_chantier"))
    Me.ComboBox1.List = a
    Me.ComboBox1.Height = Target.Height + 3
    Me.ComboBox1.Width = Target.Width
    Me.ComboBox1.Top = Target.Top
    Me.ComboBox1.Left = Target.Left
    Me.ComboBox1 = Target
    Me.ComboBox1.Visible = True
    Me.ComboBox1.Activate
    mémo = Target.Address
  Else
    Me.ComboBox1.Visible = False
  End If

  Set zSaisie = Range("E20")
  If Not Intersect(zSaisie, Target) Is Nothing And Target.Count = 1 Then
    If mémo2 <> "" Then If IsError(Application.Match(Range(mémo2), a2, 0)) Then Range(mémo2) = ""
    a2 = Application.Transpose(Sheets("Fournisseurs").Range("Liste_fournisseurs"))
    Me.ComboBox2.List = a2
    Me.ComboBox2.Height = Target.Height + 3
    Me.ComboBox2.Width = Target.Width
    Me.ComboBox2.Top = Target.Top
    Me.ComboBox2.Left = Target.Left
    Me.ComboBox2 = Target
    Me.ComboBox2.Visible = True
    Me.ComboBox2.Activate
    mémo = Target.Address
  Else
    Me.ComboBox2.Visible = False
  End If

End Sub

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

Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  ComboBox1.List = Sheets("Chantiers_Sections").Range("Liste_chantier").Value
  Me.ComboBox1.DropDown
End Sub

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 13 Then
    If IsError(Application.Match(ActiveCell, a, 0)) Then ActiveCell = ""
    ActiveCell.Offset(1).Select
  End If
End Sub

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

Private Sub ComboBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  ComboBox2.List = Sheets("Fournisseurs").Range("Liste_fournisseurs").Value
  Me.ComboBox2.DropDown
End Sub

Private Sub ComboBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 13 Then
    If IsError(Application.Match(ActiveCell, a, 0)) Then ActiveCell = ""
    ActiveCell.Offset(1).Select
  End If
End Sub

ric

Bonjour,

Fais attention aux données personnelles ou sensibles dans tes fichiers soumis sur le Net.

ric

Merci pour tes réponses tout fonctionne bien, je voulais savoir est-ce que l'on aurai la possibilité de faire une saisie similaire mais avec un calendrier?

Bonjour,

Est-ce que tu veux dire : Faire une chercher dans "Date début" et "Date Fin" ??

ric

Oui en effet

Bonjour,

Je ne sais pas ... je vais tenter la chose ... et je reviens ....

ric

Bonjour,

... est-ce que l'on aurai la possibilité de faire une saisie similaire mais avec un calendrier? ...

J'ai effectué un teste et les dates arrivent en numéro.

Exemple : le 22/05/2020 est le numéro : 43973 ... ième jour depuis le 01/01/1900

Je continue à fouiller ...

ric

Bonjour,

Il semble que ça fonctionne...

ric

Merci pour votre travail mais ce n'est pas à cela que je pensais. Je suis désolé, j'espère que vous n'avez pas perdu trop de temps

Je pensais a avoir une saisie par rapport à un calendrier et non une liste de valeur.

Bonjour,

Je ne comprends pas vraiment ton besoin.

Un calendrier apparaîtrait et les dates de la base de données seraient contrastées ????

Si tu serais assez aimable pour me décrire ton besoin en détail.

ric

Dans l'idéal si on peut créer une saisie de début et fin selon un calendrier, et que la cellule "fin" réagisse à la saisie de la date du début pour s'ajuster à cette dernière, c'est à dire que la date de fin ne peut pas être antérieur à la date du début.

Bonjour,

Date de début > est-ce l'on parle bien de lire dans la colonne J de la feuille "Chantiers_Sections" ?

Date de fin > est-ce l'on parle bien de lire dans la colonne K de la feuille "Chantiers_Sections" ?

Mais fin doit toujours être supérieur à début.

ric

Non il ne doit y avoir aucune relation avec une feuille, juste avec un calendrier standard.

Mais proposer la saisie avec le calendrier qui s'ajuste, comme pour les listes fournisseur, chantier etc

Bonjour,

Tu sais, je comprends vite ... Mais avant, il faut m'expliquer longtemps ...

Un double clic sur E14 ou E16 appelle un calendrier.

Tu sélectionnes une date, elle s'inscrit sur le bouton en bas à droite.

Si elle te convient, clique sur ce bouton en bas à droite.

La date va s'inscrire dans la cellule d'appel et le calendrier va se fermer.

Tu peux double cliquer à nouveau pour corriger la date.

Il y a gestion date antérieure et date postérieure.

Tu peux donc commencer indifféremment par E14 (date ouverture) ou E16 (date de fin).

ric

Merci c'est super, mais je vais être pointilleur, mais ou est-ce que je pourrais trouver un format de calendrier un peux plus sexy?

SI je peu me permettre.

Mais en tout cas merci bcp pour votre aide

Rechercher des sujets similaires à "saisie semi intuitive comme google"