Macro lente si plusieurs classeurs ouverts

Bonjour à tous,

Voici mon problème :

Dans un classeur, j'ai une macro qui récupère un fichier (exporté depuis notre ERP), qui l'intègre dans un onglet, puis qui parcourt chaque ligne afin de mettre à jour un autre onglet dudit classeur.

Il y a une boucle for ... next qui parcourt les lignes (environ 500-600 lignes) et qui sous certaines condition va mettre à jour des cellules dans un autre onglet :

for i = 1 to valeur

if test = vrai then

monTableau.cell(i,5) = montableau.cell(i,5) + uneAutreValeur

else

monTableau.cell(i,5) = montableau.cell(i,5) + EncoreUneAutreValeur

End if

next i

Tout cela fonctionne très bien, la macro s’exécutant en 2-3 secondes environ ........ sauf si un autre classeur SANS AUCUN LIEN AVEC LE PREMIER, mais contenant de nombreuses formules, est ouvert. Dans ce cas, la macro met entre 3 et 4 mn a s'effectuer.

J'ai fait de nombreux tests avec le débugeur et s'est bien au moment de la mise à jour de la cellule que le ralentissement se produit ... comme si après avoir changé la valeur de la cellule, il allait recalculer l'autre classeur.

Au début de la macro, on a bien un Application.Calculation = xlCalculationManual et un Application.ScreenUpdating = False, mais cela ne semble rien changer. A ce sujet : Est-ce que ces instruction marche pour tout les classeurs ouverts ? Ou uniquement pour le classeur actif ?

Si vous avez une idée pour corriger ce problème....

Merci d'avance

bonjour

Excel 1906 ou 2016 ?

acteullement, on lit les fichiers exports de progiciels avec Power Query (gratuit, sorte d'extension d'Excel)

on peut prétraiter les données avant "chargement" dans Excel

une fois dans Excel, à chacun de faire des formules qui vont lire la table ainsi importée

sans code à saisir (Power Query tape le code que tu as créé avec les menus)

https://support.office.com/fr-fr/article/pr%C3%A9sentation-de-microsoft-power-query-pour-excel-6e92e2f4-2079-4e1f-bad5-89f6269cd605

amitiés

Merci pour cette info, mais dans mon cas, ce n'est poas l'import qui pose problème. Ce qui pose problème, c'est la boucle de lecture des lignes de l’onglet qui est très lente si un autre classeur est ouvert, et très rapide si aucun autre classeur n'est ouvert.

C'est comme si à chaque fois que l'on allait modifier une cellule dans le classeur, il allait recalculer les autres classeurs (et cela malgré la désactivation du calcul auto).

Merci quand même

re

pourquoi parcourir un onglet ?

des formules du genre SOMME.SI ou SOMMEPROD, ou mieux un TCD feront cela simplement

joins un fichier exemple de 3 colonnes et 5 lignes et le résultat attendu

note : avec Power Query, durant la phase d'import on peut traiter les données

connais-tu ?

amitiés

Rechercher des sujets similaires à "macro lente classeurs ouverts"