Pier3d
XLDnaute Nouveau
Bonjour,
Je gère une base de données d'abonnés à une association.
Comme je n'ai pas trouvé moyen de faire faire à Excel un tri convenable en français, j'ai dû y aller de mes propres procédures. J'aurais peut-être dû venir ici en parler avant mais ça fait plusieurs années de ça et je me suis débrouillé comme j'ai pu.
Alors voici : Je fais une copie de ma colonne de noms à la limite droite de mon tableau. Cette plage est nommée « LesNoms ». Dans cette plage, j'enlève les espaces, les tirets, les accents et je mets le tout en minuscule. De cette manière je peux obtenir un tri utilisable en triant sur cette plage.
Pour forcer en minuscule, je fais simplement ceci :
Mon léger problème c'est que plus ma liste s'allonge et plus cette boucle prend du temps. Maintenant, à près de 900 noms, ça prend un bon 2 secondes. Oui, je sais, ce n'est pas grave, surtout que cette partie du programme ne s'exécute qu'à l'ouverture de mon application de gestion de la base.
Mais quand même...
Quand j'ai découvert votre forum et le foisonnement de génies qui le fréquentent, je me suis dit, pourquoi pas ?
Alors je tente ma chance. J'ai aussi d'autres questions qui viendront plus tard.
J'ai essayé aussi avec une boucle For Each mais c'est quelques dixièmes de secondes plus long. Donc, rien à gagner.
Merci d'avance,
Pierre Cloutier
---
Je gère une base de données d'abonnés à une association.
Comme je n'ai pas trouvé moyen de faire faire à Excel un tri convenable en français, j'ai dû y aller de mes propres procédures. J'aurais peut-être dû venir ici en parler avant mais ça fait plusieurs années de ça et je me suis débrouillé comme j'ai pu.
Alors voici : Je fais une copie de ma colonne de noms à la limite droite de mon tableau. Cette plage est nommée « LesNoms ». Dans cette plage, j'enlève les espaces, les tirets, les accents et je mets le tout en minuscule. De cette manière je peux obtenir un tri utilisable en triant sur cette plage.
Pour forcer en minuscule, je fais simplement ceci :
Code:
For i = 1 To LesNomS.Count
LesNomS(i) = LCase(LesNomS(i))
Next i
Mon léger problème c'est que plus ma liste s'allonge et plus cette boucle prend du temps. Maintenant, à près de 900 noms, ça prend un bon 2 secondes. Oui, je sais, ce n'est pas grave, surtout que cette partie du programme ne s'exécute qu'à l'ouverture de mon application de gestion de la base.
Mais quand même...
Quand j'ai découvert votre forum et le foisonnement de génies qui le fréquentent, je me suis dit, pourquoi pas ?
Alors je tente ma chance. J'ai aussi d'autres questions qui viendront plus tard.
J'ai essayé aussi avec une boucle For Each mais c'est quelques dixièmes de secondes plus long. Donc, rien à gagner.
Merci d'avance,
Pierre Cloutier
---