VBA - Résultat SOMME.SI.ENS en dur à insérer

Bonjour à tous,

Je souhaiterais réaliser une macro VBA qui me permettrait dans certaines cellules de ma colonne J, de rentrer en dur, le résultat d'une formule, qui varie avec les lignes. Ceci dans l'objectif de ne pas surcharger mon fichier de SOMME.SI.ENS pour éviter qu'il ne soit ralenti. J'ai fourni un fichier exemple en pièce jointe avec 57 lignes, mais l'original en fait 12000, d'où l'intérêt de cette macro.

J'aimerais que les cellules affectées par cette formule, soit les cellules de la colonne J, où le fond est vert (RGB(160, 203, 183)), et dont la ligne ne contient pas "Add ICP" en colonne A.

Cette formule serait une somme de SOMME.SI.ENS inscrite dans en J10 et J11 par exemple. Ces formules font référence à 3 noms de plage que j'ai définies. D'ailleurs elles ne fonctionnent pas sur mon fichier même lorsque je les rentre en formule dans la cellule, sûrement à cause d'une référence circulaire annoncée relative à la plage_somme (1er élément à renseigner dans le SOMME.SI.ENS).. Mais je n'ai pas le choix c'est bien sur cette colonne J que je souhaite sommer les valeurs !

Donc finalement j'ai ce petit souci avant le plus gros qui est la macro évitant le tas de formules.

Si quelqu'un aurait la bonté de m'aider, je lui en serait éternellement reconnaissant !

Merci à tous !

SkillzZ

17classeur2.xlsx (79.11 Ko)

Bonjour,

je ne vois pas où est la formule SOMME.SI.ENS

et j'ai un soucis avec cette cellule

capture d ecran 421

Avant de se pencher sur la partie VBA, il y a effectivement des choses à éclaircir concernant l'objectif de tes formules. Que cherches tu précisément à calculer ?

Tes formules font référence à elle-même (réf. circulaire), donc ça ne peut effectivement pas fonctionner !

Concernant VBA, voilà des exemples de syntaxe sur une formule SOMME :

- Inscrire une formule Excel :

Range("A1").FormulaR1C1 = "=SUM(R1C2:R1000C2)"
'ou
Range("A1").FormulaLocal = "=SOMME($B$1:$B$1000)"

- Inscrire le résultat :

Range("A1") = Evaluate("=SUM($B$1:$B$1000)")
'Ou
Range("A1") = Application.Sum(Range("B1:B1000"))

Bonjour à vous deux et merci de vos réponses !

Je vais vous apporter des précisions, j'ai été un peu speed au temps pour moi.

Steelson, pour la cellule J4, peu importe elle n'a pas d'importance, j'e l'ai aussi dans mon fichier. La formule SOMME.SI.ENS se trouve en J10 et J11 par exemple.

Pedro, certaines des cellules de cette colonne doivent consolider des chiffres issus de cette même colonne. Pour savoir lesquels, il est nécessaire de se référer à la colonne Z où sont inscrits là aussi des noms de compte. Par exemple, la cellule J11 qui correspond au compte PL10100T doit sommer toutes les cellules de la colonne J, qui ont sur leur ligne en colonne Z: PL10100T. Cela est l'un des critères de la SOMME.SI.ENS réalisée. Les autres critères concernent la colonne F et notamment le fait que les lignes concernées par les sommes seront uniquement celles qui contiennent "ICP" à l'intérieur de leur cellule en colonne F. C'est ce qui m'oblige à faire la somme de 3 SOMME.SI.ENS, pour envisager les 3 contenus possibles de cette colonne F contenant "ICP": ICP None, ICP Entities, ICP Top. Dans l'idéal j'aurais placer un "OU" à l'intérieur d'un SOME.SI.ENS mais ce n'est pas possible.

Enfin, le recours à VBA dans ce cas est nécessaire car comme je vous le dis, mon fichier s'étend sur 12000 lignes.

J'espère avoir été plus clair, et je vous poste une version du fichier plus adaptée notamment pour la colonne Z.

SkillzZ

16classeur2.xlsx (18.71 Ko)

Re,

J'ai élaboré une macro qui fonctionne qu'à moitié. Il y a deux soucis sur lesquels j'aurais besoin de votre aide:

  • Le premier c'est que dans chaque cellule concernée, c'est "#VALEUR" qui m'est retournée. Lorsque je rentre la formule dans la cellule, cela fonctionne correctement pourtant (voir cellule J10).
  • La seconde chose est que la macro doit tourner pendant un certain temps puisque je lui fait parcourir l'intégralité de lignes (dans mon exemple on a que 57 mais dans mon fichier original 12000)

Pourriez-vous me donner un coup de main ?

SkillzZ

16classeur2.xlsm (26.87 Ko)

L'erreur provient bien du fait qu'il y a référence circulaire, car si je somme sur une autre cellule ça fonctionne (enfin j'imagine du coup). Sauf que je ne vois pas comment l'éviter et surtout que ça fonctionne sans problème quand je rentre la formule sous excel..

Je pourrai tenter une union de somme.si.ens, la première s'arrêtant avant la cellule en question et la deuxième reprenant après. Mais j'ai déjà la somme de 3 somme.si.ens initialement (pour dire que je somme les chiffres qui ont en colonne F: soit ICP None soit ICP Entities soit ICP Top). Du coup ça ferait 6 somme si ens au final, pas top...

SkillzZ

J'ai tenté de simplifier les choses et de reparti de l'existant sur ce topic: https://forum.excel-pratique.com/viewtopic.php?f=2&t=119742

N'hésitez pas si vous avez une idée, je sèche complètement..

SkillzZ

Rechercher des sujets similaires à "vba resultat somme ens dur inserer"