VBA EXCEL: création d'une listbox

Aragon10

XLDnaute Occasionnel
Bonjour,

j'utilise une feuille excel qui se remplie grâce à un userform. cette feuille contient plusieurs colonnes:
colonne A: Date (textbox1)
colonne B: NOM (combobox1)
colonne C: Montant (textbox2)
colonne D: Taux (textbox3)

Je voudrais lorsque je tape dans le combobox1 un nom existant déjà sur la feuille excel il m'affiche dans la listbox un petit tableau (résumé) sur les conditions déjà accordé à cette relation. (une relation peut avoir plusieurs offres anciennes).

Merci pour votre aide
 

Dranreb

XLDnaute Barbatruc
Re : VBA EXCEL: création d'une listbox

Bonsoir.
j'utilise une feuille excel qui se remplie grâce à un userform
Oui mais le problème c'est que nous on l'a pas !
Vous auriez intérêt à utiliser la fonction SujetCBx de mon module MSujetCBx: Elle vous fabriquerait :
un Variant contenant un Array à deux éléments :
' Élément 0: Un tableau base 0 de valeurs de clés destiné en principe à la propriété List d'une ComboBox.
' Élément 1: Un tableau base 0 de Variant dont chaque élément est une liste (Base To n) As Long de
' numéros des lignes portant toutes la valeur de clé correspondante.
Vous pourriez donc obtenir directement à partir de ComboBox1.ListIndex la liste des numéros de lignes dans la plage source relatives à ce NOM. Ce ne serait plus rien de les empiler dans un second tableau à destination de votre ListBox.
 

Aragon10

XLDnaute Occasionnel
Re : VBA EXCEL: création d'une listbox

re bonjour,

veuillez trouver ci-dessous un petit exemple :

Document Cjoint

je voudrais créer une listbox qui affiche par exemple les dernières consultations de patrick sous forme d'un petit tableau lorsque je tape son nom dans le combobox.

Merci d'avance.
 

Dranreb

XLDnaute Barbatruc
Re : VBA EXCEL: création d'une listbox

Joignez le donc plutôt sur ce site, c'est le bazar pour l'ouvrir depuis CiJoint. il me l'ouvre avec le bloc notes.
Bouton Aller en mode avancé, puis Gérer les pièces jointes. Et ça m'arrangerait si vous pouviez me le joindre au format xls pour ma version d'Excel. C'est d'ailleurs peur être CiJoint qui ne sait pas qu'il faut l'ouvrir avec le convertisseur de xlsm en xls.
 
Dernière édition:

Aragon10

XLDnaute Occasionnel
Re : VBA EXCEL: création d'une listbox

Bonsoir,

La taille maximale que je pourrais mettre ici c'est 293 ko alors que mon fichier est de 790 ko c'est pour ça que j'ai utilisé le ci-joint. y'a t-il un moyen de contourner ce problème ?
 

Dranreb

XLDnaute Barbatruc
Re : VBA EXCEL: création d'une listbox

En le zippant ou en mettant peu de données.
Mais une dizaine de noms bidons (impératif: vous n'avez pas le droit de mettre des personnes réelles) et les 3 autres colonnes, ça devrait passer sans problème
 

Aragon10

XLDnaute Occasionnel
Re : VBA EXCEL: création d'une listbox

Re bonjour Dranreb,

Merci beaucoup c'est ce que je cherchais exactement ;-)

y'a t-il un moyen pour ajouter la bordure des lignes et des colonnes dans la listbox ainsi que les titres (Ligne 2) ? et qu'est ce que je devrais modifier pour que ma listbox prendre en considération les données jusqu'à la colonne "R" ?

Je vous remercie énormément cher Dranreb :)
 

Dranreb

XLDnaute Barbatruc
Re : VBA EXCEL: création d'une listbox

Hélas on ne peut mettre de bordures dans une ListBox. Le gros dormeur sur lit de lauriers n'a jamais daigné ouvrir un œil pour envisager de s'y coller. Les ListView le permettent, mais je vous les déconseille: elle entrainent de gros problèmes de portabilité du fait qu'elles ne font pas partie de la bibliothèque MSForms.
Pour les titres mettez des Labels au dessus.
La propriété ColumnCount de la ListBox doit être augmentée pour prendre plus de 6 colonnes.
Vous pouvez aussi ajuster les largeurs séparées par des ";" dans la ColumnWidths.
 

Aragon10

XLDnaute Occasionnel
Re : VBA EXCEL: création d'une listbox

Concernant la largeur des colonnes ca marche très bien. par contre J'ai modifié la propriété columncount de 5 à 18 mais il n'y'a pas d'ajout de nouvelles colonnes .

Merci;-)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : VBA EXCEL: création d'une listbox

Il convient naturellement de redimensionner aussi ce que vous y mettez dedans: la TLBx, et y faire les affectations nécessaires.
S'il y en a beaucoup et qu'elles se suivent toutes vous pouvez le faire avec une boucle:
VB:
For C = 1 To 16: TLBx(Ls, C) = TDon(Le, C + 2): Next C
Déclarer C As Long ou bien C& ce qui revient au même.
 

Aragon10

XLDnaute Occasionnel
Re : VBA EXCEL: création d'une listbox

Bonsoir Dranreb,

Franchement il n’y a pas mieux que ça. Merci infiniment :)

Juste une dernière question si ça ne vous dérange pas:

Je voudrais activer la recherche intuitive dans le combobox . j'ai un ancien code mais j'ai pas pu l'adapter à ton code. ci dessous mon ancien code:

Code:
Private Sub UserForm_Initialize()

Set f = Sheets("CLIENT") ' selection Feuille'
  choix1 = Application.Transpose(f.Range("D2:D" & f.[D65000].End(xlUp).Row).Value) ' selection des clients (liste  choix1) dans le combobox à partir de la 1ere colonne''
  Me.ComboBox1.List = SansDoublons(choix1) 'liste des clients sans doublons'

End Sub

Code:
Function SansDoublons(A())
   Set d = CreateObject("Scripting.Dictionary")
   For Each C In A:  d(C) = "": Next C
   B = d.keys
   SansDoublons = Application.Transpose(B)
End Function

Code:
Private Sub ComboBox1_Change()

 If Me.ComboBox1.ListIndex = -1 And IsError(Application.Match(Me.ComboBox1, choix1, 0)) Then
   ReDim tblChoix1(1 To UBound(choix1))
   tmp = "*" & UCase(Me.ComboBox1) & "*"
   ligne = 0
   For Each C In choix1
     If UCase(C) Like tmp Then ligne = ligne + 1: tblChoix1(ligne) = C
   Next C
   If ligne > 0 Then
     ReDim Preserve tblChoix1(1 To ligne)
     Me.ComboBox1.List = SansDoublons(tblChoix1)
     Me.ComboBox1.DropDown
   End If
  Else

  End If
End Sub

Merci pour votre aide précieuse .
 
Dernière édition:

Discussions similaires

Réponses
18
Affichages
611
Réponses
5
Affichages
344
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 145
Messages
2 085 762
Membres
102 966
dernier inscrit
InitialPP