Saisie ComboBox intelligente

Bonjour tout le monde,

Je me permets de vous envoyer un message dans le but de créer une ComboBox intelligente (par exemple si je cherche Jean Marie et que je tape Marie ca me le trouve). J'avais trouvé un programme qui marchait cependant celui ni ne fonctionne plus. Donc si vous pouviez m'indiquer l'erreur ou potentiellement un autre programme si vous préférez je suis ouvert à tout. Je vous mets en pièce jointe un fichier "Test" avec ce que j'ai déjà fais.

L'objectif final de ce programme est de mettre ce UserForm dans les Recettes (constituant un onglet chacun), puis de pouvoir importer la liste des ingrédients présents dans l'onglet "Ingredients", en récupérant l'ensemble des informations.

Je vous remercie d'avance pour votre aide,

Cordialement,

Auguste

Bonjour Guguste ,

Sans m'être beaucoup penché sur le code, passez la déclaration de a() au niveau du module de Userform1 ?

Au lieu de :

Private Sub UserForm_Initialize()
Dim i As Integer, lastline As Integer, line As Integer, c As Range, mot As String, activeline As Integer, Vendor As String, Weight As Currency, Price As Currency, Shipping As Currency
Dim a()

   With ComboBox_Composant
      .MatchEntry = fmMatchEntryNone
      .MatchRequired = True
   End With
   lastline = Sheets("Composants").Cells(Rows.Count, 1).End(xlUp).Row
   a = Application.Transpose(Sheets("Composants").Range(Cells(2, 1), Cells(lastline, 1)))
   Me.ComboBox_Composant.List = a
End Sub

Essayez :

Dim a()

Private Sub UserForm_Initialize()
Dim i As Integer, lastline As Integer, line As Integer, c As Range, mot As String, activeline As Integer, Vendor As String, Weight As Currency, Price As Currency, Shipping As Currency

   With ComboBox_Composant
      .MatchEntry = fmMatchEntryNone
      .MatchRequired = True
   End With
   lastline = Sheets("Composants").Cells(Rows.Count, 1).End(xlUp).Row
   a = Application.Transpose(Sheets("Composants").Range(Cells(2, 1), Cells(lastline, 1)))
   Me.ComboBox_Composant.List = a
End Sub

Bonjour Auguste,

Définissez correctement vos variables et mettez les au bon endroit

A+

Edit : Salut mafraise

Malheureusement je viens d'essayer mais cela ne fonctionne pas...

Cela fonctionnait-t-il de votre coté?

Re,

Perso, quand je donne un fichier c'est qu'il fonctionne... il est donc inutile de poser la question

2023 08 28 18h46 41

Bonne soirée

Bonjour Bruno,

Malheureusement petit quiproquo , je répondais au message de mafraise je n'avais pas encore lu le votre.

En tout cas merci beaucoup votre fichier fonctionne bien et le programme est plus clair avec des variables qui ont plu de sens.

Mais du coup j'ai un dernier problème, l'objectif de ce UserForm est de pouvoir le lancer de l'onglet Rec1 (puis plus tard Rec2, Rec3...). Cependant cela ne fonctionne pas, auriez-vous une idèe?

Je m'excuse je suis un peu débutant en VBA, j'arrive à manipuler la base mais lorsaue les fonctions deviennent compliqués cela le devient aussi pour moi

Auguste

Re, bonjour BrunoM45 ,

Oui le code fonctionnait chez moi...

Ok après investigation, je pense que mon problème vient de la ligne :

TabProd = Application.Transpose(Sheets("Composants").Range(Cells(2, 1), Cells(LastLine, 1)))

Est-ce-que Application ne renverrait pas à la feuille ouverte? Et dans ce cas là il y a conflit d'intérêt?

Arf ok,

Mais mafraise est comme moi ceci dit avec un fichier c'est toujours plus simple

Sinon l'USF peut fonctionner à partir de n'importe qu'elle feuille, il faut juste dire à la Sub sur quel objet on travaille

Private Sub UserForm_Initialize()
  Dim i As Integer, LastLine As Long
  With ComboBox_Composant
    .MatchEntry = fmMatchEntryNone
    .MatchRequired = True
  End With
  With Sheets("Composants")
    LastLine = .Cells(Rows.Count, 1).End(xlUp).Row
    TabProd = Application.Transpose(.Range(.Cells(2, 1), .Cells(LastLine, 1)))
  End With
  Me.ComboBox_Composant.List = TabProd
End Sub

Et forcément cela fonctionne

A+

Parfait j'essaye cela même si je suis déjà convaincu que cela va marcher!

En tout cas merci beaucoup pour votre aide à tous les deux je suis toujours agréablement surpris par la rapidité et la bienveillance de tous! Surtout qu'il est pas toujours facile de rester patient avec des débutants

PS : Oui autant pour moi mafraise je pense que j'ai du essayer de lancer l'USF depuis la feuille "Rec1" ce qui m'a mené à une erreur

Rechercher des sujets similaires à "saisie combobox intelligente"