Améliorer une macro

thomashty

XLDnaute Occasionnel
Bonjour à tous, je souhaiterais rendre plus rapide une macro, je m'explique :

Il y a une "page d'accueil", aller dans "ajouter un document", MDP : "toto".

Ensuite vous avez une feuille "liste de documents" qui s’ouvre, qui est en réalité une base de données,

ET vous avez une feuille "zone de recherche" qui vient chercher dans la base de donnée à travers la colonne "description".

Mon problème est : il n'y a que 40 documents dans cette BDD et le système de recherche a déjà une latence... auriez vous une alternative pour le rendre plus rapide ?

Merci de votre aide

Thomas
 

Pièces jointes

  • Outil à modifier.xlsm
    143.5 KB · Affichages: 79

thebenoit59

XLDnaute Accro
Re : Améliorer une macro

A corriger ainsi :

Code:
'On colorie le fond
With Sheets("Liste de documents")
    If UBound(tIndex) = 1 Then
        .Cells(tIndex(1) + 2, "F").Interior.ColorIndex = 24
        Else:
            For i = LBound(tIndex) To UBound(tIndex)
                .Cells(tIndex(i, 1) + 2, "F").Interior.ColorIndex = 24
            Next i
    End If
End With

'On va exporter les valeurs
With Sheets("Zone de recherche")
    .ListBox1.List = tListBox
    .[a16].Resize(UBound(tIndex), 7).Value = tListe
    If UBound(tIndex) = 1 Then
        .Hyperlinks.Add Anchor:=.Cells(15, "G"), Address:=tListe(1)
        Else:
            For i = LBound(tListe) To UBound(tListe)
                .Hyperlinks.Add Anchor:=.Cells(i + 15, "G"), Address:=tListe(i, 7)
            Next i
    End If
End With
 

thomashty

XLDnaute Occasionnel
Re : Améliorer une macro

Et du coup oui, l'intérêt de ne pas avoir à taper tous les caractères dans la barre de recherche permet d'avoir plus de flexibilité dans la recherche de l'utilisateur, il n'est pas obligé de taper précisément les caractères dans l'ordre pour arriver à des résultats :)

S'il tape "guide pont" il faut qu'il puisse tomber sur "Guide sur l'assainissement des ponts routes"
 

thomashty

XLDnaute Occasionnel
Re : Améliorer une macro

J'ai augmenté la quantité de document présents dans la BDD, pouvez vous me dire si vous aussi vous avez le message "mémoire insuffisante" lorsque vous tapez dans la barre de recherche ?
 

Pièces jointes

  • thomashty - Améliorer une macro.xlsm
    159.2 KB · Affichages: 25

Dranreb

XLDnaute Barbatruc
Re : Améliorer une macro

le système de recherche ne pas pas trop ramer ? Avec les ComboBoxLiées j'entends bien
Non. À moins d'environ 40000 lignes rien ne se voit en terme de temps, même pour une dizaine de ComBoBox.
Il n'y a pas de recherche en fait: les listes de numéros de lignes sont partout conservées dans des ComboBoxMembre et instantanément retrouvées d'après les différents ListIndex des ComboBox en charge. C'est transparent pour le programmeur d'application, qui n'a qu'a fournir son cahier de charge à l'objet, dans l'UserForm_Initialize.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Améliorer une macro

Si c'est à moi que vous vous adressez, je veux bien équiper votre classeur, si vous l'orientez dans cette voie.
Mettez aux ComboBox des noms mnémoniques commençant par CBx suivi d'une majuscule.
Mettez des boutons BtnÉchap (Annuler/Effacer/Quitter), BtnValider (Modifier/Ajouter), BtnSupprimer (Supprimer)
Éventuellement une ListBox s'il risque d'être nécessaire de finaliser le choix par clic dedans.

Vous pouvez aussi un peu réfléchir à la programmation de tout ça en déclarant une variable globale Private TLgn() As Long, en supposant qu'elle contienne comme par magie (une magie dont vous ne vous occupez pas du tout) la liste des numéros de lignes dans la plage correspondant à l'ensemble des choix effectués dans les ComboBox. (Je dis bien dans la plage, non dans la feuille, donc 1 pour la 1ère ligne de la plage).
Éventuellement aussi une Private LCou As Long pour le numéro de ligne courant, VLgn() pour un tableau 2D d'une seule ligne des valeurs qu'elle contient ou devra contenir.
 
Dernière édition:

thomashty

XLDnaute Occasionnel
Re : Améliorer une macro

Alors voilà le fichier, j'ai tout renommé, il n'y a normalement pas de bug.

Toutes les données de la BDD de A3 à G3 se reportent dans la feuille "zone de recherche" de A16 à G16.

Il faut que la recherche s'effectue dans la colonne description, si vous avez besoin d'autres infos je reste disponible :)
 

Pièces jointes

  • thomashty - Dranreb.xlsm
    166.5 KB · Affichages: 18

thomashty

XLDnaute Occasionnel
Re : Améliorer une macro

Benoît,

Je vous embête, j'espère une dernière fois, je n'arrive pas à expliquer quand, mais parfois quand je tape dans la barre de recherche j'ai ce bug qui apparaît, sauriez vous pourquoi ?

Merci encore pour votre aide

Thomas
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    4.4 KB · Affichages: 19
  • Capture1.PNG
    Capture1.PNG
    6.2 KB · Affichages: 20

Dranreb

XLDnaute Barbatruc
Re : Améliorer une macro

Bon je le joins déjà comme il est pour que vous puissiez voir la tournure que ça prend.
Toutes la partie ComboBox et donc recherche est faite (il fallait une CBxDescription aussi).
Il reste à verser les lignes voulues dans la feuille Zone de recherche si vous êtes sûr de ne pas préférer les verser dans une ListBox, ce qui permettrait ensuite d'en sélectionner une…
 

Pièces jointes

  • CBxLiéesThomashty.xlsm
    253.7 KB · Affichages: 27

Discussions similaires

Réponses
15
Affichages
496
Réponses
6
Affichages
333

Statistiques des forums

Discussions
312 273
Messages
2 086 701
Membres
103 374
dernier inscrit
damned42