Bonjour a Tous,
Quel format d'enregistrement de classeur est le plus adapté à mon problème ?
Après plusieurs années d'utilisation de VBA, je suis devant une impasse (ou un truc que je ne sais pas).
J'ai un classeur qui contient des données descriptives, saisies par les uns ou simplement lisibles par les autres, rangées en ligne, sur plusieurs colonnes. En lui même, ce classeur est facilement accessible et partageable par plusieurs clients : le client ouvre le classeur partagé, récupère les données, le referme, et c'est tout.
Pour éviter d'avoir à décrire le schéma de rangement, je voudrais associer à ce classeur, soit dans un module, soit sur la feuille de données elle-même, des macros primitives de lecture et/ou création du genre GetCell ou GetLigne ou DelLigne ou CreaLigne... . Bref, ce qui permet de manipuler les données sans avoir besoin de savoir comment elles sont rangées.
Ces macros fonctionnent bien en test quand je suis dans le classeur qui les contient, mais je n'arrive pas à les faire utiliser depuis un autre classeur client. J'ai des erreurs soit de ''compilation'', soit d'exécution du genre ''sub ou function non défini'' ou ''.... non supporté''.
Elles sont ''public'' dans le module du classeur commun, mais elles sont/devraient être appelées depuis un ''private sub'' du UserForm client qui les demande (voir image). J'ai essayé de les préfixer par le nom du module, de la feuille de données ou du projet > négatif.
En fait, je me dis que les modules présents (les macros déclarées) dans un projet (le classeur de données à partager) ne sont pas vus/visibles depuis les modules (macros, forms) exécutées depuis un autre projet, alors que/même si les deux projets sont ouverts simultanément .
La première solution consiste à recopier les primitives d'accès dans chacun des projets clients (il y a différents projets qui se partagent la même source d'information) chez chacun des utilisateurs (qui peut avoir son propre développement), mais cela veut dire N maintenances si l'organisation des données change.
La seconde serait de trouver le BON format d'enregistrement supporté par XL2010 (y'en a encore !!) qui permette de faire :
faut-il XLSM, XLSX, XLjesaispas ....., XLW ou XLM (non, je blague, on a abandonné Multiplan !!) ?
Ou une nouvelle classe de sub/function, un external ou superpublic en tête de module, ... ?
Une solution extrème serait une base de données Access centrale !!!! ....
J'ai vu aussi le tuto de Silkyroad (https://silkyroad.developpez.com/vba/fonctions/#LII-B-1 >> V. Rendre une fonction opérationnelle dès l'ouverture d'Excel ) mais l'utilisation des macros complémentaires (xlam / addins) suppose une contrainte de mise à jour sur le poste/l'installation Excel du client, qui revient à diffuser partout les primitives.
Je voudrais éviter du DDE ou de l'OLE, et pouvoir partager le classeur commun avec simplement du ''Classeur.Ouvrir ... ''.
Merci a tous,
Caramel13 / JFG
![]()
Partager