Userform et tableau

le mieux est de s'adapter à B4, on pourra supprimer la colonne "I"

Alors le code sommesicouleur doit être strictement celui que je vous ai donné ici https://forum.excel-pratique.com/s/goto/1177913

Donc copiez-le et remplacez celui que vous avez car celui que vous aviez dans le fichier V10, fait deux fois la même chose

Après il faudra refaire un tour de ce que l'on doit trouver dans chaque colonne suite aux modifications dont vous avez parlé hier et ensuite adapter le code de calcul montant net

un petit résumé :

image
13greve-013-11-2.xlsm (68.17 Ko)

Hum... bon toujours plein de codes qui ne servent à rien et toujours en double

Vous dites E à indexer avec B4
Je dois trouver combien en E6 par exemple ? --> 301 * B4 ??

Je dois trouver combien en E6 par exemple ? --> 301 * B4 ??

oui c'est ça : 240,8

ls sommes des colonnes E Et D doit être égale

Ok. je modifierai le code et vérifie pour les somme E et D


NB : C'est tout de même dingue, je vous donne des tas de modifications et là elles ne sont pas dans votre fichier alors que je vous en reparle ce matin encore
J'arrive pas à comprendre ..

Bon je vais voir et vous remettre le fichier en ligne, sinon on va jamais y arriver

j'ai fait quelque essai de mon côté, je vous ai peut etre pas mis le bon, je vais verifier.

Je veux bien votre version pour repartir sur de bonne base ...

bonne soirée Dan et encore merci pour votre travail

Bonjour,

Voici une récap par rapport à votre dernier. Je vous explique par les noms des entêtes (plus pratique que les numéros de colonne) donc de gauche à droite

Les données en feuille Data et feuille 2 correspondent à celle de votre dernier fichier posté

