Répartition montant dans un tableau (Modification code VBA)

Bonjour à tous,

dans le fichier ci-joint j'ai un code qui me permet en cliquant sur le bouton MO de l'onglet MO Qte de faire la répartition du montant entré et le résultat je l'ai sur l'onglet ODA MO

ce que je désire modifier dans le code c'est :

les valeurs de la colonne G de l'onglet ODA MO doit dépendre de la colonne L de l'onglet ODA MO comme suit :

si les valeurs de la colonne L de l'onglet ODA MO font partie de la sélection A118: A146 de longlet MO Qte alors le résultat doit être 1988 sur la cellule de la colonne G de l'onglet ODA MO. mais si ces valeurs ne font pas partie de cette séléctions alors le résulat doit être 2016

Merci d'avance

29selection.xlsm (62.73 Ko)

Aidez moi s'il vous plait

Est ce que quelqu'un peut m'aider s'il vous plaît

Bonjour,

L'application existante est complexe. Toute modification du code sans connaître toutes les règles existantes peut engendrer des régressions.

Pour aider, une proposition en pièce jointe, à tester complètement !

Pour diminuer tout risque de régression, la modification est ciblée, avec création d'une nouvelle fonction spécifique pour gérer cette règle complémentaire :

Private Function CostElement(psOTPDestination As String, poPlageCodeOTP As Range) As String

Toutes les modifications sont mentionnées : "V0.1".

Un conseil : repartir de votre fichier, et rajouter les nouvelles lignes.

Cordialement

Bouben

24selection-v0-1.xlsm (67.62 Ko)

Bonjour Bouben,

merci beaucoup pour ton aide c'est exactement ce que je cherchais

j'ai juste une petite question : si je compte élargir la sélection (A118 : A146) de l'onglet MO Qte en ajoutant des lignes après la ligne 146 qu'est ce que je dois changer dans le code pour qu'il le prenne en considération

Merci d'avance

Bonjour,

La plage est indiquée seulement ici :

        'V0.1
        'Alimentation de la colonne "Cost Element" (colonne G)
        For i = 6 To N 'cette boucle commmence à la ligne 6 (la précédente à la ligne 7)
            .Range("G" & i).Value = CostElement(.Range("L" & i).Value, Qte.Range("A118:A146"))
        Next i
        'V0.1-fin

Pour faire mieux : rechercher la dernière ligne de la colonne A pour déterminer la fin de la plage.

Bouben

y'a t'il moyen pour que le code détecte automatiquement la dernière cellule remplis de la colonne A au lieu de mettre

Qte.Range("A118:A146")) ???

Bonsoir,

DonMunnir a écrit :

y'a t'il moyen pour que le code détecte automatiquement la dernière cellule remplis de la colonne A au lieu de mettre

Qte.Range("A118:A146")) ???

Oui : cf instruction

iDerLig = Range("A" & Rows.Count).End(xlUp).Row

Ci-joint une nouvelle version prenant en compte la dernière ligne renseigner de la colonne A.

A tester, toujours ...

Bouben

13selection-v0-2.xlsm (71.47 Ko)

Merci beaucoup Bouben c'est exactement ce que je cherchais

il me reste encore un petit problème dont je veux ton aide si c'est possible

en cliquant sur le bouton MO de l'onglet MO Qte je mets par exemple 15656548 comme montant qui va par la suite se détailler sur la colonne H de l'onglet ODA MO

dans cet exemple H29 doit égale H28 alors en jetant un coup d'oeil sur H28 on constate que 0.03 s'est ajouté

est ce qu'il y'a possibilité de modifier dans le code pour avoir le résultat exact après le détail

Merci d'avance

11selection-v0-3.xlsm (64.51 Ko)

Bonjour,

C'est un problème d'arrondi. En colonne H, tous les montants sont arrondis à 2 décimales, ce qui explique cet écart quand on fait la somme.

Ci-joint une nouvelle version à tester.

