Longue liste en minuscule

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 :

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


---
 

Dranreb

XLDnaute Barbatruc
Re : Longue liste en minuscule

Bonjour.

Information. Vous pouvez mettre en tête d'un module qui effectue un classement par VBA :
VB:
Option Compare  Text
De cette manière minuscules et majuscules ne sont plus distinguées.
Mais je ne sais évidemment pas si ça répond à votre problème.

Mais si votre "LesNoms" est une plage c'est normal que ce soit long. Il ne faut jamais travailler directement avec les cellules. If faut tout charger en une seule instruction dans un tableau VBA, le modifier, puis le décharger en une seule instruction vers la plage résultante.

Edit: Bonsoir Papou-Net.
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Longue liste en minuscule

Bonsoir Pierre,

As-tu essayé en utilisant le blocage de rafraîchissement d'écran?

Code:
Application.ScreenUpdating = False
For i = 1 To lesnoms.Count
        lesnoms(i) = LCase(lesnoms(i))
Next i
Application.ScreenUpdating = True
Cordialement.

Edit: oups, pas rafraîchi avant d'envoyer. Bonsoir bernarD
 

Modeste

XLDnaute Barbatruc
Re : Longue liste en minuscule

Bonjour,

Pas plus confiant dans la piste évoquée que mes deux prédécesseurs (que je salue :)) ...

Si c'est la même liste (qui évolue avec le temps) on peut peut-être aussi faire la conversion en minuscules (et plus, si affinités) au moment où le nom est encodé ... plus besoin donc d'exécuter toute la boucle avant chaque tri :confused:
 

Pier3d

XLDnaute Nouveau
Re : Longue liste en minuscule

Bonjour,

Merci pour vos réponses. Celle de Dranreb m'ouvre un vaste de champ de réflexion. J'ai appris le Vba principalement en faisant F1. Dans l'aide d'Excel, on travaille toujours sur les cellules.

Oui, je connais la commande Application.ScreenUpdating = False et je m'en sers souvent. Vous croyez que le travail en tableau Vba serait plus rapide ?

Me conseillez-vous de mettre tout mon tableau Excel (1324 lignes X 40 colonnes) dans un tableau Vba ou bien simplement la partie ou le travail est long comme la mise en minuscule puis de replacer le résultat dans ma colonne Excel ?

Je vais faire quelques tests et je reviens bientôt.

Merci

Pierre

--
 

Discussions similaires

Réponses
15
Affichages
483
Réponses
1
Affichages
119

Statistiques des forums

Discussions
312 195
Messages
2 086 078
Membres
103 112
dernier inscrit
cuq-laet