IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Classement structuré de données pour générer des sous totaux


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Février 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Février 2021
    Messages : 1
    Par défaut Classement structuré de données pour générer des sous totaux
    Bonjour a tous,

    Je suis sur un probléme insolvable depuis hier soir.

    J'ai á ma disposition une liste de piéces organisées en categories et sous catégories (voir image).

    Nom : 2021-02-11 09_36_49-190109-CIMARRON-Extrac Offre Regul-VDE102206 - Excel.png
Affichages : 88
Taille : 68,7 Ko

    En parralléle j'ai une colonne de 1 et de 0. J'aimerais, lorsque je place un 0, que le montant de le piéce de la meme ligne soit déduit du Total .

    Il s'agit en réalité d'options a ajouter a un devis. Le client peut choisir s'il désire ou non la piece en jouant avec les zeros.

    Voila mon probléme: Chaque piéce appartient a une catégorie N2, qui appartient a une categorie N1.

    J'aimerais que lorsque le client choisir de ne pas prendre l'option N1 (ou N2) dans son ensemble, toutes les piéces qui constituent cette option soit automatiquement basculée en 0.

    Autrement je risque d'avoir de nombreux doublons lorsque je ferais la somme ou le client, par exemple, choisit de ne pas prendre l'option N1, alors que certaines piéces seront encore prises en compte...

    J'espere avoir été claire. Ce fichier fait plus de 1000 lignes avec des N1 de taille variable. J'ai la tête dedans depuis hier et impossible de trouver une solution ! Toute suggestion sera donc bienvenue.

    Merci d'avance

    exempleforum.xlsx

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Je suivrais le raisonnement suivant si je devais faire un tel mécanisme

    Une colonne en plus cachée en colonne L par exemple.
    Dans cette colonne il faut regarder si la ligne @ est de type "N1", "N2" ou autre

    • si type N1, elle prend la valeur de la colonne K (choix client) cellule K@
    • Si type N2, il faut retrouver la ligne immédiatement supérieure de type "N1" et regarder sa valeur en colonne L
      • Si valeur à 1, on retourne le choix client de la ligne @
      • Si valeur à 0, on retourne 0

    • Si type autre, il faut retrouver la ligne immédiatement supérieure de type "C103" (N1 ou N2) et regarder sa valeur en colonne L
      • Si valeur à 1, on retourne le choix client de la ligne @
      • Si valeur à 0, on retourne 0



    Dans ton exemple, ça donnerait ça,
    • pour la ligne 6, en L6 :
      • type "N1"? -> Oui -> On retourne le choix client L6=K6=0

    • pour la ligne 7, en L7:
      • type N1? -> Non
      • type N2? -> Oui
      • On regarde la ligne de type "N1" immédiatement supérieur -> Ligne6: L6=0 donc L7=L6=0

    • pour la ligne 8, en L8:
      • typeN1 -> Non
      • type N2? -> Non
      • On regarde la ligne de type C103 (N1 ou N2) supérieure ->ligne 7, valeur L7=0 -> L8=L7=0



    C'est peut-être faisable avec un formule mais ça risque de ne pas être simple.

    [Edit]
    J'ai revu un peu ma démarche qui comportait des erreurs de raisonnement. Et la formule n'est pas si difficile à trouver (du moins si elle fait bien ce que tu veux ^^).

    Essai avec cette formule en L6:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI($B6="N1";$K6;SI($B6="  N2";INDIRECT("L"&(MAX(($B5:$B$6="N1")*LIGNE($B5:$B$6))));INDIRECT("L"&(MAX(($A5:$A$6="C103")*LIGNE($A5:$A$6)))))*$K6)
    C'est une formule matricielle, il te faudra valider son contenu par Ctrl+Maj+Entrée

    Il te suffit ensuite de l'étendre sur l'ensemble de la colonne L.

    Si tu as besoin d'explication sur la formule n'hésite pas à poser des questions. (Je ne suis pas sûr de repasser régulièrement mais je fait confiance à d'autre pour te l'expliquer si besoin... et peut-être même la simplifier, qui sait )

    Pour une meilleur lisibilité, tu peux ensuite mettre une MFC dans la colonne K qui passe le texte en couleur blanche quand la cellule L de la ligne est à 0 (je n'ai pas testé)
    [/Edit]

    Je te souhaite une bonne soirée
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. [AC-2016] pb pour générer des listes en cascade dans un sous formulaire
    Par havannah dans le forum IHM
    Réponses: 1
    Dernier message: 17/08/2018, 19h22
  2. Réponses: 4
    Dernier message: 08/01/2016, 12h28
  3. Réponses: 1
    Dernier message: 18/05/2006, 22h22
  4. [JFOR][RTF]Utilisation de jfor pour générer des RTF
    Par pistache42 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 28/04/2006, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo