Taille et vitesse d'exécution

Bonjour à tous,

J'aurais besoin de votre expérience.

J'ai une application Excel .xlsm développée avec Excel 2013 de 10 Mo avec 135 feuilles. J'ai ajouté 4 feuilles avec de nombreuses formules, mais sans code VBA. La taille a augmenté de 1 Mo. Je dois encore construire 4 autres feuilles (et sûrement d'autres à l'avenir). Il serait possible de limiter la taille de ces feuilles si je passe par du code VBA (car cela m'évitera de nombreuses formules). D'après votre expérience :

Est-il préférable :

  • de travailler avec des formules et d'avoir une augmentation de la taille du fichier de plusieurs Mo ou
  • de travailler avec du code VBA pour limiter la taille du fichier quitte à rendre l'exécution plus longue.

Si vous avez des pistes ou de l'expérience à me transmettre, je suis preneur :-).

Un grand merci d'avance et toute bonne journée

Fabrice

Bonjour,

Dans la série les conseilleurs ne sont pas les payeurs....

J'ai du mal à imaginer 135 onglets voire plus dans un fichier. Cela suppose a minima d'avoir recours à un onglet de synthèse qui vous oriente vers le bon onglet via un lien hypertexte.

Dans ces conditions si les onglets n'ont pas de relations entre eux, je ferais plusieurs fichiers dont les onglets seraient accessibles toujours avec le même onglet de synthèse via les liens hypertextes.

bonjour,

Y-a-t-il beaucoup de format conditionel ou des formules complexe dedans ? chaque feuille quelque MB ?

pour le reste meme opinion que Eric Kergresse.

Je vous remercie de vos réponses. En fait, tous les onglets sont majoritairement indépendants, mais ils sont nécessaires pour effectuer des tableaux de calculs de synthèses (avec de nombreux calculs effectués via VBA). Il est donc difficilement envisageable de diviser le fichier en plusieurs. De plus, un fichier est créé par projet (et il y a une cinquantaine de projets par année, ce qui multiplierait les fichiers liés).

L'utilisateur a accès à environ 60 onglets via un ruban personnalisé. Les feuilles ajoutées ne contiennent pas de mises en forme conditionnelle. Pour ce qui est des formules, j'utilise abondamment la fonction Decaler et il me semble qu'elle demande pas mal de calculs de la part d'Excel.

A disposition si vous souhaitez plus d'infos et merci de partager votre expérience.

Cordialement

Fabrice

bonjour,

toutes les fonctions contenant decaler, indirect et volatile, sont réévaluées dès qu'une cellule est modifiée, ce qui peut provoquer rapidement des millions de re-calculs, souvent inutiles.

decaler est souvent utilisé pour pouvoir avoir une formule qu'on peut recopier facilement, mais pour des les raisons évoquées ci-dessus, il est préférable de modifier chaque formule pour y préciser la plage qu'on aurait obtenue avec l'instruction decaler ou indirect (on peut utiliser VBA pour cela, ou faire les calculs en VBA)

Bonjour,

effectivement, Decaler() est volatile.
Une possibilité est de garder les formules en 1ère ligne.
Quand une mise à jour est nécessaire il suffit de les recopier en vba, suivi d'un nouveau copié-collé valeur préservant la 1ère ligne.
S'il y a des dépendances, penser à restaurer toutes les formules nécessaires avant le collé valeur.
Le minimum de recalcul sera fait à chaque fois et allègera sans reprendre la structure..
eric

Bonjour à tous,

Je vous remercie pour vos réponses et vos conseils. Je vais réduire le nombre de fonctions Decaler() et évaluer les performances.

Encore merci et toute bonne journée

Fabrice

Au cas où tu aurais envie de mesurer le temps de traitement :

Sub MesureTempsProcedure()

Dim HeureDebut, HeureFin, TempsTotal

    HeureDebut = Timer

    ' Suite du code

    HeureFin = Timer
    TempsTotal = HeureFin - HeureDebut

    Debug.Print "Temps total : " & Round(TempsTotal, 0) & " seconde(s)"

End Sub

Merci Eric pour ce code pour tester la performance.

En grattant un peu, je pense pouvoir remplacer les fonctions Decaler par des fonctions RechercheH() se basant sur les lignes complètes de la feuille (car je ne sais pas combien de colonnes seront saisies par l'utilisateur). Je pourrai bien sûr effectuer un test avec votre procédure, mais, à vue de nez, est-ce que ça vous semble une bonne solution ?

Encore merci de partager votre expérience et excellente journée.

Fabrice

Je n'en ai aucune idée.

Nb : le calcul du temps de traitement n'est qu'une information.

Bonjour à tous,

Je vous remercie pour vos pistes et à Eric pour calculer le temps de traitement. C'est top !!!

Toute bonne journée

Cordialement

Fabrice

Rechercher des sujets similaires à "taille vitesse execution"