Amélioration de ma liste déroulante avec saisie semi-automatique
Bonjour à tous,
Pour mon travail, j'ai crée un système de devis automatique qui une fois remplis, enregistre et convertit la feuille calc en pdf et l'envoie par mail à une adresse attribué par défaut.
Ce fichier est lié à une base de données contenant les informations des produits mis en vente par ma boite ( un peu plus de 700 produits).
J'ai réussi presque toutes les fonctionnalités que je voulais sauf une et la voici :
Sur la feuille de devis je voudrais ajouter dans une cellule une liste déroulante avec une saisie semi automatique c'est-à-dire que, quand je rentre quelques caractère (comme par exemple javel) il ne m'affiche que les produits portant le mot "JAVEL" dedans.
J'ai en partie réussi cette liste déroulante. Quand je rentre par exemple Verre il m'affiche bel bien tous les article qui commence par verre et c'est à partir de la que viens me problème.
En effet la liste déroulante automatique que j'ai faite ne prend en compte que le premier mot qui est dans le nom de l'article.
Pour donner un exemple concret j'ai un article qui se nomme "CRUCHONS DE JAVEL", dans ma liste Si je tape "cru" il va me trouver "CRUCHONS DE JAVEL" mais si je tape "javel" il ne me trouve aucun produit.
Pour ma liste déroulante j'ai utiliser la méthode suivante :
- J'ai fait une première formule nommé "f_desi" pour ma base de données : =DECALER(p_produit;0;0;NBVAL(l_produit);1)
*p_produit est le premier produit de tout la liste
*l_produit contient la colonne contenant la totalité des produits
- Pour ma liste avec validation de données j'ai mis la source suivante : =SI(J26<>"";DECALER(f_desi;EQUIV(J26&"*";f_desi;0)-1;;NB.SI(f_desi;J26&"*");1);f_desi)
J’espère avoir été suffisamment explicite et aimerais savoir quelqu'un aurait une astuce pour palier à mon problème car pour le moment je suis vraiment bloqué.
Je vous remercie d'avance pour temps que vous allez m'accorder
PS: Je ne peux pas mettre à disposition le fichier xls car les tarifs de ma boites sont dessus et je sais pas su je peux les dévoilé comme ça #Sorry
Bonsoir,
En effet la liste déroulante automatique que j'ai faite ne prend en compte que le premier mot qui est dans le nom de l'article
Pour ma liste avec validation de données j'ai mis la source suivante : =SI(J26<>"";DECALER(f_desi;EQUIV(J26&"*";f_desi;0)-1;;NB.SI(f_desi;J26&"*");1);f_desi)
As-tu essayé de rajouter un préfixe de recherche "*" avant les J26 de ta formule ?
elle deviendrait : SI(J26<>"";DECALER(f_desi;EQUIV("*"&J26&"*";f_desi;0)-1;;NB.SI(f_desi;"*"&J26&"*");1);f_desi)
en tapant "jav", tu aurais tous les items contenant ce texte
Ce principe fonctionne aussi sans la formule "f_desi", en rapport direct avec l'ensemble d'inventaire et 1 cellule de recherche.
Bonne suite
Cordialement
Je te remercie pour ta réponse clair et rapide ton conseil à effectivement réglé mon problème
Au finale, il ne prend pas tous les produits de ma base de données, il va récupérer un seul article sur trois.
J'ai pu me mettre d'accord avec ma boite pour publié le fichier (j'ai juste mis une ancienne bdd qui change juste niveau des tarifs
De plus, dans la section Référence(en dessous de recherche), j'ai tenté d'afficher la référence du produit en lien avec le produit sélectionné à l'aide d'une rechercheV j'ai une erreur du à la type de valeur (si une âme charitable pourrais me dépanner sur ce coup là aussi
Encore merci d'avance pour votre implication sur ce petit projet
Bonjour,
Le principe ne fonctionne correctement que...
si les items concernés par le texte saisi sont SUCCESSIFS dans la Base de données, sans espace entre eux.
Pour toute autre situation, il convient de changer le principe
soit par macro, soit par formule et liste intermédiaire sur le concept suivant :
Bonne suite
Cordialement
Merci je vais essayer cette méthode
hello
on m avait filé pas mal de solution vraiment sympa il y a quelques mois si ca peut t aider:
Merci beaucoup je regarde tout ça
Bonjour,
Un exemple de saisie intuitive type Google
http://boisgontierjacques.free.fr/fichiers/DonneesValidation/DVSaisieIntuitiveComboBox.xls
Boisgontier
Bonjour,
Un exemple de saisie intuitive type Google
http://boisgontierjacques.free.fr/fichiers/DonneesValidation/DVSaisieIntuitiveComboBox.xls
Boisgontier
Merçi, j'avais déjà vu ce fichier mais malheureusement, dans la section de recherche il ne prend en compte que les premiers caractères du premier mot inscrit dans la base de donnée
Par contre la solution que ma proposer Axion me correspond bel est bien, j'ai juste un peu de mal à l'adapter à mon fichier
Bonjour,
Le principe ne fonctionne correctement que...
si les items concernés par le texte saisi sont SUCCESSIFS dans la Base de données, sans espace entre eux.
Pour toute autre situation, il convient de changer le principe
soit par macro, soit par formule et liste intermédiaire sur le concept suivant :
Bonne suite
Cordialement
Bonsoir,,
>il ne prend en compte que les premiers caractères du premier mot inscrit dans la base de donnée
Il suffit de remplacer tmp = UCase(Me.ComboBox1) & "*" par tmp = "*"& UCase(Me.ComboBox1) & "*"
On peut avoir une recherche intuitive multi-mots:
Dim Choix1()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([B6:B25], Target) Is Nothing And Target.Count = 1 Then
Set f = Sheets("bd")
Set Rng = f.Range("A2:A" & f.[A65000].End(xlUp).Row)
Choix1 = Application.Transpose(Rng)
Me.ComboBox1.List = Choix1
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
Else
Me.ComboBox1.Visible = False
End If
End Sub
Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" Then
mots = Split(Trim(Me.ComboBox1), " ")
Tbl = Choix1
For i = LBound(mots) To UBound(mots)
Tbl = Filter(Tbl, mots(i), True, vbTextCompare)
Next i
Me.ComboBox1.List = Tbl
Me.ComboBox1.DropDown
End If
End Sub
Private Sub ComboBox1_click()
ActiveCell.Value = Me.ComboBox1
End Sub
Boisgontier