Remplacement de Somme.si.ens via VBA

Bonjour à tous,

Petite question de curiosité,

J'ai un fichier excel qui comporte plusieurs onglets :

  • 5 Onglets avec des bases de données différentes
  • 1 Onglet standardisé qui consolide les informations contenues dans ces 5 onglets de bases de données à l'aide de somme.si.ens.

Sauf que mon onglet standardisé de consolidation comporte environ 3 500 somme.si.ens (pour récupérer les infos de mes bases de données).

J'ai aujourd'hui une macro fonctionnelle qui :

=> Me duplique cet onglet standardisé en autant d'exemplaire que j'ai de structures (l'onglet est dupliqué 121 fois en fonction d'une liste de structures variables)

=> Procède aux calculs de ces 121 onglets (soit 3 500 x 121 = 423 000 somme.si.ens à calculer)

=> Diffuse chacun de ses onglets dans des classeurs automatiquement générés et automatiquement enregistrés dans des répertoires variables (en dupliquant les onglets en valeurs bien entendu).

Ce qui me donne un classeur final à 22Mo qui est difficilement ouvrable (2-3 min d'ouverture) pour reconsulter mon fichier avec tous mes tableaux de bords

En gros la macro tourne pendant 35 à 45 min mais le travail est parfaitement réalisé sans accro.

Sauf que je souhaite savoir si passer par le VBA pour remplacer les somme.si.ens peut me faire gagner du temps ?

Pour infos chaque formule somme.si.ens est automatisée de la façon suivante :

  • J'ai nommé toutes les plages de mes bases de données (exemple : REEL_CUMUL)
  • Je fais appel à ces plages par le biais d'un INDIRECT et d'un intitulé de colonne dans mon onglet standard (exemple = INDIRECT(B5&"_CUMUL") Ou B5 est l'intitulé REEL
Cela m'a juste permis de tirer toutes mes formules d'un coup sans changer les plages de mes somme.si.ens à chaque colonne

Enfin bref, je cherche d'abord à savoir si passer par le VBA peut me faire gagner du temps en calcul, si oui combien environ. Que je ne me lance pas dans du code pour gagner 5 min... surtout que macro acutelle fonctionne D'autant plus que je n'ai jamais utilisé le VBA pour faire des formules

Merci pour vos réponses

Bien cdt,

Bonjour,

merci de joindre un fichier avec un exemple des formules que tu utilises.

Bonjour,

Tu trouveras ci-joint mon fichier "simplifié". J’espère que tu arriveras à l'appréhender facilement, c'est jamais facile pour ceux qui ne le construise pas

Merci pour ton aide en tout cas,

Cdt,

5macro-2.xlsm (146.44 Ko)

re,

voici exemple pour calculer la valeur de la cellule K14

Sub test()
v1 = Range("K2")
v2 = "CUMUL_" & v1  '=N_Balance_cumul!$A:$A

pl1 = Right(ActiveWorkbook.Names("CUMUL_REEL"), Len(ActiveWorkbook.Names("CUMUL_REEL")) - 1)
Set sh1 = Sheets(Split(pl1, "!")(0))
Set rng1 = Range(Split(pl1, "!")(1))

pl2 = Right(ActiveWorkbook.Names(v2), Len(ActiveWorkbook.Names(v2)) - 1)
Set sh2 = Sheets(Split(pl2, "!")(0))
Set rng2 = Range(Split(pl2, "!")(1))

pl3 = Right(ActiveWorkbook.Names("CUMUL_COMPTE"), Len(ActiveWorkbook.Names("CUMUL_COMPTE")) - 1)
Set sh3 = Sheets(Split(pl3, "!")(0))
Set rng3 = Range(Split(pl3, "!")(1))

t = "SUMIFS(" & sh1.name & "!" & rng1.Address & "," & sh2.name & "!" & rng2.Address & ",$D$2," & sh3.name & "!" & rng3.Address & ",$A14)"
r = Evaluate(t)
End Sub

Hello,

Merci je vais essayer ça ce weekend. Je vais également essayer de l'appliquer à chaque cellule concernée de la feuille

Rechercher des sujets similaires à "remplacement somme ens via vba"