Liste déroulante intuitive (frappe semiautomatique)

jesusdiaz

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin d'aide car j'ai fait une feuille de devis, avec une liste déroulante qui attaque une base de donnée (jusque là tout va bien).

Le problème vient de ma liste déroule qui comporte beaucoup de données et pour simplifier les choses je souhaite que les gens puissent écrire les deux premières lettres et automatiquement les propositions correspondantes apparaissent.

Merci de bien vouloir m'aider (ci-joint le fichier fait avec Excel 2007)

JD
 

Pièces jointes

  • Devis.zip
    31 KB · Affichages: 220
  • Devis.zip
    31 KB · Affichages: 203
  • Devis.zip
    31 KB · Affichages: 209

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Liste déroulante intuitive (frappe semiautomatique)

Bonjour,

A défaut de fichier, voir exemple en PJ d'une liste conditionnelle intuitive sur le 2eme choix.

JB
 

Pièces jointes

  • DVConditionSaisieIntuitive2_2010.xlsm
    51.4 KB · Affichages: 151

sebcane

XLDnaute Nouveau
Re : Liste déroulante intuitive (frappe semiautomatique)

Merci pour votre réponse,
je vais vous joindre un fichier mais il est professionnel donc puis je vous l'envoyer en MP ?
J'aurais voulu pour le mieux soit un userform avec 2 critères de sélection (tout en ayant le 2eme critère qui changerait en fonction du premier saisie)
ou comme votre fichier joint ci dessus mais en ayant une liste intuitive dans le premier choix
Je suis exigeant lol.
Merci d'avance pour votre soutient.
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Liste déroulante intuitive (frappe semiautomatique)

Voir PJ (version formulaire avec combobox intuitif)

IntuitifCond.gif

Code:
Dim Tbl(), a, b
Private Sub UserForm_Initialize()
  a = Range("Produit").Value
  b = Range("Typeproduit").Value
  Set d1 = CreateObject("Scripting.Dictionary")
  For Each c In b
    d1(c) = ""
  Next c
  Me.ComboBox1.List = d1.keys
End Sub

Private Sub ComboBox1_Change()
    Condition = Me.ComboBox1
    If Condition = "" Then Exit Sub
    ligne = 0
    nb = Application.CountIf(Sheets("BD").Range("TypeProduit"), Condition)
    ReDim Tbl(1 To nb)
    For i = LBound(a) To UBound(a)
      If b(i, 1) = Condition Then ligne = ligne + 1: Tbl(ligne) = a(i, 1)
    Next i
    Me.ComboBox2.List = Tbl
    Me.ComboBox2.SetFocus
    On Error Resume Next
    SendKeys "{f4}"
End Sub

Private Sub ComboBox2_Change()
  Set d1 = CreateObject("Scripting.Dictionary")
  tmp = UCase(Me.ComboBox2) & "*"
  For Each c In Tbl
     If UCase(c) Like tmp Then d1(c) = ""
  Next c
  Me.ComboBox2.List = d1.keys
  Me.ComboBox2.DropDown
End Sub

Private Sub CommandButton1_Click()
  ActiveCell = Me.ComboBox1
  ActiveCell.Offset(, 1) = Me.ComboBox2
  Unload Me
End Sub

http://boisgontierjacques.free.fr/fichiers/DonneesValidation/DVConditionSaisieIntuitiveForm.xls
http://boisgontierjacques.free.fr/fichiers/DonneesValidation/ListeIntuitive5.xls

JB
 

Pièces jointes

  • DVConditionSaisieIntuitive3_2010-2.xlsm
    58.7 KB · Affichages: 166
Dernière édition:

sebcane

XLDnaute Nouveau
Re : Liste déroulante intuitive (frappe semiautomatique)

On se rapproche, lol
Il faudrait juste que lorsque je tape la première lettre, que cela ne me mette pas le premier choix directement mais une proposition style google ou que cela affiche une liste de choix en dessous qui diminue au fur et a mesure des lettre entrée
Et aussi est ce que la box userform pourrait se fermer une fois que l'on clic sur ok ?
Je ne sais pas si je m'explique bien !!
Merci beaucoup de votre aide
 
Dernière édition:

sebcane

XLDnaute Nouveau
Re : Liste déroulante intuitive (frappe semiautomatique)

Je n'arrive pas à faire fonctionner la macro du userform il me renvoie une erreur à chaque fois que je mets un chiffre dans la première cellule de la combobox.
.
erreur d' exécution '9':
L'indice n'appartient pas à la sélection
et en cliquant sur débogage il se place sur
ReDim Tbl(1 To nb)
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix

