Bonjour,

Je me suis mise récement à Python.
Le volume de donnée à traiter sur Excel étant trop important pour le faire en VBA, je me suis dis que Python allait être mon ami ..
Mais peut être que pas tout à fait ... ou alors (et c'est très fortement probable), je m'égarre quelque part .

Donc le but de mon petit soft est de merger 2 fichiers (3-4 colonnes chacun mais plus de 30000 lignes avec un de 15000 lignes)
Et la je me retrouve avec une lenteur impressionnante ...
Je sais que sous mac, excel n'est pas terrible niveau rapidité, mais je pensais qu'avec du python ce serait mieux ... et non

Donc je vous soumet mon code ci-dessous (très basique et un peu bourin je vous l'accorde) si jamais vous avez des idées ?
Peut être qu'il faut mieux utiliser d'autres types de fichier que du xlsx? du csv, txt ?

Si vous avez des idées, je suis preneuse
Merci d'avance pour votre aide

Thais

Pour info coté config :
MacBook Pro (15-inch, Late 2016) 2,6 GHz Intel Core i7
Microsoft Excel pour Mac version 15.39 (171010)

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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
import xlwings as xw
wb = xw.Book("toto.xlsx")
sht = wb.sheets["aaa"]
LastLine = 3
print ("Start")
 
while (sht.cells(LastLine,8).value != None):
    LastLine += 1
 
i = 3
print (LastLine)
 
while (sht.cells(i,2).value != None):
    print (i)
    j = 3
    TheFind = 0
    while (sht.cells(j,8).value != None):
        MyLook = sht.cells(i,2).value
        if (MyLook == sht.cells(j,8).value): 
            TheFind = 1
            if (sht.cells(i,4).value < sht.cells(j,10).value): 
                print ("Transfert")
                sht.cells(LastLine,8).value = sht.cells(i,2).value          
                sht.cells(LastLine,9).value = sht.cells(i,3).value                
                sht.cells(LastLine,10).value = sht.cells(i,4).value                
                sht.cells(LastLine,11).value = sht.cells(i,5).value                
                sht.cells(j,8).value = "XXXXX"          
                sht.cells(j,9).value = "XXXXX"               
                sht.cells(j,10).value = "XXXXX"                
                sht.cells(j,11).value = "XXXXX"                 
                LastLine += 1
                break
        j += 1
 
    if (j == LastLine) and (TheFind == 0): 
        sht.cells(LastLine,8).value = sht.cells(i,2).value          
        sht.cells(LastLine,9).value = sht.cells(i,3).value                
        sht.cells(LastLine,10).value = sht.cells(i,4).value                
        sht.cells(LastLine,11).value = sht.cells(i,5).value                
        LastLine += 1
 
    i += 1
 
print ("THE END !!!")