Les montants ne sont plus arrondis (mais l'affichage reste à 2 décimales). Le total est maintenant bon.

Par contre, si on fait la somme des montants tels qu'ils sont affichés (donc comme si c'était arrondi), le problème reste le même.

Si par exemple, quelqu'un imprime le fichier et refait la somme, il verra le problème.

Mais c'est insoluble : si on additionne 1/3 + 1/3 + 1/3, à l'affichage on a 0.33 + 0.33 + 0.33 = 0.99, mais la somme fait bien 1.

Bonne journée

Bouben

20selection-v0-4.xlsm (71.06 Ko)

le problème c'est que le logiciel ou je dois copier ces informations n'accepte pas plus de 2 chiffres après la virgule

donc ce n'est un problème d'affichage mais l'écart qui va me sortir le logiciel d 0,03

Argh ! Donc il faut trouver une solution ...

idée : remodifier légèrement certaines valeurs (+ ou - 0.01) pour arriver au total.

Ce sera de manière parfois arbitraire.

Exemple :

ligne 1 : 1/3 => 0.33333333, arrondi à 0.33

ligne 2 : 1/3 => 0.33333333, arrondi à 0.33

ligne 3 : 1/3 => 0.33333333, arrondi à 0.34

On peut partir là-dessus ?

Bouben

oui c'est la même idée que j'ai eu dans ma tête mnt

après la répartition du montant entré dans la fenêtre de l'onglet MO Qte, Si H28 <> H29

alors ajouter ou diminuer la différence dans H6 (la première cellule du tableau) pour avoir H28= H29 toute en sachant que le montant exacte est toujours H29 et c'est H28 qui doit changer au cas ya erreur

c'est possible ??

C'est possible ..

Ci-joint une nouvelle version dans laquelle le premier montant (H6) est ajusté en fonction de l'écart éventuel.

A tester !

Bouben

waw super c'est vraiment ce que je désire

merci beaucoup bouben

j'ai une dernière demande que j'ai oublié si c'est possible biensur

le montant qu'on a entré dans la fenêtre qui s'affiche en cliquant sur le bouton MO et qui se copie sur H29 de l'onglet ODA M,

je veux qu'il se copie aussi dans la cellule Q6 de l'onglet MO QTE...comme ça a chaque j'entre un nouveau montant il se copie dans Q6 et remplace l'ancien

je m'excuse de t'avoir cassé la tête avec mes demandes

je te remercie encore une autre fois

Re-

No souci ! Tant que les demandes sont claires

Ci-joint une nouvelle version avec la copie en Q6 du montant saisi.

A tester

Bouben

oh merci beaucoup c'est vraiment gentil de ta part

j'ai eu un autre problème et je ne sais pas si c'est facile de le résoudre

O29 de l'onglet ODA MO ne doit pas comporter le total de la cellule Q117 de l'onglet MO Qte

c'est à dire dans H29 je dois avoir 42 et dans H28 doit exclure les montants dont la cellule G est 1988 donc H28 dans le cas de ton dernier fichier doit égale somme O6:O17

j'espère que je suis claire

DonMunnir a écrit :

j'espère que je suis claire

Un peu moins cette fois ...

Dit autrement :

En O28 & O29 (et non H28 & H29), il faut exclure les montants dont la nature comptable (en colonne G) est 1988.

L'exemple était à peu près clair ...

Ci-joint une nouvelle version à tester.

Bouben

EDIT : je pense que la modif concerne les montants ET les quantités, les lignes sont à exclure pour le total de la colonne H (montant) et de la colonne O (quantité).

Ce qui explique les incohérences dans le fichier V0.43 => à revoir

Ci-joint la version V0.44.

Les quantités et montants excluent 1988.

A tester

Bouben

maintenant tout est nickel sauf H28 je ne voulais pas changer dans les montants mais juste les quantités

H28 restera la même que H29

je voulais juste exclure les quantités dont la nature comptable est 1988 c'est tout...les montants je voulais garder la même formule

Rechercher des sujets similaires à "repartition montant tableau modification code vba"