# conversion/reformatage avec ...GPT.importosimportpandasaspdfromopenpyxlimportload_workbook# Définition des cheminsdossier_source="D:/PYTHON/VALEUR REMPLACER ZIP"fichier_rebase="D:/PYTHON/REBASE.xlsx"# Chargement des valeurs de REBASE.xlsxwb_rebase=load_workbook(fichier_rebase,data_only=True)ws_rebase=wb_rebase.active# Extraction des valeurs des tableauxtableaux={1:pd.DataFrame(ws_rebase.iter_rows(min_row=1,max_row=273,min_col=1,max_col=2,values_only=True),columns=["Clé","Valeur"]),2:pd.DataFrame(ws_rebase.iter_rows(min_row=1,max_row=273,min_col=4,max_col=5,values_only=True),columns=["Clé","Valeur"]),3:pd.DataFrame(ws_rebase.iter_rows(min_row=1,max_row=273,min_col=7,max_col=8,values_only=True),columns=["Clé","Valeur"]),4:pd.DataFrame(ws_rebase.iter_rows(min_row=1,max_row=273,min_col=10,max_col=11,values_only=True),columns=["Clé","Valeur"]),}# Traitement des fichiers dans le dossier sourceforfichierinos.listdir(dossier_source):iffichier.endswith(".xlsx"):chemin_fichier=os.path.join(dossier_source,fichier)# Charger le fichier Excelwb=load_workbook(chemin_fichier)ws=wb.active# Identifier la dernière ligne contenant des données (entre 1 et 19)last_data_row=max([iforiinrange(1,20)ifany(ws.cell(row=i,column=j).valueforjinrange(2,ws.max_column+1))],default=1)# Étape 1 : Remplacement avec le Tableau 1ligne_depart=21ifany(ws.cell(row=21,column=j).valueforjinrange(2,ws.max_column+1)):ligne_depart=max([iforiinrange(21,ws.max_row+1)ifany(ws.cell(row=i,column=j).valueforjinrange(2,ws.max_column+1))],default=20)+2ligne_debut_bloc_1=ligne_depart# Ajout des valeurs du Tableau 1forcolinrange(2,ws.max_column+1):forrowinrange(1,last_data_row+1):valeur_originale=ws.cell(row=row,column=col).valueifvaleur_originale:valeur_remplacee=tableaux[1].loc[tableaux[1]["Clé"]==valeur_originale,"Valeur"]ifnotvaleur_remplacee.empty:ws.cell(row=ligne_depart+row-1,column=col,value=valeur_remplacee.values[0])# Calcul de la somme du Tableau 1ligne_somme_1=ligne_depart+last_data_row+1somme_bloc_1=[sum(ws.cell(row=row,column=col).valueor0forrowinrange(ligne_debut_bloc_1,ligne_somme_1)ifisinstance(ws.cell(row=row,column=col).value,(int,float)))forcolinrange(2,ws.max_column+1)]# Suppression du bloc 1 et insertion des sommes à la ligne 21ws.delete_rows(ligne_debut_bloc_1,ligne_somme_1-ligne_debut_bloc_1)ws.insert_rows(21)forcol_idx,sommeinenumerate(somme_bloc_1,start=2):ws.cell(row=21,column=col_idx,value=somme)# Étape 4 : Remplacement avec le Tableau 4ligne_depart=max([iforiinrange(21,ws.max_row+1)ifany(ws.cell(row=i,column=j).valueforjinrange(2,ws.max_column+1))],default=20)+2ligne_debut_bloc_4=ligne_depart# Ajout des valeurs du Tableau 4forcolinrange(2,ws.max_column+1):forrowinrange(1,last_data_row+1):valeur_originale=ws.cell(row=row,column=col).valueifvaleur_originale:valeur_remplacee=tableaux[4].loc[tableaux[4]["Clé"]==valeur_originale,"Valeur"]ifnotvaleur_remplacee.empty:ws.cell(row=ligne_depart+row-1,column=col,value=valeur_remplacee.values[0])# Calcul de la somme du Tableau 4ligne_somme_4=ligne_depart+last_data_row+1somme_bloc_4=[sum(ws.cell(row=row,column=col).valueor0forrowinrange(ligne_debut_bloc_4,ligne_somme_4)ifisinstance(ws.cell(row=row,column=col).value,(int,float)))forcolinrange(2,ws.max_column+1)]# Suppression du bloc 4 et insertion des sommes à la ligne 24ws.delete_rows(ligne_debut_bloc_4,ligne_somme_4-ligne_debut_bloc_4)ws.insert_rows(24)forcol_idx,sommeinenumerate(somme_bloc_4,start=2):ws.cell(row=24,column=col_idx,value=somme)# Sauvegarde du fichier modifiéwb.save(chemin_fichier)print(f"✅ {fichier} mis à jour avec succès.")print("✔ Tous les fichiers ont été traités correctement.")
# code source python reformaté
Posté par Marc Quinton . En réponse au message Demande pour que mon code python aille 1 million de fois plus vite car j'ai au moins 4 millions de f. Évalué à 3. Dernière modification le 03 février 2025 à 07:52.