Microsoft 365 Récupérer Données d'un Tableau structuré

eric72

XLDnaute Accro
Bonjour,
J'ai un fichier avec un Userform, lorsque j'ouvre celui-ci, je fais une "Recherche intuitive" exemple "Pain", et j'aimerai qu'en sélectionnant dans la listbox "Pain au chocolat" que TEXTBOX et COMBOBOX (le prix, la famille etc... ) se remplissent mais je ne trouve pas comment, en sachant que la base est un tableau structuré, quelqu'un a-t-il la solution a ce problème
Merci beaucoup pour votre dévouement.
Eric
 

Pièces jointes

  • test.xlsm
    95.5 KB · Affichages: 10

Dranreb

XLDnaute Barbatruc
Bonsoir
Votre projet VBA est protégé par un mot de passe.
Cette ressource permet de régler pratiquement tous les problèmes du genre que vous évoquez.
Ses modules de service peuvent aussi être implantés à même le projet du classeur utilisateur.
 

eric72

XLDnaute Accro
Bonsoir
Votre projet VBA est protégé par un mot de passe.
Cette ressource permet de régler pratiquement tous les problèmes du genre que vous évoquez.
Ses modules de service peuvent aussi être implantés à même le projet du classeur utilisateur.
Ah oui en effet, désolé!!!
Merci
 

Pièces jointes

  • test (1).xlsm
    95.9 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
Alors. Pour bénéficier du ComboBoxLiées, toutes les données d'identification où de recherche d'une ligne doivent être impérativement saisies dans des ComboBox. Par exemple une CBxFamille et une CBxDésign. Pour cette dernière, un recherche intuitive sera possible.
 

Dranreb

XLDnaute Barbatruc
Sur le modèle de ça, par exemple, avec deux ComboBox, une pour le prénom, l'autre pour le nom.
On y saisit essentiellement ce qu'on veux. Les choix d'existant dans les listes dynamiques assumées sont plutôt rares.
Remarque: Les ComboBox à listes fixes peuvent aussi être prises en charge par le ControlsAssociés. Seules celles qui ont un rapport avec la recherche doivent l'être par le ComboBoxLiées.
 

Pièces jointes

  • CLsCAsContacts.xlsm
    195.6 KB · Affichages: 9
Dernière édition:

Dranreb

XLDnaute Barbatruc
C'est fait automatiquement pas la méthode ValeursDepuis du ControlsAssociés.
Et pour les ComboBox non renseignées prises en charge par le ComboBoxLiées, celui ci les garnit toutes dès que celles renseignées n'aboutissent plus qu'à une seule ligne existante.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Et bien moi c'est dans la ComboBox qu'il faudra taper une partie du texte, qui ne devra pas forcément être au début (car ce serait inutile pour ça seulement) …
Le texte souhaité pourra être sélectionné dans sa liste, qui sera affichée d'office.
La procédure devrait être celle ci :
VB:
Private Sub CLs_SujFltChg(ByVal CBM As ComboBoxMmbr, ByVal Filtré As Boolean)
   If Not CBM.CBx Is Me.ActiveControl Then Exit Sub
   If Not CBM.CBx Is Me.CBxDésign Then Exit Sub
   If CBM.CBx.MatchFound Or CBM.CBx.Text = "" Then Exit Sub
   Dim S ' Sujet temporaire pour recherche intuitive
   S = SujCBxLike(CBM.SujetFlt, "*" & CBM.CBx.Text & "*")
   If IsEmpty(S) Then Exit Sub
   CBM.SujetFlt = S ' Affectation du sujet temporaire.
   CBM.CBx.DropDown ' Affichage de la liste
   End Sub
 
Dernière édition:

eric72

XLDnaute Accro
Bonjour
Merci beaucoup pour cette solution mais ça ne correspond pas à mon souhait, en fait je souhaitais que même si on tape chocolat dans la textbox tous les produits avec chocolat dans la désignation apparaissent et qu'après la sélection de l'un d'entre eux les autres champs se remplissent.
Mais merci beaucoup pour le temps consacré.
Bonne journée
Eric
 

Dranreb

XLDnaute Barbatruc
Si on tapera "chocolat" dans la ComboBox ça y proposera la liste des désignations contenant ce mot.
Vous savez, une ComboBox c'est fait avant tout pour y saisir des choses, pas pour se précipiter aveuglément sur le bouton flèche pour afficher la liste. Mais là elle sera affichée d'office.
 

fanch55

XLDnaute Barbatruc
Pour dépanner :
modifier l'Userform
VB:
Private Sub LstProduit_Click()
With LstProduit
         NomPatisserie = .List(.ListIndex, 0)
             PrixAchat = LookupV(.Column(0), [BDProduit], 2)
             CBFamille = LookupV(.Column(0), [BDProduit], 3)
          CoeffFamille = LookupV(.Column(0), [BDProduit], 4)
    CBTvaAcheteRevendu = LookupV(.Column(0), [BDProduit], 5)
  End With
End Sub
Function LookupV(What, Target, Idx)
On Error Resume Next
    LookupV = WorksheetFunction.VLookup(What, Target, Idx)
    If Err Then LookupV = "": Err.Clear
End Function
 

Discussions similaires

Réponses
5
Affichages
269
Réponses
36
Affichages
1 K

Statistiques des forums

Discussions
312 111
Messages
2 085 392
Membres
102 882
dernier inscrit
Sultan94