La gestion des stocks est un élément crucial dans la gestion d’une entreprise, car elle permet d’assurer la disponibilité des produits tout en minimisant les coûts associés. Cet article vous guidera à travers les concepts clés de la gestion des stocks, les formules essentielles, et vous proposera des exercices pratiques avec des solutions détaillées.
La gestion des stocks consiste à superviser l’approvisionnement, le stockage, et la distribution des produits. Une gestion efficace des stocks permet de maintenir un équilibre entre la satisfaction des besoins des clients et la réduction des coûts de stockage.
La QEC est la quantité optimale à commander pour minimiser les coûts totaux de stockage et de commande.
# Quantité Économique de Commande (QEC)
from math import sqrt
D = 1000 # Demande annuelle en unités
C = 50 # Coût de passation d'une commande en monnaie locale
H = 2 # Coût de stockage unitaire annuel en monnaie locale
QEC = sqrt((2 * D * C) / H)
print("La Quantité Économique de Commande est:", QEC)
Interprétation : La QEC indique combien de produits commander à chaque fois pour minimiser les coûts.
Le PR détermine le niveau de stock auquel une nouvelle commande doit être passée.
# Point de Réapprovisionnement (PR)
d = 10 # Demande journalière moyenne en unités
L = 5 # Délai de livraison en jours
SS = 50 # Stock de sécurité
PR = (d * L) + SS
print("Le Point de Réapprovisionnement est:", PR)
Interprétation : Lorsque le stock atteint le PR, une nouvelle commande doit être passée pour éviter la rupture de stock.
Le stock de sécurité est le stock supplémentaire pour prévenir les ruptures de stock dues aux incertitudes.
# Stock de Sécurité (SS)
d_std = 2 # Écart-type de la demande journalière
L_std = 1 # Écart-type du délai de livraison
z = 1.65 # Facteur de sécurité (niveau de service de 95%)
SS = z * sqrt((L * d_std**2) + (d**2 * L_std**2))
print("Le Stock de Sécurité est:", SS)
Interprétation : Le SS garantit que l’entreprise peut répondre à la demande même en cas de fluctuations.
Énoncé : Une entreprise a une demande annuelle de 2000 unités pour un produit. Le coût de passation d’une commande est de 40 unités monétaires, et le coût de stockage unitaire est de 1 unité monétaire par an. Calculez la QEC.
# Solution
D = 2000 # Demande annuelle en unités
C = 40 # Coût de passation d'une commande
H = 1 # Coût de stockage unitaire annuel
QEC = sqrt((2 * D * C) / H)
print("La Quantité Économique de Commande est:", QEC)
Réponse : La QEC est de 400 unités.
Énoncé : Un produit a une demande journalière moyenne de 15 unités, un délai de livraison de 4 jours, et un stock de sécurité de 60 unités. Calculez le point de réapprovisionnement.
# Solution
d = 15 # Demande journalière moyenne en unités
L = 4 # Délai de livraison en jours
SS = 60 # Stock de sécurité
PR = (d * L) + SS
print("Le Point de Réapprovisionnement est:", PR)
Réponse : Le point de réapprovisionnement est de 120 unités.
Énoncé : Pour un produit, l’écart-type de la demande journalière est de 5 unités et celui du délai de livraison est de 2 jours. Le délai de livraison est de 3 jours, et la demande journalière moyenne est de 20 unités. Le facteur de sécurité est de 1,96 (niveau de service de 97,5%). Calculez le stock de sécurité.
# Solution
d_std = 5 # Écart-type de la demande journalière
L_std = 2 # Écart-type du délai de livraison
z = 1.96 # Facteur de sécurité (niveau de service de 97,5%)
L = 3 # Délai de livraison en jours
d = 20 # Demande journalière moyenne
SS = z * sqrt((L * d_std**2) + (d**2 * L_std**2))
print("Le Stock de Sécurité est:", SS)
Réponse : Le stock de sécurité est de 39,2 unités.
Dans ce cas pratique, nous allons développer un petit script Python qui permet de gérer les stocks d’une entreprise. Le script inclura des fonctionnalités pour :
Vous gérez un petit entrepôt pour une entreprise de vente de produits électroniques. Chaque produit a une demande journalière moyenne, un délai de livraison spécifique, et un stock de sécurité calculé. Le script doit être capable de gérer plusieurs produits et effectuer les calculs de gestion de stock automatiquement.
Voici le code Python pour gérer ce cas pratique :
from math import sqrt
class Product:
def __init__(self, name, daily_demand, lead_time, order_cost, holding_cost, safety_stock):
self.name = name
self.daily_demand = daily_demand
self.lead_time = lead_time
self.order_cost = order_cost
self.holding_cost = holding_cost
self.safety_stock = safety_stock
self.current_stock = 0
def calculate_reorder_point(self):
reorder_point = (self.daily_demand * self.lead_time) + self.safety_stock
return reorder_point
def calculate_economic_order_quantity(self):
QEC = sqrt((2 * self.daily_demand * 365 * self.order_cost) / self.holding_cost)
return QEC
def update_stock(self, quantity):
self.current_stock += quantity
print(f"Stock mis à jour pour {self.name}: {self.current_stock} unités")
def check_stock(self):
reorder_point = self.calculate_reorder_point()
if self.current_stock <= reorder_point:
order_quantity = self.calculate_economic_order_quantity()
print(f"Commande automatique pour {self.name}: {order_quantity} unités")
self.update_stock(order_quantity)
else:
print(f"Stock suffisant pour {self.name}: {self.current_stock} unités")
# Exemple d'utilisation
# Initialisation des produits
product1 = Product(name="Téléphone", daily_demand=20, lead_time=5, order_cost=50, holding_cost=2, safety_stock=100)
product2 = Product(name="Tablette", daily_demand=10, lead_time=7, order_cost=40, holding_cost=3, safety_stock=50)
# Mise à jour du stock initial
product1.update_stock(200)
product2.update_stock(150)
# Vérification du stock et passage de commande si nécessaire
product1.check_stock()
product2.check_stock()
# Affichage des quantités économiques de commande (QEC)
print(f"Quantité Économique de Commande pour {product1.name}: {product1.calculate_economic_order_quantity()} unités")
print(f"Quantité Économique de Commande pour {product2.name}: {product2.calculate_economic_order_quantity()} unités")
Product
: Représente un produit dans l’entrepôt. Elle stocke les informations sur le produit telles que la demande journalière, le délai de livraison, le coût de commande, le coût de stockage, et le stock de sécurité.calculate_reorder_point()
: Calcule le point de réapprovisionnement pour le produit en fonction de la demande journalière, du délai de livraison, et du stock de sécurité.calculate_economic_order_quantity()
: Calcule la quantité économique de commande (QEC) pour minimiser les coûts de stockage et de commande.update_stock(quantity)
: Met à jour la quantité de stock pour le produit.check_stock()
: Vérifie si le stock actuel est inférieur au point de réapprovisionnement. Si oui, une commande est passée automatiquement.Téléphone
et Tablette
), leur stock est mis à jour, et le script vérifie si une commande doit être passée. Il affiche également les quantités économiques de commande pour chaque produit.Le script exécutera les opérations suivantes :
Ce script est un exemple simple mais puissant pour gérer efficacement les stocks dans une petite entreprise. Vous pouvez l’adapter pour ajouter des fonctionnalités supplémentaires telles que la gestion des fournisseurs, des alertes par email, ou une interface utilisateur.
Voici quelques sujets supplémentaires pour enrichir vos compétznces de gestion de stock en Python.
Dans une gestion de stock efficace, la relation avec les fournisseurs est cruciale. Les délais de livraison, la qualité des produits, et la fiabilité des fournisseurs jouent un rôle déterminant dans la gestion des stocks. Dans notre cas pratique, vous pouvez améliorer le script en ajoutant une gestion des fournisseurs pour chaque produit. Par exemple, vous pouvez stocker les informations du fournisseur, surveiller les délais de livraison réels par rapport aux délais prévus, et ajuster le stock de sécurité en fonction de la fiabilité du fournisseur.
class Supplier:
def __init__(self, name, reliability):
self.name = name
self.reliability = reliability # Ex: 95% de livraisons dans les délais
class ProductWithSupplier(Product):
def __init__(self, name, daily_demand, lead_time, order_cost, holding_cost, safety_stock, supplier):
super().__init__(name, daily_demand, lead_time, order_cost, holding_cost, safety_stock)
self.supplier = supplier
# Exemple d'utilisation
supplier1 = Supplier(name="Fournisseur A", reliability=0.95)
product_with_supplier = ProductWithSupplier(name="Ordinateur Portable", daily_demand=5, lead_time=10, order_cost=100, holding_cost=10, safety_stock=20, supplier=supplier1)
print(f"Produit: {product_with_supplier.name}, Fournisseur: {product_with_supplier.supplier.name}, Fiabilité: {product_with_supplier.supplier.reliability}")
Les pénuries de stock peuvent avoir des conséquences graves sur les opérations de l’entreprise, y compris des pertes de ventes et une insatisfaction des clients. Pour prévenir les pénuries, une entreprise doit adopter des stratégies d’approvisionnement efficaces telles que la commande anticipée, la diversification des sources d’approvisionnement, et l’utilisation de stocks de sécurité.
Dans le script Python, vous pouvez simuler une situation de pénurie et implémenter une stratégie pour y remédier. Par exemple, si un produit tombe en dessous de son point de réapprovisionnement, le système peut automatiquement passer une commande à un fournisseur alternatif ou activer un stock de réserve.
class ProductWithShortage(Product):
def handle_shortage(self):
if self.current_stock < self.calculate_reorder_point():
print(f"Attention: Pénurie de stock pour {self.name}. Activation du stock de réserve ou passage de commande urgente.")
# Simuler une commande urgente ou l'utilisation d'un stock de réserve
self.update_stock(self.safety_stock)
print(f"Stock mis à jour après pénurie pour {self.name}: {self.current_stock} unités")
# Exemple d'utilisation
product_shortage = ProductWithShortage(name="Imprimante", daily_demand=3, lead_time=4, order_cost=30, holding_cost=5, safety_stock=15)
product_shortage.update_stock(10)
product_shortage.handle_shortage()
L’un des principaux objectifs de la gestion des stocks est la minimisation des coûts, qui incluent les coûts de commande, les coûts de stockage, et les coûts de pénurie. Le modèle de la quantité économique de commande (QEC) est un outil puissant pour atteindre cet objectif, mais il ne doit pas être utilisé de manière isolée. L’entreprise doit également considérer d’autres facteurs tels que les remises pour volume, les fluctuations de la demande, et les coûts d’opportunité.
Vous pouvez enrichir le script Python en intégrant des modèles plus avancés pour l’optimisation des coûts, tels que le modèle de Wilson avec des remises pour volume ou la programmation linéaire pour minimiser les coûts totaux tout en respectant les contraintes opérationnelles.
class ProductWithDiscount(Product):
def calculate_discounted_economic_order_quantity(self, discount_rate):
original_qec = self.calculate_economic_order_quantity()
discounted_qec = original_qec * (1 - discount_rate)
return max(discounted_qec, original_qec)
# Exemple d'utilisation
product_discount = ProductWithDiscount(name="Scanner", daily_demand=4, lead_time=6, order_cost=25, holding_cost=3, safety_stock=10)
discount_rate = 0.10 # 10% de remise pour volume
print(f"QEC avec remise pour {product_discount.name}: {product_discount.calculate_discounted_economic_order_quantity(discount_rate)} unités")
La gestion des stocks ne doit pas seulement se baser sur les données historiques, mais aussi anticiper les changements dans la demande future. Pour ce faire, des techniques de prévision telles que la moyenne mobile, lissage exponentiel, ou encore les modèles ARIMA peuvent être intégrées dans le processus de gestion des stocks. Ces techniques permettent de rendre la gestion des stocks plus dynamique et réactive aux variations du marché.
Dans le script Python, vous pourriez implémenter une simple prévision de la demande basée sur une moyenne mobile et ajuster les niveaux de stock en conséquence.
import numpy as np
class ProductWithForecast(Product):
def forecast_demand(self, past_demand):
return np.mean(past_demand)
# Exemple d'utilisation
product_forecast = ProductWithForecast(name="Routeur", daily_demand=0, lead_time=5, order_cost=20, holding_cost=2, safety_stock=30)
past_demand = [12, 15, 13, 14, 16] # Historique des demandes
forecasted_demand = product_forecast.forecast_demand(past_demand)
print(f"Demande prévue pour {product_forecast.name}: {forecasted_demand} unités par jour")
Ces exemples de code offrent une vue plus complète de la gestion des stocks en intégrant des aspects tels que la gestion des fournisseurs, les stratégies d’approvisionnement, l’optimisation des coûts, et les prévisions de la demande. Ces éléments permettent de construire un système de gestion des stocks plus robuste et adaptable aux réalités du marché.
Voici une série d’exercices conçus pour perfectionner vos compétences Excel. Les corrigés sont inclus pour…
Excel offre plusieurs méthodes pour calculer une moyenne tout en tenant compte des filtres ou…
Excel propose plusieurs fonctions pour insérer ou manipuler la date actuelle. Voici les principales méthodes…
Lorsque des nombres sont stockés sous forme de texte dans Excel, ils ne peuvent pas…
Extraire uniquement les chiffres d'une cellule contenant du texte et des nombres mélangés est une…
Pour supprimer plusieurs caractères spécifiques (par exemple, des symboles, chiffres ou lettres indésirables) dans des…
This website uses cookies.