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
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
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,
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