Modification d'un formule SOMMEPROD selon un tri

bonjour à tous,

avant toutes choses je vous remercie d'avance pour votre aide

j'ai un fichier cf photo pour vous donner une Idée:

capture d ecran 2019 06 07 a 15 31 28

actuellement de la cellule G30 à OM30, j'ai la formule suivante:

=((SUMPRODUCT((Planning!IE$32:IE$200<>"")*(Planning!$B$32:$B$200<>"")*(Planning!$A$32:$A$200<>"SF")*(Planning!$A$32:$A$200<>"SK"))))/(SUMPRODUCT((Planning!$A$32:$A$200<>"SF")*(Planning!$A$32:$A$200<>"SK")*(Planning!$A$32:$A$200<>"")))

cette formule me permet de voir le taux d'occupation soit:

0% = 100% des pers sont dispo

100% = 0% des pers sont dispo

tout fonctionne correctement

mais je souhaiterai que cette formule s'adapte lorsqu'on sélection la "section" colonne A soit

choix 1: que S1

choix 2: que S2

choix 3: que S3

choix 4: que S4

choix 5 : que SK

choix 6 : S1, S2,S3 et S4 ( ou diff de sk et SF comme dans la formule qui existe)

SF= section fantôme pers qui sont en instance de partir

se choix s'effectue par une macro ( bouton a gauche de la photo)

ma problématique est d'adapter cette formule sous forme de boucle ( je suppose ) pour qu'elle incrémenter le taux d'occupation selon la sélection

je n'arrive pas a commencer cette boucle et a transformer cette formule.

je début soyez indulgent

je vous remercie d'avance

respectueusement

jb

Bonjour,

A priori ... puisque une photo est un objet inerte ...

Difficile d'en faire quelque chose ...

Si tu en as la possibilité ... il vaudrait mieux joindre ton fichier ...

bonjour,

merci pour cette réponse:

la nuit portant conseil , j'ai mis en place ce code:

=IF($C$1=6;((SUMPRODUCT((Planning!G$32:G$200<>"")*(Planning!$B$32:$B$200<>"")*(Planning!$A$32:$A$200<>"SF")*(Planning!$A$32:$A$200<>"SK"))))/(SUMPRODUCT((Planning!$A$32:$A$200<>"SF")*(Planning!$A$32:$A$200<>"SK")*(Planning!$A$32:$A$200<>"")));IF($C$1=1;((SUMPRODUCT((Planning!G$32:G$200<>"")*(Planning!$A$32:$A$200="S1"))))/(SUMPRODUCT((Planning!$A$32:$A$200="S1")*1));IF($C$1=2;((SUMPRODUCT((Planning!G$32:G$200<>"")*(Planning!$A$32:$A$200="S2"))))/(SUMPRODUCT((Planning!$A$32:$A$200="S2")*1));IF($C$1=3;((SUMPRODUCT((Planning!G$32:G$200<>"")*(Planning!$A$32:$A$200="S3"))))/(SUMPRODUCT((Planning!$A$32:$A$200="S3")*1));IF($C$1=5;((SUMPRODUCT((Planning!G$32:G$200<>"")*(Planning!$A$32:$A$200="SK"))))/(SUMPRODUCT((Planning!$A$32:$A$200="SK")*1));IF($C$1=4;((SUMPRODUCT((Planning!G$32:G$200<>"")*(Planning!$A$32:$A$200="GCC")+(SUMPRODUCT((Planning!$A$32:$A$200="S4"))))/(SUMPRODUCT((Planning!$A$32:$A$200="GCC")+(SUMPRODUCT((Planning!$A$32:$A$200="S4")*1))))))))))))

lorsque je lance une macro liée au trie (S1,S2,S3,SK...) j'incrémente la cellule C1 pour rendre la fonction SI =Vrai.

cela fonctionne

ma petite question, pour la fiabilité et la rapidité du fichier :

faut il laisser cette fonction dans chaque cellule de G30 à OM 30 soit 397 cellule ou faut il créer un code en vba?

si la réponse est le vba, pouvez vous m'aider à commencer la boucle de codage?

merci d'avance à tous

respectueusement

jb

Bonjour,

Que ce soit par formules ou VBA, il faudra toujours effectuer les calculs (et afficher les résultats) !...

Cdlt.

Re,

Jean-Eric a raison ...

Si tu te trouves dans uns situation où la taille de ton fichier réel augmente beaucoup et le nombre de tes formules également ...

cela risque de beaucoup ralentir tous les calculs ...

A ce moment là, la macro devient plus intéressante que les formules ...

re,

oui, je m'en doute mais quelle est la solution la plus fiable entre:

1 longue formule ( reponds a toutes les possibilités de trie (S1 ou S2 ou S3 ou S4.....) dans 397 cellules ( cf.message ci dessus)

ou

une boucle vba (par macro) qui répète une formule dans 397 cellules mais qui sera réduite ( boucle en fonction du trie ( S1,S2,S3...)

quelle est la solution la moins "pesant" pour le fichier ( ralentissement).

merci d'avance pour ces informations

cordialement

jb

Re,

Pour te donner une réponse ultra précise ... il faudrait mettre ne parallèle les deux solutions et les chronomètrer pour faire la comparaison ...

Mais, dans la mesure où tu dis qu'il ne s'agit que de 397 cellules ... je pense que tu n'es pas pénalisé par les formules ...

re,

merci pour cette réponse,

peux tu m'orienter sur une transformation de la formule en vba.

mon but étant aussi de progresser en vba

merci d'avance à toi

cordialement

jb

Re,

En ce qui concerne le gain d'efficacité d'une formule calculée par le biais d'une macro ... pour soulager ta feuille Excel ...

la solution Evaluate est très performante ...

Pour illustration ... ci-joint un exemple ...

En espèrant que cela t'aide

re,

merci pour cette exemple ( je regarde)

j'ai taper ce code:

Sub fomula()

For Each cell In Range("G30:OM30")

ActiveCell.FormulaR1C1 = _

"=((SUMPRODUCT((Planning!R32C:R200C<>"""")*(Planning!R32C2:R200C2<>"""")*(Planning!R32C1:R200C1<>""SF"")*(Planning!R32C1:R200C1<>""SK""))))/(SUMPRODUCT((Planning!R32C1:R200C1<>""SF"")*(Planning!R32C1:R200C1<>""SK"")*(Planning!R32C1:R200C1<>"""")))"

Next

End Sub

ce code serait lorsqu'on recherche le taux d'occupation de S1+S2+S3+S4

mon petit PB est que le code tourne sans s'arrêter

merci à toi

jb

Re,

Quelques petites remarques ... puisque tu me donnes l'impression d'être très pressé ...

1. Le code tu as posté a été généré par l'enregistreur de macros ...

2. Ensuite tu l'as inséré dans une boucle ... mais tu as conservé ActiveCell ... donc cela ne fonctionnera jamais ...

3. Comme indiqué plus haut ... il n'y a pas un grand intérêt à construire une macro pour insérer tes formules dans ta feuille ...

4. Par contre si ta macro effectue le calcul et affiche le résultat final ... alors ... ta feuille aura gagné en efficacité ...

5. Tu peux reprendre l'exemple que je t'ai envoyé ... et progresser pas à pas ...

merci

pour ces précieux conseils

respectueusement

jb

Content que cela puisse t'aider

Rechercher des sujets similaires à "modification formule sommeprod tri"