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 :

VBA Additionner des sous-catégories selon un critère


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Apprenti Analyste Investissements
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Apprenti Analyste Investissements

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Par défaut VBA Additionner des sous-catégories selon un critère
    Bonjour,

    Je rencontre des difficultés sur un code VBA (je débute) et j'ai même un peu de mal à me formuler ce que je recherche...
    Le tableau se présente comme suit :

    Niveau de catégorie / Pondération
    1 /
    2 / 1
    2 /
    3 / 0.2
    3 / 0.2
    3 / 0.1
    2 / 1.5
    1 / 3

    Chaque ligne correspond à une catégorie ou sous-catégorie. Les niveaux vont de 1 à 6.
    A chaque niveau correspond un coefficient de pondération, lequel correspond à l'addition des coefficients des niveaux inférieurs s'il en existe.
    Le problème, c'est que je n'ai accès qu'aux coefficients les plus bas. Dans mon exemple, si le niveau "2" est le plus bas, j'aurais immédiatement son coefficient. Cependant, s'il existe un ou plusieurs niveaux "3", j'aurais leurs coefficients, qu'il faudra que j'additionne manuellement afin d'obtenir le coefficient du niveau "2", et de même pour remonter jusqu'au niveau "1".
    J'essaye donc de créer une macro qui va additionner automatiquement les pondérations de chaque sous-niveaux jusqu'à remonter au niveau "1" de chaque catégorie.

    Il faudrait donc que j'essaye d'expliquer à la Macro que pour chaque ligne de niveau "n" (ex : "1"), elle doit additionner les coefficients des lignes de niveau "n-1" (ex : "2"), ignorer les lignes de niveau "n-2" (ex : "3") qu'elle rencontrerait, puisqu'ils auront déjà été additionnés pour obtenir le niveau "n-1", et s'arrêter dès qu'elle rencontre une autre ligne de niveau "n" (ex : "1"), et recommencer à partir de là.

    Je ne connais que les fonctions les plus basiques du VBA et mon plus gros blocage consiste à expliquer à la macros quand est-ce qu'elle doit s'arrêter d'additionner et reprendre à zéro.

    Si vous avez des idées...

    Par avance merci !

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour,
    Je crois que tu cherche la somme ou autre calcul dans le cadre d'une relation père & fils comme un arborescence des coûts ou des équipements. A mon niveau de débutant en VBA Excel je laisse le développement de tel code au expert de ce super site mais j'intervient plutôt et si c'est possible à la codification elle même
    Il est possible de faire une codification intelligente ou tu oblige celui qui fera le saisie de sélectionner le Niveau 1 avant de sélectionner le niveau 2 et ainsi de suite ...comme ça vous pouvez calculer à n'importe quel stade et c'est plus simple que faire les calculs sur la base d'une arborescence de code
    Si c'est pas le cas mais vous cherchez des calculs à l'intersection de deux valeur et que les valeurs ne sont pas nombreuses pourquoi ne pas penser à une grille ??
    bonne continuation et désolé si cette réponse est en hors jeu
    si non avec plus d’éclaircissement vous arrivez à marquer le but

  3. #3
    Candidat au Club
    Homme Profil pro
    Apprenti Analyste Investissements
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Apprenti Analyste Investissements

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Par défaut
    Bonjour,

    J'ai un peu triché du coup comme la tâche était urgente, j'ai ajouté une colonne à côté du niveau de la catégorie, qui donne le niveau-père. (par exemple, pour un niveau "2", le niveau-père donné dans cette nouvelle colonne est "1")
    J'ai ensuite simplement fait une somme.si.ens en donnant comme critères 1) pour un niveau donné, additionner les pondérations des niveaux inférieurs dont le niveau-père correspond au niveau sélectionné 2) Uniquement lorsque la catégorie correspond également (je n'avais pas donné l’arborescence complète qui démarre en A.1. par exemple.)

    Pour donner un exemple, pour le niveau A.1.2., la somme.si.ens va additionner les pondérations de tous les niveaux 1.3. et faisant partie de la catégorie A.
    Ca a l'air de fonctionner comme ça en dépannage, mais c'est forcément moins propre puisque ça force à ajouter des colonnes qui vont permettre de décomposer les catégories. Du coup je reste à l'écoute d'une solution VBA pour optimiser ça

  4. #4
    Membre expérimenté
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2007
    Messages : 267
    Par défaut
    Citation Envoyé par ExcelApprentice Voir le message
    Pour donner un exemple, pour le niveau A.1.2., la somme.si.ens va additionner les pondérations de tous les niveaux 1.3. et faisant partie de la catégorie A.
    Ca a l'air de fonctionner comme ça en dépannage, mais c'est forcément moins propre puisque ça force à ajouter des colonnes qui vont permettre de décomposer les catégories. Du coup je reste à l'écoute d'une solution VBA pour optimiser ça
    Bonjour,

    J'ai vraiment du mal à me représenter comment tu as organisé tes données.

    Est il possible d'avoir une imp. écran du fichier actuellement et du résultat que tu attends ?

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    voir du coté enregistreur auto....c'est un outil formidable
    développeur/macro/enregistrer un macro
    ce que tu vas appliquer à la main sera traduit automatiquement à un macro

Discussions similaires

  1. [Toutes versions] Afficher des sous totaux selon plus critères
    Par solorac dans le forum Excel
    Réponses: 2
    Dernier message: 19/09/2016, 19h12
  2. rechercher dans sous formulaire selon 1 critère
    Par cilcemax dans le forum IHM
    Réponses: 2
    Dernier message: 05/02/2008, 18h05
  3. Réponses: 6
    Dernier message: 02/10/2007, 15h33
  4. Réponses: 5
    Dernier message: 18/09/2007, 10h12
  5. Supprimer des sous-dossiers selon des critères
    Par Dertron dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 18/01/2006, 14h33

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