XL 2010 Saisie prédictive avancée-navigation au clavier

Docdav

XLDnaute Junior
Bonjour, dans un combobox, quand on entre du texte, il propose le premier mot de la liste allouée au combobox.

J'aimerais qu'il soit cherché dans tout le mot et non juste au début ?
exemple :
j'ai dans la liste Réa-Coma, Réa-ACR non réanimé, Réa-ACR réanimé.

Je voudrais pouvoir taper ACR et qui me propose ces choix (là ça bloque, je ne peux y accéder que en tapant réa puis en défilant). J'aimerais aussi savoir si il peut ignorer les accents ?

Merci à ceux qui me lisent et auront une idée.
David.
 

Lone-wolf

XLDnaute Barbatruc
Bonjour David et bienvenue sur XLD :)

Sans fichier, voici un exemple

VB:
With Feuil. Range("a1:a65536")
Set Cel = .Find(Combobox1, , , xlPart)
If Not cel Is Nothing
Premaddress = cel.Address
Do
Ici ton code
Set cel = .FindNext(cel)
Loop While Not cel And cel.Address <> Premaddress
End If
End With

Explications: xlPart recherche le mot qui ressemble à "ACR", xlWhole recher le mot exacte Réa-ACR réanimé par exemple.
 

Docdav

XLDnaute Junior
c'est la case diagnostic en bas a gauche du formulaire (j'ai mis pour le lancer aller sur GO ! car il est diffuser à des moins-sachants que moi (et vu mon niveau faible...)), et la liste qui sert en dans la feuille "codage" /onglet "Données" /Colonne "Diagnostic"
 

Docdav

XLDnaute Junior

Docdav

XLDnaute Junior
Bonjour, je viens de regarder le fichier, exactement ça, un grand merci, je n'avais pas vu ce fichier-ci parmi la multitude d'exemples que vous donnez (quelle base !).
J'ai pu modifier la liste pour vérifier.
Il faut maintenant que je l'inclue dans mon userform. Autre étape.

Encore un grand merci. Je mets en résolu dès que j'ai réussi à l'inclure.
 

Docdav

XLDnaute Junior
J'ai presque réussi je crois.
J'ai enlevé le 1er module qui définissait la comboBox. Faut que je vois a quoi servent les autres modules.
J'ai créé une combobox appelée combobox1, ne lui ai pas donné de liste (row source)

et mis ce code :
Code:
Private Sub ComboBox1_Change()
 Dim a()
 a = Application.Transpose(Sheets("Donnees").Range("AF7:AF202")) 'la liste
 Me.ComboBox1.Font.Size = 10
 Me.ComboBox1.List = a
If Me.ComboBox1 <> "" And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
  Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
  Me.ComboBox1.DropDown
 End If
  ActiveCell.Value = Me.ComboBox1
End Sub

J'ai du définir la taille de police en vba car sinon j'avais une taille de police à 2-3...illisible.
Par contre je n'ai pas la liste qui s'affiche quand on clique sur la fleche (j'ai du oublier une propriété...je cherche)

Un grand pas de fait, merci.
 

Docdav

XLDnaute Junior
Bonjour Mr Gontier.
J'ai entièrement modifié mon fichier, passé par des modules pour être plus clair.
Je n'arrive pas à inclure votre code.

Ce que j'ai compris :
-le 1er private sub gère le clic dans une cellule pour créer la combobox. je l'ai enlevé en partie puisque j'aiune combobox créée.
le 2eme la frappe dans le combobox, le 3eme le double clic et le 4eme la touche vers le bas pour ouvrir le combobox.

J'ai essayé de le mettre en module ou dans le userform, j'ai bien la liste qui s'ouvre quand je vais dans la box, avec mes référence, mais il ne reconnait pas la saisie, qu'ai-je oublié ?

J'ai repris qq paramètres, que je mets dans le "sub initialyse" pour définir la liste et la taille de police (sinon c'est illisible), pas de saisie prédictive.
je ne comprends pas.

Pouvez-vous m'aider ?
 

Docdav

XLDnaute Junior
je me réponds avant même d'avoir envoyé le fichier. il y a vait un active.cell.value que j'ai enlevé puisque sans intéret, et j'avais une erreur sur le declechement avec un b_combobox1.change au lien de combobox1.change (d'où vient ce b...mystère...)
 

Docdav

XLDnaute Junior
Bonjour, j'ai utilisé la saisie prédictive pour un formulaire, mis en module.
J'aimerais savoir si il est possible de corriger un truc.

Quand j'ai entré un début de mot, la liste s'ouvre avec les propositions, parfait, ce que je cherchait.
J'aimerais maintenant pouvoir naviguer dans ces propositions au clavier, sans avoir à cliquer sur la souris.
Que la liste devienne donc le tri organisé par la fonction, car là, une fois le tri organisé, si je fais flèche vers le bas, l'item est sélectionné, mais la liste redevient la liste initiale (avec tous les items).

Je mets le code et le fichier pour plus de simplicité à comprendre mon discours.

UN grand merci à Mr Gontier pour votre site, super enrichissant.

Définition de la combobox "Diag" dans le userform
VB:
'----------dim box diag-----------------
Dim A()
A = Application.Transpose(Sheets("Donnees").Range("AF5:AF202"))
    Feuille_Saisie.CmbDiag.List = A
    Feuille_Saisie.CmbDiag.Font.Size = 10

Appel par un call pred_change du module

VB:
Sub pred_change()
Dim A()
A = Application.Transpose(Sheets("Donnees").Range("AF5:AF202"))
    Feuille_Saisie.CmbDiag.List = A
    Feuille_Saisie.CmbDiag.Font.Size = 10
    If Feuille_Saisie.CmbDiag <> "" And IsError(Application.Match(Feuille_Saisie.CmbDiag, A, 0)) Then
    Feuille_Saisie.CmbDiag.List = Filter(A, Feuille_Saisie.CmbDiag.Text, True, vbTextCompare)
    Feuille_Saisie.CmbDiag.DropDown
End If
End Sub
 

Pièces jointes

  • Formulaire-PC-V6-pour-modif.xlsm
    150.2 KB · Affichages: 61