Validation - lenteur !

A

andré

Guest
Salut à vous,

J'ai besoin d'un sérieux coup de main.

J'ai établi une liste de validation en cascade avec une petite nouveauté (pour moi du moins et probablement aussi pour la plupart d'entre vous - lol) :
Elle sélectionne toutes les cellules répondant aux premiers caractères tapés dans la cellule de choix, peu importe le nombre de caractères tapés.
Ti avait fait quelque chose du genre, en son temps, mais par macro.

Cela fonctionne très bien pour des bases de données jusque 1 000 références, à partir de 3 000 cela se met à ralentir, mais comme j'en ai 17 000, j'ai le temps de prendre mon café (et XL n'en fait pas - relol).

Quelqu'un aurai-il une solution, ou une piste ?
Quelques explications complémentaires dans la pièce jointe.

Comme ce document doit être employé par des distributeurs, je ne peux pas me tourner vers ACCESS, qui dans ce cas précis serait peut-être plus performant (heureux déjà qu'ils ont un PC !).

Merci d'avance.
Ândré.
 

Pièces jointes

  • JM_2004_V3.zip
    42.9 KB · Affichages: 16
D

Duriz

Guest
Salut André, et bien sûr le forum

Je ne peut télécharger ton fichier....'suis au travail.

Cependant une question : Tes validations se font par macro ?

Si c'est Oui => tu peut inserrer dans ton code en première ligne:

Application.screenUpdating=false

et en dernière ligne:

Application.screenUpdating=True

( ça fige l'écran et du coup Xl peut travaille + vite sur le reste...)

Si c'est Non => Je passe !

En espérant t'avoir aidé ...

Bon courrage et à+

Duriz
 
A

andré

Guest
Salut Duriz,

Merci de m'avoir répondu,

Mais non, c'est une liste de validation par le menu Données
Ne m'y connaissant que fort peu en macro (lire : pas du tout) je me posais la question de savoir si faire tourner une boucle en VBA n'est pas plus rapîde.

Mais j'ai le présentiment qu'il y a moyen de remplacer les 17 000 formules par quelques formules matricielles.

Attendons que Monique passe par là, je suis persuadé qu'elle me proposera une de ces petites solutions qui me fera pâlir de plaisir (et rougir de honte de ne pas l'avoir trouvée moi-même - lol).

Ândré.
 
M

Monique

Guest
Bonjour,

Tu n'as plus de colonnes intermédiaires en feuille de données.
Pour la liste de validation, le choix entre 2 méthodes :
ou bien tu peux revenir sur ton choix,
ou bien tu effaces tout et tu recommences.
Pas très rapide, mais fichier moins gros.
Donner un nom aux formules de la liste de validation peut peut-être accélérer le recalcul.
 

Pièces jointes

  • CascadeAndre.zip
    23 KB · Affichages: 60
A

andré

Guest
Merci beaucoup Monique,

J'essaie toutes tes solutions sur le "gros" fichier, je chronomètre et te tiens au courant.

Je suis impardonnable d'avoir oublié de nommer mes formules !

Bonne soirée, et avec beaucoup de regrets de ma part de ne pas pouvoir te rendre la pareille !

Ândré.
 
M

Michel_M

Guest
Salut André,

Premier jet pour ton pb (testé avec 5300 articles): au premier appel, tu as le temps de boire une gorgée ou 2 de ton café
après, tu pourras à peine saisir l'anse...

Ton job a été coupé en 2 classeurs: home pour le travail et base pour les données

Nécessite OBLIGATOIREMENT que "Microsoft activeX data object 2.x library" soit cochée
dans outils-référence de l'éditeur visual basic (alt F11)

Je reprendrais ma bidouille demain matin pour te rendre des macros propres et essayer d'améliorer: SQL est un langage aussi rigoureux comme MS DOS: ca rajeunit mais...

Michel
 

Pièces jointes

  • speed_andre.zip
    34.8 KB · Affichages: 23
A

andré

Guest
Merci Michel_M,

Je n'ai pas encore ouvert, mais je vais essayer de mettre cela en place !
Je te tiens bien sûr au courant, dans les heures qui suivent, pour le moment j'ai d'autres chats à fouetter !

Ândré.
 
A

andré

Guest
Resalut (déjà !),

Je n'ai pas pu m'empêcher de jeter un coup d'oeil (la curiosité est un vilain défaut).

J'ai un bug à la ligne suivante :
Set requete = source.Execute("SELECT * FROM piece WHERE left([num_ piece]," & taille & ") ='" & abreg & "';")

Peux-tu me dire ce qu'il y a lieu de faire ?
Merci d'avance.

Ândré.
 
M

Michel_M

Guest
Bonjour,

Je viens d'essayer speedy_2: ca marche

Ca a été réalisé sous XL2000 mais jamais testé sous 2003...

As tu bien coché la librairie "Microsoft activeX data object 2.x library" dans outils-références de l'éditeur Visual basic (accès par Alt+F11) ?

peut-être aussi vide le contenu de B9 en appuyant sur [supp] car ce matin avant de partir de chez moi j'avais oublié.
Ad'taleur

Michel (at work)
 
A

andré

Guest
Salut Mchel_M,

Ce matin j'avais essayé sur XL2000, maintenant je viens d'essayer XL2003.
Toujours un bug à la même ligne.

J'ai à deux fois vérifié l'activeX : il est coché d'origine (les 5 premiers onglets sont cochés).

Aurais-tu une idée de mon erreur ?

Ândré.
 
A

andré

Guest
Salut Monique et Michel,

Je vous dois à tous deux une fière chandelle !

Michel, je ne vois pas ce que je pourrais te renvoyer puisque c'est ton fichier qui pose problème.
Comme tu me l'as signalé, tu n'avais pas effacé ton dernier test, je l'ai donc effacé et en validant quelques lettres introduites en cellule B9 j'ai un message d'erreur VBA.
J'ai également essayé d'introduire le n° complet d'une pièce, même problème à la ligne reprise sous un de mes posts précédents.

Monique, là tu as fais vraiment très, très fort.
Même avec mes 17 000 lignes je n'ai pas eu le temps de chronométrer - estimation : moins d'une seconde !
Faire une liste de validation filtrée sans avoir préalablement établi cette liste dans une colonne supplémentaire, c'est du jamais vu !
Cette procédure, nouvelle pour moi, a droit à une page d'honneur sur XLD.
Je vais décortiquer ta formule pour bien la comprendre.
Je crois même que je vais l'encadrer et la pendre au-dessus de mon lit (lol).

En fin de compte, c'est la variante en cellule B12 que j'ai retenue, plus facile d'emploi pour des non-initiés.

Merci encore à vous deux et bonne soirée.
Ândré.
 
M

Michel_M

Guest
Bonsoir Monique et André,

Et pourtant ca marche mon truc !

Enfin, ce n'est pas grave car la solution de Monique est meilleure;je viens de comprendre- tout de moins je crois!- et je suis baba d'admiration. A mettre d'urgence dans une compilation sur les listes (clin d'oeil à qui de droit...)

Ce qui montre qu'Excel est surtout une affaire de formules, VBA étant à consommer avec modération !

Amicalement

Michel
 

Statistiques des forums

Discussions
312 922
Messages
2 093 644
Membres
105 775
dernier inscrit
assen