Accélération userform (boucle)

biker

XLDnaute Occasionnel
Bonjour;

J'essaye de créer un UserForm avec une recherche de pièces détachées. Mais après avoir écris le code (avec de l'aide) de l'Userform ; je me retrouve avec des recherches très lente.

J'aurai voulu savoir s'il était possible d'accélérer le mode de recherche.

Merci par avance de vos réponses
 

Pièces jointes

  • GStock_v.1essai.xls
    325 KB · Affichages: 111
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Accélération userform (boucle)

Il se trouve que j'ai un classeur de macro complémentaire en chantier qui simplifierait beaucoup la programmation dans votre userform. (aux mises au point près que vous voudriez bien m'aider à faire par vos tests). Mais le dispositif qui vous intéresserait est fait pour des choix en ComboBox et non en TextBox.

Mais toute la programmation du userform tiendrait en à peine un peu plus que les instructions par lesquelles vous remplissez la ListBox. Ce remplissage ne serait programmé qu'en un seul endroit. Ce serait d'ailleurs une procédure évènement qui vous passerait en paramètre, dans une table, la liste des numéros de lignes du tableau source à mettre dans la ListBox. Et pour 1000 à 2000 lignes je pense que l'instauration de l'évènement par mon module de classe en fonction des ComboBox renseignés lorsque l'un d'eux change serait quasi instantanée. Il ne vous resterait qu'à vous arranger pour les puiser dans un tableau de variant représentant l'ensemble de la feuille plutôt qu'a y chercher au coup par coup chaque cellule de seulement ceux qu'il vous faut, et vous conserveriez cette rapidité de votre coté. Je précise que vous n'auriez pas à gérer les ComboBox. Vous demanderiez simplement dans l'Userform_Initialize l'ajout de chacun d'eux accompagné de la colonne du tableau qui y correspond, et la classe se chargerait de tout ensuite.
À +
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Accélération userform (boucle)

Bonjour.
Le voici dans son état actuel.
Une fois logé à sa résidence de service, en ajouter la référence "OutIdx" à votre projet VBA.
Il s'agirait d'utiliser la classe ComboboxLiés
Dans l'userform mettre en tête:
VB:
Dim WithEvents MesCombos As OutIdx.ComboBoxLiés
Private Sub Userform_Initialize()
Dim ZoneTableau as Range
Set ZoneTableau = etc..End(xlUp).Row).EntireRow
Set MesCombos = New OutIdx.ComboBoxLiés
MesCombos.Add Me.ComboBox1, ZoneTableau.Columns(1)  
MesCombos.Add Me.ComboBox2, ZoneTableau.Columns(2)
Etc.
Il ne resterait plus qu'à implanter les procédures évènements MesCombos_Change pour effacer la ListBox et MesCombos_Résultat pour la remplir
À +
 

Pièces jointes

  • OutIdx.xls
    427.5 KB · Affichages: 60
  • OutIdx.xls
    427.5 KB · Affichages: 72
  • OutIdx.xls
    427.5 KB · Affichages: 68

biker

XLDnaute Occasionnel
Re : Accélération userform (boucle)

Bonjour.
Le voici dans son état actuel.
Une fois logé à sa résidence de service, en ajouter la référence "OutIdx" à votre projet VBA.
Il s'agirait d'utiliser la classe ComboboxLiés
Dans l'userform mettre en tête:
VB:
Dim WithEvents MesCombos As OutIdx.ComboBoxLiés
Private Sub Userform_Initialize()
Dim ZoneTableau as Range
Set ZoneTableau = etc..End(xlUp).Row).EntireRow
Set MesCombos = New OutIdx.ComboBoxLiés
MesCombos.Add Me.ComboBox1, ZoneTableau.Columns(1)  
MesCombos.Add Me.ComboBox2, ZoneTableau.Columns(2)
Etc.
Il ne resterait plus qu'à implanter les procédures évènements MesCombos_Change pour effacer la ListBox et MesCombos_Résultat pour la remplir
À +



Je te remercie.
Je regarde ce soir et je te tiens au courant .
 

biker

XLDnaute Occasionnel
Re : Accélération userform (boucle)

Bonjour biker et Dranreb :) ,

Voici une version qui devrait être un peu plus rapide en attendant la macro de Dranreb (qui nous a mis l'eau à la bouche :p )

J'ai bien aimer t'as procedure; mais ca ne marche pas parfaitement. Exemple : Tape : 0 dans moteur de recherche Familles et il reste encore en premiere des famille qui commence par 1.

Mais merci quand mm ; si tu as une soluce pour resoudre se prob; je suis preneur
 

Discussions similaires

Statistiques des forums

Discussions
312 789
Messages
2 092 124
Membres
105 224
dernier inscrit
frederic.bonnet@alstomgro