XL 2019 Tri et Traitement plus rapide

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Titof06

XLDnaute Occasionnel
Bonjour,

Je reviens vers vous, car je dois trier des informations (secteurs) par rapport à un numéro de fournisseur (fourn.).

Mon fichier pèse plus de 52 Mo et encore, et j'en ai enlevé la moitié.
Il y a 574 000 lignes, et il va grossir progressivement.
Voici le lien WeTransfer : https://we.tl/t-4kxiFgP7Lv
valable jusqu'au 13/12/2025

Voilà mon souci, qui n'en est pas un réel, puisque cela fonctionne, mais je souhaiterais diminuer le temps de traitement.

Pour chaque numéro de fournisseur, je dois extraire les "secteurs" de l'onglet "Entrees", enlever les doublons et les trier.

Dans l'onglet "Data", on a :
- en colonne A : Tous les fournisseurs, triés par ordre croissant
- en colonne C : Chaque fournisseur, mis un après l'autre
- en colonne D : Les Secteurs du Fournisseur de la Colonne C, trié par ordre croissant

On peut voir qu'un fournisseur peut avoir un ou plusieurs secteurs.

Le traitement actuel fonctionne, mais pour plus de 400 fournisseurs, c'est très long.

Si quelqu'un a une idée pour réduire le temps, je l'en remercie par avance.

POUR LE TEST dans la ligne "For l = 2 to ", j'ai mis "10" pour limiter le traitement; au lieu de "nbr_lig_data_A" qui est pour tous les fournisseurs.

Je vous remercie pour le temps que vous allez m'accorder et vous souhaite une agréable journée,

Titof06
 
Solution
Bonjour

En effet, votre code doit être très long. Lorsque vous bouclez sur centaines de milliers de lignes dans Excel, ça prends du temps.

Pour gagner du temps, il faut faire la boucle dans un Tableau qui lui est stocké en mémoire vive. J'ai optimisé un peu plus en créant un dictionnaire pour stocker vos paires fournisseur / secteur.

VB:
Sub Extract()

Dim wb As Workbook
Dim ws As Worksheet, wsC As Worksheet
Dim lo As ListObject
Dim tb()
Dim dict As Object
Dim i As Long
Dim cleFournisseurSecteur As String
Dim colFournisseur As Long, colSecteur As Long
Dim ligneDestination As Long


Set wb = ThisWorkbook
Set wsC = wb.Worksheets("Data")
Set ws = wb.Worksheets("Entrees")
Set lo = ws.ListObjects("TabEntree")


tb = lo.DataBodyRange...
bonjours,
personnellement je vois pas pourquoi 4 colonnes alors que tu en a besoin que de 2?

N° Fourn.N° FournSecteur
Bonjour dysorthographie,

Avec votre fichier cela fonctionne très bien.
J'ai essayé de l'adapter au mien, mais j'ai un message d'erreur qui me vient.

Pourriez-vous encore m'aider, svp ?

Je vous remercie pour le temps que vous m'accordez et vous souhaite une agréable fin de journée,

Titof06
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Macro VBA - Excel
Réponses
12
Affichages
727
Réponses
6
Affichages
731
Réponses
2
Affichages
546
Retour