Problème de contrôle d'ambiguïté sur matchentry

corloste

XLDnaute Nouveau
Bonsoir à toutes et tous,

Voilà, pour poser le cadre, j'ai créé sur Excel 2003 (windows) un classeur dont la première feuille contient un tableau dans lequel j'ai inséré des combobox et des commandbuttons (active X). Ces contrôles de formulaire permettent de rediriger vers certaines autres feuilles. Pour cela j'ai utilisé pour les combobox :

Private Sub ComboBox3_Click()

Dim maFeuil As String
On Error Resume Next
maFeuil = ComboBox3.Value
Sheets(maFeuil).Select

End Sub

Private Sub ComboBox3_DropButtonClick()

Dim F As Worksheet

ComboBox3.Clear
ComboBox3.AddItem "le nom de l'onglet"

End sub


Cela fonctionne très bien. Comme j'ai utilisé 15 combobox et 13 commandbutton pour 110 feuilles la recherche d'un élément peut rapidement être fastidieuse, donc j'ai voulu créer un équivalent de moteur de recherche en installant un autre combobox pour lequel j'ai supprimé le "dropbutton" et dont la saisie d'un des item enclenche l' évènement "click" grâce au réglage dans les propriétés du matchentry sur : fmmatchentrycomplete.
Pour que ce combobox ait constamment en référence l'ensemble de toutes les feuilles de mon classeur (surtout si plus tard je dois en rajouter) j'ai utilisé les codes :

1) Dans la première feuille :

Private Sub combobox16_click()

Sheets(ComboBox16.ListIndex + 1).Activate

End Sub


2) Dans le "thisworkbook" :

Private Sub Workbook_Open()

For i = 1 To ThisWorkbook.Sheets.Count
Sheets(1).ComboBox16.AddItem Sheets(i).Name
Next i

End Sub


Bon jusque là ça va, mais voilà le problème :

D'après l'aide d'Excel lorsqu'on rentre une première lettre dans le combobox, matchentry recherche les solutions dans onglets de feuille (pour mon cas) et si il n'y a pas d'ambiguité dans la correspondance il est censé déclencher l'évènement "click" or cela fonctionne pour certaines feuilles mais pas pour d'autres.

Exemple : Pour certains onglets qui ont pour nom : "recherche", "renvoi" quand je saisi le "r" il détecte bien une ambiguïté donc pas d'évènement "click", puis je saisi le "e", il continu pareil car ambiguïté, puis soit le "c" ou le "n" et là il détecte bien qu'il n'y a pas d'autre possibilité et déclenche l'évènement "click" et me renvoi bien sur la feuille en question. Là ça fonctionne bien.

Par contre, pour certains onglets qui se nomment : "SVP", "Secteur", "service" dès que je saisi le "s" il envoi de suite sur la feuille SVP alors qu'il devrait détecter une ambiguïté avec les autres onglets qui commencent par la même lettre. Il faut alors revenir sur la 1ère feuille, continuer à saisir la 2ème lettre "e" et là encore il "click" sur "secteur" sans prendre en compte qu'il y a encore une possibilité et ainsi de suite. J'ai essayé de tout mettre en minuscule mais le problème reste.

Alors peut être ais-je fait un mauvais choix de code ou un paramétrage des propriétés qui m'échappe ou autre ???

En tous cas j'avoue j'ai glané et arrangé les codes d'après mes recherches sur la toile, je ne suis pas un professionnel de l'informatique et là je sèche ce qui est dommage car cette adaptation d'un moteur de recherche reste à la fois simple pour moi afin de le mettre en place (sauf mon problème) et assez intuitif et facile d'utilisation pour les futurs utilisateur, je ne voulais pas passer par un userform et code plus lourd pour faire un moteur de recherche (pour lequel il faut en plus saisir le mot exact et en entier).

Si quelqu'un ou quelqu'une pouvait m'apporter ses lanternes cela m'enlèverai une épine du pied, en tous cas merci d'avance (surtout si vous avez eu le courage de tout lire).
 

corloste

XLDnaute Nouveau
Re : Problème de contrôle d'ambiguïté sur matchentry

Bonsoir,

Merci d'avoir répondu, l'userform qui est intéressant pour sa fonctionnalité a visiblement la même réaction que ce que j'ai décrit précédemment. Tu peux tester puisque là il y a un exemple concret.

Tu as donc plusieurs feuilles dont 3 se nomment : "titi", "tata" et "toto". Le matchentry est bien sur : fmmatchentrycomplete.

Tu veux faire une recherche par saisie dans le combobox, tu cherches "toto" (par exemple).

Tu saisis donc la lettre "t" et là il te met directement sur la feuille "titi", alors qu'il devrait détecter que lorsque tu tape "t" trois choix sont encore possibles et il ne devrait afficher la feuille qu'a partir du moment ou il a détecté qu'il n'y a pas d'autre possibilité (la fameuse notion d'ambiguïté telle que décrite dans l'aide de VBA pour les propriétés de matchentry) en l’occurrence quand tu tapes la deuxième lettre dans ce cas. Car effectivement si tu tapes "o" en deuxième il n'existe alors qu'une seule possibilité : "toto"

Une autre possibilité qui pourrait convenir c'est d'avoir une combobox qui intègre une sorte de listbox. Quand tu cliques sur le drop de la combo apparait l'espace réservé aux réponses surmonté d'une textbox dans laquelle tu commences à saisir ce que tu cherches et en dessous s'affiche les possibilités de réponse faisant référence aux noms de feuilles du classeur, il ne reste plus qu' a cliquer sur son choix pour avoir la feuille qui apparait ?

Ou une variante sur Excel avec d'un côté un textbox et de l'autre une listbox. On saisi dans la textbox et toutes les réponses possibles qui correspondent (entre la saisie et les noms des feuilles) s'affichent dans la listbox. Il ne reste plus qu'a cliquer sur celle qu'on veut pour avoir la redirection sur la bonne feuille.

Je pense à ces solutions car le problème que j'ai soulevé, n'a peut être pas de solution avec le matchentry ?
 
Dernière édition:

Statistiques des forums

Discussions
312 142
Messages
2 085 756
Membres
102 962
dernier inscrit
vil