Bonjour,
je viens de finaliser une programmation assez longue d'une gestion de base de données professionnelle.
Les boucles For Next que j'utilise sont gourmandes en temps.
En effet je dois comparer un fichier de données référentielles avec une extraction sous forme Excel d'un logiciel de suivi de matériel.
J'ai 450 références à comparer à quelque 9000 sur l'extraction. Une référence peut être trouvée plusieurs fois sur l'extraction et la comparaison est élargie à plusieurs cellule de la ligne.
Cela fait donc plus de 4 million de comparaisons.
N'utilisant jusqu'à présent que ce type de boucles imbriquées, j'aimerais savoir s'il existe une solution plus rapide.
Ci dessous le code de cette boucle.
Merci de votre attention.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    nombredeligneRéférences = WKST_Références.Range("A65536").End(xlUp).Row
    nombredelignefeuil1 = WKST_Feuil1.Range("A65536").End(xlUp).Row
        For lignefeuil1 = nombredelignefeuil1 To 2 Step -1
            For ligneRéférences = nombredeligneRéférences To 2 Step -1
                If WKST_Feuil1.Cells(lignefeuil1, 6).Value <> "" And WKST_Feuil1.Cells(lignefeuil1, 9).Value <> "" And WKST_Feuil1.Cells(lignefeuil1, 6).Value = WKST_Références.Cells(ligneRéférences, 5).Value And WKST_Feuil1.Cells(lignefeuil1, 7).Value = WKST_Références.Cells(ligneRéférences, 1).Value Then
                    WKST_Feuil1.Cells(lignefeuil1, 2).Value = WKST_Références.Cells(ligneRéférences, 3).Value & " n°" & WKST_Feuil1.Cells(lignefeuil1, 9).Value
                    WKST_Feuil1.Cells(lignefeuil1, 4).Value = WKST_Références.Cells(ligneRéférences, 6).Value
                    WKST_Feuil1.Cells(lignefeuil1, 5).Value = WKST_Références.Cells(ligneRéférences, 4).Value & " n°" & WKST_Feuil1.Cells(lignefeuil1, 9).Value
                    Exit For
                End If
                If WKST_Feuil1.Cells(lignefeuil1, 6).Value = WKST_Références.Cells(ligneRéférences, 5).Value And WKST_Feuil1.Cells(lignefeuil1, 7).Value = WKST_Références.Cells(ligneRéférences, 1).Value Then
                    WKST_Feuil1.Cells(lignefeuil1, 2).Value = WKST_Références.Cells(ligneRéférences, 3).Value
                    WKST_Feuil1.Cells(lignefeuil1, 4).Value = WKST_Références.Cells(ligneRéférences, 6).Value
                    WKST_Feuil1.Cells(lignefeuil1, 5).Value = WKST_Références.Cells(ligneRéférences, 4).Value
                    Exit For
                End If
            Next ligneRéférences
        Next lignefeuil1