Sumif VBA

Bonjour,

Je sollicite votre aide pour m'aider à améliorer un fichier Excel qui me sert pour un boulot quotidien. Enfaite, je n'y connais (presque) rien en VBA et je n'ai pas pu programmer moi même un codage pour fluidifier mon fichier Excel et par faute de temps, je ne me suis pas redirigé vers les bases pour apprendre petit à petit.

Au dépit du caractère urgent du travail, j'ai besoin de vous les internautes. Je vous explique le problème :

Mon fichier est composé de deux feuilles : La première est une source de données qu'on me communique par mail, la seconde feuille est un tableau que j'ai élaboré moi même pour vérifier et analyser les données.

La base de données comporte d'abord plusieurs salariés qui ont des matricules (de 1 jusqu'à parfois 500). Ensuite, chaque élément du salaire est assimilé à un code, c'est à dire pour le salaire de base, c'est le code 1, la prime de représentation c'est le code 2 (ceci étant seulement un exemple). Donc, ma deuxième feuille classe les données d'un salarié selon les différents éléments du salaires. Autrement dit, ma deuxième feuille est un tableau qui comporte pour le salarié immatriculé n°1 plusieurs éléments dont le salaire de base (code : 1), sa prime de représentation (code : 2) etc. Pour cela j'utilise une fonction basique qui est SOMME.SI.ENS qui me valide à la fois l'immatriculation du salarié et me communique le montant de la rubrique selon le code de la rubrique que j'ai saisi (tel que c'est le cas dans le fichier joint). Mais, lorsque j'utilise cette méthode de SOMME.SI.ENS dans des bases de données riches en données, le fichier devient très lent et Excel en souffre.

On m'a conseillé de passer en VBA pour fluidifier mon fichier. Pouvez-vous m'aider à générer un codage permettant d'avoir pour chaque matricule et chaque code rubrique le montant adéquat ?

Merci de m'avoir lu et merci d'avance pour votre aide.

Ci-joint un exemple très simplifié par rapport à mes bases de données, j'essayerai de comprendre si quelqu'un m'a fait le code ou si il veut bien m'expliquer les techniques qu'il a utilisé

15classeur-excel.xlsx (15.47 Ko)

Bonjour,

Je pense qu'il vaut mieux faire un TCD (à actualiser en passant sur l'onglet REPORTING ... cela peut s'automatiser).

Ton fichier sera fluide car le calcul ne se fait pas en permanence.

14classeur-excel.xlsx (17.91 Ko)

Bonjour,

Je ne vois pas l'utilité de VBA dans ton cas,

Pour moi un tableau Croisé Dynamique est plus adapté.

Je te joins un exemple en PJ,

Bonne soirée,

=> Edit visiblement nous sommes sur la même longueur d'onde avec Steelson.

10classeur-excel.xlsx (22.63 Ko)

Bonjour,

Merci pour votre réponse très rapide, je suis parti me préparer un café que j'ai déjà eu deux solutions !

J'ai déjà proposé à mon supérieur la solution d'un tableau croisé dynamique mais ça n'arrange en rien le fait que lorsqu'on met des données de 500 voir 700 salariés avec beaucoup plus de rubriques, le fichier devient très très lourd. C'est pour ça que j'ai opté pour la VBA car j'ai lu quelque part qu'en fonction des formules utilisées par chaque cellule active sur Excel et bien, ça alourdit encore plus le fichier.

J'aimerai savoir est-ce que c'est IMPOSSIBLE en VBA ? Car si c'est possible, pourquoi ne pas essayer pour voir si le fichier devient moins lourd lorsque j'y mettrai plus de données ?

As-tu essayé le TCD avec un jeu de données réelles ?

Le TCD est un outil bien optimisé par Microsoft, à mon sens, si ça rame avec le TCD ça ramera encore plus avec VBA !

Bonne journée,

Girodo,

Et je suis 100% d'accord avec Girodo ! Je l'ai fait avec 15.000 salariés !

D'ailleurs, croiser des données comme cela en VBA va prendre des ressources de calcul astronomiques et un temps d'exécution beaucoup plus long que l'actualisation d'un TCD.

As-tu essayé le TCD avec un jeu de données réelles ?

Données réelles, Késako ? Vous pouvez m'expliquer s'il vous plait ?

Tu mets les données de tes 500 salariés dans BASE, pour moi le recalcul va être instantané au niveau du TCD

Girodo,

Je vais essayer ! Merci.

Rechercher des sujets similaires à "sumif vba"