Choisir dRedéfinir le contenu d'une ListBox

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonjour Le Forum,
Je vous soumets la codification suivante. Elle m'empêche l'ouverture de mon UserForm contenant une liste d'éléments.
Je n'arrive pas à trouver la codification efficace.
Je cherche à corriger cela depuis deux jours, en vain.

OBJECTIF :
Je veux extraire d'une liste ceux qui commencent par le contenu d'une cellule Fs.[A13] et reconstituer ainsi une Liste limitée permettant de réaliser un choix plus direct et lisible.

Ma codification :
1 -Voici les codes :

[highlight=vba]
Private Sub UserForm_Initialize()
Dim Lg, n
'Avec la feuille Fs..
With Fs
'Me.ListBox1.Clear '(nécessaire ?)
'On va parcourir la liste de la colonne K jusqu'au bout en feuille Par
Lg = Par.[K250].End(xlUp).Row
'Pour comparer le début des élément avec ce qui est mis en cellule A13
For n = 1 To Lg
With Par.Cells(n, 11)
If Left(Par.Cells(n, 11), Len(Fs.[A13])) = Fs.[A13] Then
'Si identique l'élément enteir de la liste Col K est ajouté dans ListBox1
Me.ListBox1.list.AddItem
End If
End With
Next n
'Fin de la recherche : que doit-on ajouter pour avoir la listBox limitée par rapport à col K
'la consultation de l'Userform ne devrait donner que la liste sélectionnée
'Me.ListBox1.list = Me.ListBox1.list.Value 'je crois que ceci n'est pas bon
End With
End Sub
[/highlight]

2 - D'autre part j'avais vu sur internet qu'il existe une codification plus rapide que la boucle FOR... NEXT que l'on trouve ici. J'ai oublié de le noter dans mes "tablettes Excel Programmation"... je serais preneur du "truc".

Merci à l'avance pour l'aide que vous pourriez m'apporter.
Cordialement à vous,
Webperegrino
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Le Forum,
Bonjour Bernard-Dranreb,
Merci pour cette réponse rapide.
Je vais essayer de placer la chose dans l'application.

Je viens de découvrir que l'utilisation de List comme ci-dessous est aussi plus rapide que AddItem :

[highlight=vba] Private Sub USerform_Initialize()
Set f= Sheets("Feuil1")
Bd=F.Range("K2K" & F.[K65000].End(xlUp).Row).Value
ville="LORIENT"
n=0
For i=1 To UBound(Bd)
If Bd(1,11)=ville Thenj=j+1
TblDest(j)=Bd(i)
Next i
Me.ListBox1.List=TblDest
End Sub [/highlight]
Cordialement,
Webperegrino
 

Discussions similaires

Réponses
3
Affichages
533