1. perte par agent sur paye (NET)
: montant corespondant à la somme des jour de grève (donc jouravec couleur) * B4
2. participation à la perte collective(brut)
: total colonne de feuille 2 * quote part feuille 2 * B4
3. à injecter dans la cagnotte (NET)
: =SI([@[perte par agent sur paye (NET)]]="";[@[participation à la perte collective(brut)]];"")
4. à rembourser à l'agent (brut)
: =SI([@[perte par agent sur paye (NET)]]<>"";[@[perte par agent sur paye (NET)]]-[@[participation à la perte collective(brut)]];"")
5. Perte si gréviste tous les jours (net)
: total des jours du tableau en feuille 2. Il ne s'agit pas de la colonne total qui elle ne mentionne que le total des jours de grève
6. pourcentage de perte avant cagnotte de gréve
: =SI([@[perte par agent sur paye (NET)]]<>"";[@[participation à la perte collective(brut)]]/[@[perte par agent sur paye (NET)]];"")
7. montant reçu
: montant rentré manuellement
8. redristribution
: =INDEX(Tableau2;EQUIV([@NOM];Tableau2[nom];);3)*Tableau1[[#Totaux];[montant reçu]]
9. Perte fin de grève
: =[@[participation à la perte collective(brut)]]+[@[à ré-injecter dans le pot commun]]
10 : à ré-injecter dans le pot co
mmun : =SI([@[montant reçu]]-[@redristribution]<0;0;[@[montant reçu]]-[@redristribution])
11. virement à effectue
r : =[@[à ré-injecter dans le pot commun]]

Sur fond brun, les colonnes exécutées via code
Sur fond bleu, les formules

NB :
- Dans votre dernier post vous dites que la colonne L est le total des grévistes et non grévistes feuil2. Il faut adapter le titre de colonne je pense
- Allez vous rajouter un bouton pour la mise à jour via le code Calcul_montant_net. Gardez en mémoire que le changement de B4 exécute le code sommesicouleur

Si vous me confirmez les points précédents, je vous posterai le fichier revu et codes adaptés. Ce sera plus simple de repartir de celui-là

Crdlt

bonjour dan,

très bonne synthèse,

11. virement à effectuer : =[@[à ré-injecter dans le pot commun]]

je pense que cette colonne n'a plus lieu d'être puisque même résultat que dans "à ré-injecter dans le pot commun"

Allez vous rajouter un bouton pour la mise à jour via le code Calcul_montant_net. Gardez en mémoire que le changement de B4 exécute le code sommesicouleur

je pensais rajouter un userform dans ce style :

image

Re:

je pense que cette colonne n'a plus lieu d'être puisque même résultat que dans "à ré-injecter dans le pot commun"

Ok je la supprime dans le fichier

Allez vous rajouter un bouton pour la mise à jour via le code Calcul_montant_net. Gardez en mémoire que le changement de B4 exécute le code sommesicouleur

je pensais rajouter un userform dans ce style :

Cela ne répond pas à la question. Vous sautez une étape là
Je reformule autrement : comment exécutez-vous le code calcul montant net ?

effectivement, je n'avais pas compris, est-ce que l'on peut faire un calcul automatique à chaque changement de valeur ?

type nouvelle journée de gréve rajout d'un agent ....

est-ce que l'on peut faire un calcul automatique à chaque changement de valeur

Oui. Le recalcul se fera sur changement :
- de la valeur en B4
- du bouton "Ajouter" dans l'userform1
- du bouton "supprimer date" dans l'userform1

Quel nom donne-t-on à ce fichier afin de repartir de celui là ? --> gestion_014 ? ou autre

Bonjour Dan,

Gestion_greve_014, me semble bien comme nom .

Voici le fichier duquel vous devrez repartir si d'autres modif sont à effectuer

Le calcul se fera dans les conditions décrites dans mon post précédent
La colonne "Montant reçu" est remplie manuellement.
La colonne "Virement" n'est pas supprimée. je vous laisse le choix de le faire ou pas. Cela n'a de toute façon pas d'impact sur le fonctionnement de la feuille
Les données de colonne gérées par code sont les colonnes dont la police des entêtes est en blanc

Dites-moi si ok

Bonne lecture

bonjour Dan,

c'est super !

j'ai modifié deux formules, juste que je me suis trompé dans les valeurs à prendre

"pourcentage de perte avant cagnotte de gréve" =([@[participation à la perte collective(net)]]/[@[Perte si gréviste tous les jours (net)]])

"% perte finale" = =([@[Perte fin de grève]]/[@[Perte si gréviste tous les jours (net)]])

la colonne "pour verif " peut être supprimé.

je viens de me rendre compte de quelque chose ...

si je rentre une nouvelle valeur en "B4" la colonne "si gréviste tous les jours (net)" les montants ne s'affichent pas pour tous les agents (les cases en orange)

image

re

si je rentre une nouvelle valeur en "B4" la colonne "si gréviste tous les jours (net)" les montants ne s'affichent pas pour tous les agents (les cases en orange)

Pas sûr d'avoir compris, cette colonne E correspond au total des jours de grève des agents en grève. Dans la feuil2, les agents 1 à 9 sont en grève et pas les agents 10 à 17
La colonne B4 n'agit pas sur ces montants là mais sur la colonne E --> participation à la perte collective(net)

bonjour Dan,

Pas sûr d'avoir compris, cette colonne E correspond au total des jours de grève des agents en grève. Dans la feuil2, les agents 1 à 9 sont en grève et pas les agents 10 à 17

La colonne B4 n'agit pas sur ces montants là mais sur la colonne E --> participation à la perte collective(net)

je vous mets un exemple :

image

je change la valeur en B4 et ça ne mets pas à jour les valeurs dans la colonne "H" (Perte si gréviste tous les jours (net))

j'ai refais le test avec le fichier que vous m'avez envoyé avant que je supprime et que je modifie quelque formule

je change la valeur en B4 et ça ne mets pas à jour les valeurs dans la colonne "H" (Perte si gréviste tous les jours (net))

Précédemment vous aviez dit (si je ne trompe) que vous vouliez la somme des montants des jours de gréve par agent.
Donc là le code considère que si D est vide l'agent n'est pas en grève et ne met pas d'info en colonne H
Si vous voulez avoir tout de même l'info en colonne H, faites ceci

- Allez dans le code Sub calcul_montant_net()
- Désactivez la ligne ci-dessous en le premier END IF que vous trouvez en dessous

If .DataBodyRange(i, 4) <> vbNullString Then 'verifie que colonne D est vide

Là si par exemple l'agent 9 n'est pas en grève (en J13 -> sans couleur orange), le total sera en feuil2 de 764.16 mais la somme des jours mentionnés comme jours de grève sera de 860.16.
en désactivant le ligne de code ci-avant ce sera donc 860.16 qui sera renseigné en colonne H

Correct ?

Là si par exemple l'agent 9 n'est pas en grève (en J13 -> sans couleur orange), le total sera en feuil2 de 764.16 mais la somme des jours mentionnés comme jours de grève sera de 860.16.

en désactivant le ligne de code ci-avant ce sera donc 860.16 qui sera renseigné en colonne H

Correct ?

Dan,

c'est tout à fait correct.

j'ai fais quelque essais, je me suis rendu compte qu' en rajoutant un jour de gréve et en ne mettant que du personnel n'ayant jamais fait gréve,

je me retrouve en colonne G avec des montants négatif, si je ne me trompe pas, je devrais retrouver ces montants négatifs, en colonne F mais positif car ils correspondent aux montant à réinjecter dans la cagnotte.

dite moi ce que vous en pensez.

je vous met le fichier avec le jour en plus pour regarder

image

j'ai corrigé comme ça le calcul de la colonne f et G

F : =SI(([@[perte par agent sur paye (NET)]]<>""); SI(([@[perte par agent sur paye (NET)]]-[@[participation à la perte collective(net)]])<0; ABS([@[perte par agent sur paye (NET)]]-[@[participation à la perte collective(net)]]); ""); "")

G : =SI(([@[perte par agent sur paye (NET)]]<>""); SI(([@[perte par agent sur paye (NET)]]-[@[participation à la perte collective(net)]])>0; ([@[perte par agent sur paye (NET)]]-[@[participation à la perte collective(net)]]); ""); "")

par contre je me suis rendu compte que lorsque je supprime un jour de grève le tableau 1 n'est pas recalculé

Hum... pour votre formule je ne jouerais pas avec la fonction ABS car si vous avez des montants négatifs par hasard, vous ne le verrez jamais. A vous de voir
Sinon j'aurais plutôt fait ceci

F : =SI(ET([@[perte par agent sur paye (NET)]]<>"";[@[perte par agent sur paye (NET)]]<[@[participation à la perte collective(net)]]);[@[participation à la perte collective(net)]]-[@[perte par agent sur paye (NET)]];"")
G : =SI(ET([@[perte par agent sur paye (NET)]]<>"";[@[perte par agent sur paye (NET)]]>=[@[participation à la perte collective(net)]]);[@[perte par agent sur paye (NET)]]-[@[participation à la perte collective(net)]];"")

par contre je me suis rendu compte que lorsque je supprime un jour de grève le tableau 1 n'est pas recalculé

Si mais vous devez utiliser l'USERFORM2, choisir votre date et utiliser le bouton "Supprimer"


Rechercher des sujets similaires à "userform tableau"