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

Conception Discussion :

Gestion d'une macro par utilisateur


Sujet :

Conception

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut Gestion d'une macro par utilisateur
    Bonjour à tous!

    Je travaille sur un fichier de contrôle de gestion sur lequel j'ai créé une macro qui permet d'alimenter plusieurs feuilles à partir d'autres feuilles.
    Plus précisément, toujours dans le même classeur :
    - j'ai une dizaine de feuilles contenant chacune le même tableau de synthèse : une feuille pour chaque produit (le tableau représente tous les détails de facturation, selon divers types de contrat...)
    - à côté 5 ou 6 onglets, eux totalement différents les uns des autres : certains récupèrent les factures dans un tableau Excel via une requête SAP, d'autres sont des tableaux créés par l'utilisateur...

    Ma macro, suivant plusieurs critères et pour chaque tableau de synthèse, récupère les données de plusieurs colonnes (quantité et montant) et va l'alimenter dans chaque cellule de chaque tableau de synthèse.
    Pour l'instant, elle est gérée dans un onglet "MAJ_données" contenant 2 tableaux :
    - l'un, de 2 colonnes et d'une dizaine de ligne, contient les produits et leur code, pour que la macro sache dans quel tableau de synthèse elle place les données pour tel ou tel produit
    - l'autre, plus gros, contient une ligne par catégorie alimentée, et en face, précise : le ou les onglet(s) où elle va chercher les données, quels "mots-clés" elle doit trouver dans chaque ligne de cet ou ces onglet(s) pour récupérer la quantité ou le montant, dans quelle(s) colonne(s) se trouve la ou les quantité(s) ou montant(s) à récupérer...

    Chaque catégorie a une procédure différente des autres pour être alimentée.
    Du coup, dans le tableau ci-dessus, j'ai très peu d'éléments et le reste se trouve dans la macro, donc s'il y un problème ou une modif à faire (je suis en cdd et ce fichier peut évoluer régulièrement), les personnes doivent accéder au code, ce que je souhaite éviter.

    J'ai donc créé un formulaire qui demande à l'utilisateur d'insérer pour chaque catégorie toutes les infos dont la macro a besoin pour que le code de celle-ci soit généraliste et toujours adapté au fichier même s'il évolue. Le souci est que dans ce cas, le formulaire présente toutes les infos dans le tableau "MAJ_données". Donc :
    - d'une part n'est pas très lisible, et si jamais j'ai plusieurs onglets de données avec pour chacun une grande quantité d'infos, le tableau se retrouve avec 10 ou 15 colonnes par onglets
    - d'autre part, si j'ai des infos que je concatène dans une cellule pour la lisibilité du lecteur, cela me donne plus de difficulté pour récupérer ces infos grâce à la macro...

    J'ai donc pensé qu'un tableau à 3 dimensions : catégories, infos de chaque catégorie et onglets de données (avec en 3eme dimension "catégories" puisque c'est elle qui sera redim à chaque ajout de données) serait plus efficace. Je pensais que d'un côté, il servirait à ma macro pour alimenter les données, et indépendamment il créerait un tableau dans Excel avec les données utiles à l'utilisateur et une meilleure lisibilité.
    Le problème c'est que mon tableau ne peut pas garder les données en mémoire à la fermeture de Excel.

    Comment réussir à faire gérer de manière simple ma macro par l'utilisateur lui-même, sans qu'il est besoin à chaque évolution du fichier d'aller dans le code, et que la macro puisse récupérer simplement toutes ces infos?
    Le fichier est déjà très lourd car contient des formules, des liaisons avec d'autres classeurs...

    Si quelqu'un a une idée de comment il s'y prendrait pour gérer tout cela, merci d'avance!!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    Re bonjour,

    J'ai conscience que mon explication reste un peu compliquée, mais si le fichier en question avec une structure simple, je ne serais pas là à me poser toutes ces questions. C'est pour çà que j'essaie le plus synthétiquement possible d'exposer toutes les contraintes de mon projet (et il yen a puisque le fichier n'a pas été créé en fonction de cette macro).

    Je reviens sur ma solution de variable tableau rempli par un formulaire, qui reste la solution la plus efficace (dans mon esprit) pour l'instant. Je souhaite qu'il conserve mes données (infos pour exécuter la macro) en permanence, ce qui n'est pas possible. Pour l'instant, j'avais dans l'idée (le code est déjà écrit et testé --> quelques bugs mais à revoir) de créer des tableaux dans des feuilles à la fermeture du classeur, contenant les données de ma variable tableau, puis de replacer ces données dans la variable tableau et de supprimer les feuilles à la réouverture. Mais le fait qu'un utilisateur n'ait pas toujours envie d'enregistrer à la fermeture d'un classeur ne rend pas possible cette idée.

    Alors pour rester dans cette idée-là, je me pose une question :
    sachant que mon tableau dynamique doit contenir 3 dimensions, si je place ces données au sein de feuilles Excel, il y aura approximativement au grand maximum 5 onglets contenant des tableaux de, disons 50 lignes et 40 colonnes (c'est vraiment au maximum). Pensez-vous que ces onglets en plus, s'ils sont cachés et contiennent ma "base de données" en permanence, alourdiront beaucoup mon fichier, ou cette solution peut-être envisageable?

    Merci de votre avis, ou de toutes autres idées.

  3. #3
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 132
    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 132
    Par défaut
    Salut
    Je n'ai bien sur pas tout compris ^^
    Je crois qu'un fichier demo va être nécessaire pour ne pas passer des heures à essayer de comprendre comment les différents tableaux s'imbriquent.

    Par contre
    Citation Envoyé par steph6499
    si j'ai des infos que je concatène dans une cellule pour la lisibilité du lecteur, cela me donne plus de difficulté pour récupérer ces infos grâce à la macro...
    Moi je suis pas de ton avis, si tu fais une concaténation intelligente avec un séparateur connu, qui ne risque pas de se retrouver dans les textes que tu concatènes, il est ensuite facile de récupérer toutes tes informations via la fonction vba Split, qui te crée un petit tableau contenant chaque éléments, un coup de F1 sur Split pour avoir plus de détailles.

    Sinon pour ton idée de stockage sur des onglets, pourquoi pas, mais c'est sur ça va faire enflé ton fichier, puisque tu vas inscrire une fois de plus les données déjà existantes mais réorganisées différemment. As tu plutôt réfléchis aux outils intégrés dans Excel, comme la consolidation de données et les tableaux croisés Dynamiques, je ne suis pas trop spécialiste de ce genre d'outils, mais je sais qu'ils existent, quelqu'un te fournira peut être plus d'infos à ce sujet.

    Si la structure de ton tableau n'est pas encore figé, il te reste l'option du forum Conception, où tu pourrais demander de l'aide, afin d'organiser au mieux tes données pour faciliter le traitement de celle-ci par la suite. Mais bon ça peut aboutir à une grosse remise en question et donc du temps de création...

    Autrement comme je te le disais plus haut, un fichier démo serait peut être intéressant, il faudra bien sur veiller a ne pas laisser d'infos sensible à l’intérieur.

    ++
    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. Réponses: 22
    Dernier message: 29/08/2006, 17h29
  2. Gestion accès au fichier par utilisateur
    Par Invité dans le forum Langage
    Réponses: 11
    Dernier message: 18/04/2006, 13h26
  3. autorisation et acces a une base par utilisateur
    Par azde7015 dans le forum Access
    Réponses: 1
    Dernier message: 09/02/2006, 17h08
  4. [session] gestion d'une session par fenetre de navigateur
    Par devtele dans le forum Développement Web en Java
    Réponses: 9
    Dernier message: 14/12/2005, 11h20
  5. Démarrage d'une macro par SQL Server
    Par PiercingDegree dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/09/2005, 10h13

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