Skip to content

programme

PasRP-Theo edited this page Dec 13, 2024 · 3 revisions
import os
import csv
import pandas as pd

# Fonction pour charger les fichiers CSV
def load_csv_files(directory):
    print("Chargement des fichiers CSV...")
    all_data = []
    for filename in os.listdir(directory):
        if filename.endswith('.csv'):
            filepath = os.path.join(directory, filename)
            print(f"Chargement du fichier: {filename}")
            try:
                data = pd.read_csv(filepath, encoding="latin1")  # Ajout de l'encodage latin1
                data['Source File'] = filename
                all_data.append(data)
            except Exception as e:
                print(f"Erreur lors du chargement de {filename}: {e}")
    if all_data:
        return pd.concat(all_data, ignore_index=True)
    else:
        print("Aucun fichier CSV trouvé dans le répertoire.")
        return pd.DataFrame()

# Fonction pour afficher un menu interactif
def show_menu():
    print("\n=== Gestionnaire d'Inventaire ===")
    print("1. Rechercher un produit")
    print("2. Filtrer par catégorie")
    print("3. Rechercher par plage de prix")
    print("4. Générer un rapport récapitulatif")
    print("5. Quitter")

# Fonction pour rechercher un produit
def search_product(data):
    query = input("Entrez le nom du produit ou un mot-clé: ").lower()
    results = data[data['nom du produit'].str.contains(query, case=False, na=False)]
    if not results.empty:
        print(results)
    else:
        print("Aucun produit trouvé.")

# Fonction pour filtrer par catégorie
def filter_by_category(data):
    category = input("Entrez la catégorie: ").lower()
    results = data[data['catégorie'].str.contains(category, case=False, na=False)]
    if not results.empty:
        print(results)
    else:
        print("Aucun produit trouvé dans cette catégorie.")

# Fonction pour rechercher par plage de prix
def filter_by_price(data):
    try:
        min_price = float(input("Entrez le prix minimum: "))
        max_price = float(input("Entrez le prix maximum: "))
        results = data[(data['prix unitaire'] >= min_price) & (data['prix unitaire'] <= max_price)]
        if not results.empty:
            print(results)
        else:
            print("Aucun produit trouvé dans cette plage de prix.")
    except ValueError:
        print("Veuillez entrer des valeurs numériques valides pour les prix.")

# Fonction pour générer un rapport récapitulatif
def generate_report(data):
    summary = data.groupby('catégorie').agg({
        'quantité': 'sum',
        'prix unitaire': 'mean'
    }).rename(columns={
        'quantité': 'Total Quantité',
        'prix unitaire': 'Prix Moyen'
    })
    print("\n=== Rapport Récapitulatif ===")
    print(summary)

    export = input("Voulez-vous exporter ce rapport en CSV ? (o/n): ").lower()
    if export == 'o':
        output_path = input("Entrez le chemin pour enregistrer le fichier (par ex: rapport.csv): ")
        summary.to_csv(output_path)
        print(f"Rapport exporté avec succès vers {output_path}.")
    else:
        print("Exportation annulée.")

# Main
if __name__ == "__main__":
    data_dir = input("Entrez le chemin du répertoire contenant les fichiers CSV: ")
    inventory_data = load_csv_files(data_dir)

    if not inventory_data.empty:
        while True:
            show_menu()
            choice = input("Votre choix: ")
            if choice == "1":
                search_product(inventory_data)
            elif choice == "2":
                filter_by_category(inventory_data)
            elif choice == "3":
                filter_by_price(inventory_data)
            elif choice == "4":
                generate_report(inventory_data)
            elif choice == "5":
                print("Merci d'avoir utilisé le Gestionnaire d'Inventaire. Au revoir !")
                break
            else:
                print("Choix invalide. Veuillez réessayer.")
    else:
        print("Aucune donnée à traiter. Fin du programme.")

Clone this wiki locally