Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Conception
Conception Questions relatives à la conception d'un classeur Excel (structure, organisation, protection, sécurisation, ...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/02/2011, 11h18   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 22
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2007
Messages : 22
Points : 10
Points : 10
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!!
steph6499 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 14h02   #2
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 22
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2007
Messages : 22
Points : 10
Points : 10
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.
steph6499 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2011, 09h09   #3
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h23.


 
 
 
 
Partenaires

Hébergement Web