Microsoft 365 Calculer automatiquement les prix d'un pack de plusieurs produits

PR06

XLDnaute Nouveau
Bonjour, nous avons un catalogue avec de très nombreuses références. Certains de nos produits sont des packs constitués d'une association de divers produits selon des formules différentes. Nous voudrions avoir une formule pour calculer le prix des packs car lors de changement des prix d'achat c'est long à faire.
Sur le fichier excel nous avons :
un exemple de prix unitaires lignes 3 à10
des packs de produits avec les 4 formules que nous utilisons.
le produit 3*2#BW10 est un pack de trois fois le produit 2#BW10
le produit 3*2#BW10+2#FKBW10 est un pack de trois fois le produit 2#BW10 + le produit 2#FKBW1

Nous avons calculé les prix en rouge mais nous aimerions avoir les formules pour calculer les prix.

Merci pour votre aide
 

Pièces jointes

  • Prix Packs.xlsx
    10.1 KB · Affichages: 27

Dudu2

XLDnaute Barbatruc
Bonjour,

Tu ne peux faire ça qu'avec un fonction personnalisée et donc du VBA.
J'ai créé une fonction personnalisée à laquelle on passe 2 paramètres:

- Le 1er sert à indiquer où se trouve le tableau des prix des articles, mais il sert surtout à indiquer à Excel la plage dont la modification provoquera le recalcul de la fonction personnalisée.
En l'occurrence j'ai transformé cette plage en tableau structuré qui devrait être la règle dans ce genre de situation pour ne pas avoir à gérer des plages par leurs numéros de cellules.

- Le 2ème est la composition du pack dont la syntaxe est décodée selon les exemples fournis.
C'est...
> soit le texte de la description du pack, par exemple:
=prixdupack(TableauProduits[#Données]; "2#ST10+2#ST12+2#ST14+2#FKST10")
> soit une référence à une cellule qui contient la description du pack, par exemple:
=prixdupack(TableauProduits[#Données];B13)

Si une erreur se produit dans le calcul (mauvaise syntaxe du pack, prix pas numérique, etc...) la fonction retourne un prix de -1.
 

Pièces jointes

  • Prix Packs.xlsm
    18.4 KB · Affichages: 6
Dernière édition:

Jacky67

XLDnaute Barbatruc
Bonjour, nous avons un catalogue avec de très nombreuses références. Certains de nos produits sont des packs constitués d'une association de divers produits selon des formules différentes. Nous voudrions avoir une formule pour calculer le prix des packs car lors de changement des prix d'achat c'est long à faire.
Sur le fichier excel nous avons :
un exemple de prix unitaires lignes 3 à10
des packs de produits avec les 4 formules que nous utilisons.
le produit 3*2#BW10 est un pack de trois fois le produit 2#BW10
le produit 3*2#BW10+2#FKBW10 est un pack de trois fois le produit 2#BW10 + le produit 2#FKBW1

Nous avons calculé les prix en rouge mais nous aimerions avoir les formules pour calculer les prix.

Merci pour votre aide
Bonjour à tous
Autre exemple sans vba
 

Pièces jointes

  • Prix Packs.xlsx
    15 KB · Affichages: 8

PR06

XLDnaute Nouveau
Bonsoir,
Dudu2, merci beaucoup ça fonctionne parfaitement. Je n'ai aucune idée de comment ça marche car je suis un néophyte mais c'est vraiment génial. Si tu peux m'expliquer un peu si c'est pas trop compliqué. Tu as fait une macro ? C'est quoi le VBA ?

Jacky67, je n'ai pas bien compris ce que je dois faire pour mes milliers de références. Ou je dois les mettre.

Merci à vous deux pour votre réactivité et votre aide
 

Dudu2

XLDnaute Barbatruc
Bonsoir,

Une fonction personnalisée est une fonction qu'on peut appeler par son nom tout comme les fonctions natives Excel (SOMME, NB.SI, etc...). En l'occurrence le nom est ici PrixDuPack.
La différence c'est que c'est une Macro (= programme) codée en VBA (dans la partie Projet VBA du classeur Alt+F11) et qui donc oblige le fichier Excel à avoir une extension .xlsm (m comme Macro).

Comme SOMME, par exemple =SOMME(A1:A10), elle utilise des paramètres qui permettent de lui envoyer des données qui lui sont utiles pour faire ce qu'elle a à faire, c'est à dire finalement renvoyer une valeur.
Par exemple =PrixDuPack(TableauProduits[#Données];B13) va renvoyer la valeur 51 que prendra donc la cellule qui a fait appel à cette fonction avec ces paramètres.
Tout comme =SOMME(A1:A10) va renvoyer 158 (si c'est la somme) que prendra la cellule qui a fait appel à cette fonction avec ce paramètre.

C'est celui qui code la fonction personnalisée qui sait de quels paramètres elle a besoin pour que cela fonctionne.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Si tu as des milliers de produits, il vaut mieux utiliser cette version qui met la table des produits en mémoire et donc sera plus rapide en cas de re-calcul de tous les packs.

On pourrait être encore plus rapide en gardant la table en mémoire en permanence mais cela imposerait de gérer sa mise à jour en cas de modification. On fera ça si nécessaire mais je ne le crois pas.
 

Pièces jointes

  • Prix Packs.xlsm
    18.4 KB · Affichages: 6

merinos

XLDnaute Accro
Bonjour merinos,
je dois rentrer manuellement le detail de chaque pack dans le tableau bleu ou il y a un automatisme ?. J'ai plus de 500 packs !
@PR06 ,

Tu disposes de la liste des packs sous quelle forme?

On peut faire un query a partir de n'importe quoi de structuré...

j'ai ajouté une seconde table de packs... et les 2 sources sont employées.
 

Pièces jointes

  • Prix Packs PQ.xlsx
    22.2 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 098
Messages
2 085 267
Membres
102 845
dernier inscrit
Baticle.geo