Filtrage avec combobox et affichage des données d'un tableau

Gaspachi

XLDnaute Nouveau
Bonjour,

Je suis actuellement en train d'essayer de créer un gestionnaire de contact sur excel avec un userform et des combobox/listbox/textbox.
Je me heurt cependant a un problème.

En effet, je cherche a filtrer à l'aide d'une combobox l'affichage des fournisseurs ou bien des clients (fichier bidon pour le développement de mon fichier ).
Et lorsque j'ai choisi client ou fournisseur j'affiche mes 9 premières colonnes dans une listbox (avec l’entête du tableau de la feuille DONNEES).

J'en suis arrivé à pouvoir afficher client et fournisseur dans la première colonne et ça filtre bien l'un ou l'autre mais je n'arrive pas a afficher l’entête ou encore le reste du tableau (dans le fichier en pièce joint je n'ai pas les lignes de codes pour afficher le reste du tableau car je n'ai aucune idée de comment faire ).

J’espère avoir été assez clair :)

Ci-joint vous pourrez trouver le fichier

Merci d'avance de l'aide que vous pourrez m'apporter

Gaspachi

PS : Je veux garder la listbox et ne pas prendre de listview
 

Pièces jointes

  • Contacts.xlsm
    79 KB · Affichages: 43

xUpsilon

XLDnaute Accro
Bonjour,

J'ai du mal à comprendre quelles colonnes tu veux afficher, car dans ton document les seules colonnes que je peux voir seraient celles liées à "Entreprise, Fonction, Nom, Prénom, etc ...", sauf que je vois pas pourquoi tu voudrais afficher ces informations dans une listbox.

Sinon de ce que j'ai compris du reste je te conseille qqchose du genre avec des Textbox (comme ce que tu as fait en haut) et tu demandes à ces textbox de se remplir en fonction des valeurs de la ligne sélectionné.

En y réfléchissant bien, peut etre que tu veux plutot afficher les x premières lignes de ton tableau dans ta listbox, auquel cas il te suffira d'un Listbox1.RowSource = "PlagedeCellules". Et à ce moment là tu mets donc dans ton code de ta listbox que dès que la sélection dans la listbox change, les informations dans tes textbox au dessus se remplissent suivant les informations stockées sur l'entreprise sélectionnée.

Pour relier tout ça tu as juste besoin de renvoyer la ligne dans le tableur associée au client sélectionné, et en fonction de cette ligne afficher dans la Textbox du Nom Textbox1.Text = Range("DONNEES!D" & Ligne) par exemple.

Eclaire moi sur ce que tu souhaites et dis moi si je pars dans la bonne direction.

Bonne continuation
 

Gaspachi

XLDnaute Nouveau
Bonjour,

Déjà, merci de votre réponse :)

En fait, lorsque je sélectionne client dans la combobox d'en haut, je veut que cela affiche dans la listbox les 9 premières colonnes informations de tous les clients de mon tableau de données et inversement si c'est fournisseur dans la combobox

Les textbox en haut seront également des filtres ( par exemple si je met un t dans la textbox prénom et que client est sélectionné dans la combobox, cela m'affichera les clients ayant un t dans leur prénom)

J'espère etre plus clair :/

Cordialement
Gaspachi
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonjour Gaspachi
Bonjour le fil ,le Forum
une approche(perfectible) pas tout réglé lol
le code du Combobox pourrait être
VB:
Option Explicit
Option Compare Text
'Permet de filtrer si l'on veut afficher client ou fournisseur
Private Sub ComboBox1_Change()
Application.ScreenUpdating = False
Dim DerniereLigne As Long
Dim f As Worksheet
Dim Derniecol As Byte
Dim Ligne As Long
Set f = Sheets("DONNEES")
     Derniecol = f.Range("A" & f.Columns.Count).End(xlToLeft).Column
DerniereLigne = f.Range("A" & f.Rows.Count).End(xlUp).Row
With UserForm1
    If .ComboBox1 = "" Then Exit Sub
With .ListBox_resultats
     .Clear     
For Ligne = 2 To DerniereLigne
            If f.Cells(Ligne, 1) Like ComboBox1 Then
               .AddItem f.Cells(Ligne, 2)
               .List(.ListCount - 1, 1) = f.Cells(Ligne, 3)
               .List(.ListCount - 1, 2) = f.Cells(Ligne, 4)
               .List(.ListCount - 1, 3) = f.Cells(Ligne, 5)
               .List(.ListCount - 1, 4) = f.Cells(Ligne, 6)
               .List(.ListCount - 1, 5) = f.Cells(Ligne, 7)
               .List(.ListCount - 1, 6) = f.Cells(Ligne, 8)
               .List(.ListCount - 1, 7) = f.Cells(Ligne, 9)
               .List(.ListCount - 1, 8) = f.Cells(Ligne, 10)
            End If
        Next
    End With
  End With
End Sub
Edit modifié
jean marie
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,


Avec un pgm générique

Sans titre.png


Boisgontier
 

Pièces jointes

  • Copie de FormRechercheModifAjoutSup3Option.xls
    138 KB · Affichages: 102
Dernière édition:

Discussions similaires

Réponses
27
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette