j'ai créé un post la semaine dernière en pensant pouvoir résoudre mon problème, mais il me reste deux petits problème pour cloturer mon projet sur un userform.
Le premier c'est que je n'arrive pas a faire apparaitre dans mes textbox la valeur de la list box (a partir de la colonne 17 un message d'erreur apparait)
sur cette ligne : Me.Controls("TextBox" & Y).Value = ListBox1.List(ListBox1.ListIndex, Y - 1)
le deuxième point c'est filtrer dans une listbox des valeurs a partir de selection combobox (c'est a dire en fonction du choix combobox 1, la liste déroulante combobox 2 me donnera les informations filtrées.)
Je vous joins le fichier au cas où je n'ai pas été clair.
Merci pour le temps que vous prendrez pour m'aider.
Cette erreur vient du fait que la listbox est chargée avec les erreurs de formule (ex: #N/A) contenu dans tes données.
Plusieurs solutions s'offrent à toi.
1 - Changer ta procédure de chargement des données pour tester toutes les erreurs et ne pas les charger dans la listbox.
2 - Dans l'évènement click de la liste box:
Soit:
Code:
For Y = 1 To 31
If Not IsError(ListBox1.List(ListBox1.ListIndex, Y - 1)) Then
Me.Controls("TextBox" & Y).Text = ListBox1.List(ListBox1.ListIndex, Y - 1)
End If
Next Y
qui permettra de ne pas afficher l'erreur dans le textbox
Soit:
Code:
For Y = 1 To 31
Me.Controls("TextBox" & Y).Text = cstr(ListBox1.List(ListBox1.ListIndex, Y - 1))
Next Y
Qui affichera "Erreur 2042" pour une erreur #N/A de formule.
Pour le deuxième point tu as plein de solutions dans le forum. Notament en bas de cette page dans la section "Discussions similaires".
Je te remercie pour ta réponse. En effet, ce sont bien les #N/A qui provoquaient l'erreur.
J'ai décidé de les remplacer comme ca j'ai un textbox vide lorsqu'il n'y a rien dans la ligne.
Sinon ton code marche tres bien aussi je l'ai testé! je regarde la littérature que tu m'as mis en lien!
Je viens de consulter le lien que tu as mis a disposition et je n'ai pas trouvé le lien avec mon problème de combobox. (d'ailleurs il manquait un bout de code dans le dossier que j'ai envoyé je l'ai remis en pièce jointe.)
J'ai fais des recherche préalable sur les forums et les exemples que j'ai trouvé permettent de charger les listbox en fonction des filtres.
Dans mon cas, la listbox est deja chargée et je souhaiterais appliquer les filtres (combobox) afin de trouver la valeur souhaitée pour y appliquer les opérations (ajout, suppression, modification.)
je ne vois pas de quels lien tu veux parler (peut-être ceux en dessous de ma signature?)
J' ai répondu à ta demande. Quant à la suivante, je ne vois rien dans ton code qui puissent m'indiquer que tu as essayer quelque chose pour les filtres.
Essai tout d'abord de faire une macro avec l'enregistreur de macro en filtrant ta liste. Vois ce que tu peux en tirer. Recherche sur le forum et reviens avec ce que tu auras fais.
Je me permet de te renvoyer mon fichier avec mes combobox filtrés (j'ai oublié de retirer le code en commentaire dans l'envoi précédent) du coup le code va fonctionner a l'ouverture.
dans chaque combobox, j'ai la valeur filtrée de chaque colonne afin de pouvoir faire une selection dans la listbox. Le souci c'est que j'ai un message d'erreur.
Je suis déjà allé voir dans les discussions similaires qui m'ont aidé a avancer précédemment donc oui, du coup je suis allé voir les liens sous ta signature (mauvaise compréhension de ma part! désolé.)
j'ai rajouté le code suivant apres les declarations de variables :
Dim plage As Object
Set plage = Sheets("nouveau")
cependant, si on déclare l'objet j'obtiens toujours une erreur a la ligne suivante :
If plage(L, 27) = Me.ComboBox1.Text Then
"propriété ou méthode non gérée par cet objet"
je ne sais pas si les procédures inicbo et inilistbox me permette de filtrer la listbox, il s'agit de procédures que j'ai récupéré sur un exemple du forum et je n'ai toujours pas trouvé de ressources pertinentes pour filtrer cette listbox.
J'ai modifié le code de mes combobox afin d'effectuer mes filtres. J'ai pris le problème à l'envers, au lieu de charger entièrement mon feuillet dans la listbox, j'applique d'abord les filtres pour que le temps de traitement sois moins long (j'ai entre 20000 et 40000 lignes dans mon fichier original)
Cependant, quand je fais une selection dans les combobox ils ne filtre que les données dans le feuillet, or je souhaiterais faire apparaitre ces lignes dans ma listbox.
j'ai tenté d'utiliser SpecialCells(xlCellTypeVisible) dans ma procédure initialize sans succès.
Aurais tu une piste de reflexion ou bien un exemple qui puisse me permettre d'avancer?