Pièces jointes

  • DVConditionSaisieIntuitiveFormCascade2Choix.zip
    577.5 KB · Affichages: 65
  • Intuitif2Niveaux.gif
    Intuitif2Niveaux.gif
    27.9 KB · Affichages: 80
  • Intuitif2Niveaux.gif
    Intuitif2Niveaux.gif
    27.9 KB · Affichages: 86
Dernière édition:

sebcane

XLDnaute Nouveau
Re : Liste déroulante intuitive (frappe semiautomatique)

Oui c'est cela qu'il me faudrait sur le fichier que je t'ai joint mais j'ai quelque problème pour adapter le userform
Il me renvoie des erreur comme ci dessus
tient je te link mon userform
Code:
Dim Tbl(), a, b

Private Sub Label1_Click()

End Sub

Private Sub UserForm_Initialize()
  a = Range("SHIP_T").Value
  b = Range("REF_ZSD").Value
  Set d1 = CreateObject("Scripting.Dictionary")
  For Each c In b
    d1(c) = ""
  Next c
  Me.ComboBox2.List = d1.keys
End Sub

Private Sub ComboBox1_Change()
    Condition = Me.ComboBox1
    If Condition = "" Then Exit Sub
    ligne = 0
    nb = Application.CountIf(Sheets("ZSD").Range("SHIP_T"), Condition)
    ReDim Tbl(1 To nb)
    For i = LBound(a) To UBound(a)
      If b(i, 1) = Condition Then ligne = ligne + 1: Tbl(ligne) = a(i, 1)
    Next i
    Me.ComboBox2.List = Tbl
    Me.ComboBox2.SetFocus
    On Error Resume Next
    SendKeys "{f4}"
End Sub

Private Sub ComboBox2_Change()
  Set d1 = CreateObject("Scripting.Dictionary")
  tmp = UCase(Me.ComboBox2) & "*"
  For Each c In Tbl
     If UCase(c) Like tmp Then d1(c) = ""
  Next c
  Me.ComboBox2.List = d1.keys
  Me.ComboBox2.DropDown
End Sub

Private Sub CommandButton1_Click()
  ActiveCell = Me.ComboBox1
  ActiveCell.Offset(, 1) = Me.ComboBox2
  Unload Me
End Sub

Merci de ton aide precieuse
Tu es un as
 

sebcane

XLDnaute Nouveau
Re : Liste déroulante intuitive (frappe semiautomatique)

Merci énormément Boisgontier,
J'ai réussi à l'adapter à mon fichier et j'ai pu voir de où venaient mes erreurs !!
Juste une chose je j'aimerais changé, c'est que dans la premiere case de la combobox si je tape le chiffre "3" il me mets le premier nombre de la liste plutôt que de me laisser choisir.!!!
Pour la 2eme case aucun soucis ça roule à merveille
Est ce faisable ???
encore merci pour votre aide
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Liste déroulante intuitive (frappe semiautomatique)

Bonjour,

Je pense que la propriété MatchEntry du ComboBox n'est pas pas positionnée sur MatchEntryNone

Sur l'image ci dessous, on voit que c'est ok.

essai.gif

JB
 

Pièces jointes

  • essai.gif
    essai.gif
    18.8 KB · Affichages: 66
  • essai.gif
    essai.gif
    18.8 KB · Affichages: 67
Dernière édition:

sebcane

XLDnaute Nouveau
Re : Liste déroulante intuitive (frappe semiautomatique)

bonjour,
pourtant je les avait changé hier soir, comme sur votre message c'était indiqué.
Je viens de remettre celui de la combobox1 sur MatchEntryNone ce matin.
Cette option ne bougera plus dans le temps ?
Et bien mon problème est résolu si c'est le cas, merci pour votre patience.
Seb
 

sebcane

XLDnaute Nouveau
Re : Liste déroulante intuitive (frappe semiautomatique)

Re,
C'est bon tout fonctionne super bien,
Je me demandais si il serait possible de faire un message d'erreur en rouge si quelqu'un essaie de cliquer sur ok et que le formulaire n'est pas remplie ?
Le message en lui même je sais le rajouter avec le visible sur false mais au niveau du code je bloque sur l'emplacement ou le renseigner.
Une idée ?
Merci d'avance
 

Discussions similaires

Réponses
4
Affichages
2 K
Compte Supprimé 979
C

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 520
dernier inscrit
Azise