Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

question d'architecture pour les pros

3 réponses
Avatar
loko
désolé, mais debutant VBAexcelien , j'ai pleins de questions tordues, en tant que VBSixien.... En gros la question, c'est:

Comment utiliser les fonctionnalités d'une classe implantée dans un fichier fichierClasse.xls dans d'autres fichiers fichier1.xls , fichier2.xls, fichier3.xls.
Ceci sans importer 3 fois la classe dans chacun des fichiers.

Chez Monsieur VB6, je sais faire, ca s'appelle une DLL, un Active-X. Mais pour ce job, on m'a pas autorisé à ça (trop compliqué: les developpeurs/utilisateurs sont pas des lumières)


merci


----------------------------------------------------------------------------------------------
Si vous avez le courage, lisez la suite pour comprendre mein problematic...
----------------------------------------------------------------------------------------------

Ainsi donc, j'ai ein systeme un peu kâss-tete:

- un fichier central SGBD_Exec.xls : comporte des macro et boutons (le 1er onglet ) + diverses tables de references (les autres onglets).
- Il doit alimenter un statistiques.xls. Il le fait grace à une classe, CXLDB_Manager, qui se charge d'ouvrir divers fichiers en toute securité, faire des "pseudos-requetes" dans les "pseudo-tables ", etc...

Jusque la tout va bien, cad dans le sens :
SGBDExec.xls -----------CXLDB_Manager)---------> statistiques.xls

j'ai aussi un autre syst qui fonctionne pareil :
FormulaireDeclaratif.xls -------CXLDB_Manager)-----> declaratifsCommandes.xls

----------- AND NOW GENTLEWOMEN/MEN, ZE BIG KOUESTIONE ! -------------

statistique.xls contient qq aspects interactif qui oblige parfois à acceder directement aux fichiers extractionsCommandes.xls et cie. (Aie)
Je vais donc pas intégrer N fois ma classe dans N fichiers de macros différent car ca sera trop difficile à faire evoluer.
==> Y aurait-t-il un moyen de faire un fichier xls unique contenant cette classe, que n'importe quel fichier xls pourrait utiliser:
cad je dois donc dans statistiques.xls, pouvoir faire des new CXLDB_Manager et utiliser des méthodes avec des argument variés du genre : CXLDB_Manager.open("...\... \extractionsCommandes.xls", range("A1:Z100") , ... ) etc...

------- J'AI PENSE A DIVERSES CHOSES ---------- (pas con le mec !)

(1) - une DLL : ca serait l'ideal mais j'ai pô le droit....
(2) - un fichier xla ? Je connais pas bien les possibilités. Apparement difficile (?), car je dois transmettre des paramètres à mes fonction et créer des objets CXLDB_Manager
(3) - ADO+SQL : on m'a interdit d'utiliser (sniff)
(4) - des formules avec liaisons : on m'a interdit d'utiliser car c'est pas bien :
ca fait des formules ingérables du genre somme('chemin1[fichier1.xls]'Feuil1!A3;'chemin2[fichier2.xls]'Feuil1!F3,'chemin3[fichier3.xls]'Feuil1!F3, etc...)
(5) - j'ai vu qu'il existe ceci :
['SGBDExec.xls'!Module1.XLDB_NewAndOpen.("extractionsCommandes.xls","...")] ?
ca marche mais c'est pas souple (?) :
'SGBDExec.xls'!Module1.XLDB_NewAndOpen.(maVariable)] impossible
(6) - ou ca:
Application.Run("SGBDExec.xls!Module1.XLDB_NewAndOpen","extractionsCommandes.xls","...") ?
ca serait super mais j'arrive pas à lui transmettre des paramètres
(7) - ? Si vous arrivez à trouver une solution, je serais votre fidèle admirateur jusqu'à votre mort, et je vous suivrais partout...

Merci d'avoir tout lu...




NB pour (5) et (6) :

dans le Module1 de SGBDExec.xls:

Public Function XLDB_NewAndOpen(sFile As String, sTruc ...)

set oDBUtility=new CXLDB_Manager
NewAndOpen=oDBUtility.Open(sFile,sTruc,..)

End Function

3 réponses

Avatar
Stéphane Santon
Bonjour,

Les XLA. C'est juste un .xls enregistré sous .xla et qui est accessible
à tous les classeurs.

Comment utiliser les fonctionnalités d'une classe implantée dans un fichier fichierClasse.xls dans d'autres fichiers fichier1.xls , fichier2.xls, fichier3.xls.


--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.

Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime

Avatar
Stéphane Santon
Bonjour,

Mais peut-on vraiment lui transmettre des arguments divers/complexe du genre: string range et cie.... et par reference ?


Je ne connais aucune limitation d'un xla par rapport à un xls.
On peut donc TOUT faire.
Ensuite, c'est une question de réflexion à la base de la conception.
L'expérience aidant.

et en plus, j'ai essayé de mettre un argument du genre sub Macro2(i as integer). d'enregistrer sous xla puis de cocher la macro complémentaire. (c'est bien comme ca qu'on manipule un xla).
et ca mon Excel 2003, il aime pas trop.


Et que raconte-t-il ?
Tu veux faire une fonction personnalisée ??


en tout cas, il veut pas faire un bouton personalisé avec Macro1. Avec sub Macro1(), il prend car y pas d'arguments.


C'est à dire ??

Quelle sont les possibilités exacte des xla ?


TOUTES.
Méthodes de classe, appels de DLL, UserForms, affichage par raccourci
clavier, ...

si il y a une possiblité de passer des integer et des string dans les macros, ca serait deja bien. je me debrouillerai avec.....


Il faut potasser dans ce sens.

--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.

Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime

Avatar
Frédéric Sigonneau
Bonjour,

et en plus, j'ai essayé de mettre un argument du genre sub Macro2(i as
integer). d'enregistrer sous xla puis de cocher la macro complémentaire. (c'est

bien comme ca qu'on manipule un xla).
et ca mon Excel 2003, il aime pas trop. en tout cas, il veut pas faire un
bouton personalisé avec Macro1. Avec sub Macro1(), il prend car y pas d'arguments.


Tu peux parfaitement affecter une macro avec 1 ou plusieurs arguments à un
bouton personnalisé mais ça n'a pas, AMA, grand'intérêt dans la mesure où la
syntaxe demande une constante. Pour l'anecdote, avec cette macro :

Sub Macro1(i As Integer, s As String)
MsgBox s & ":" & i
End Sub

pour l'affecter à un bouton personnalisé, tu saisis dans la boite de dialogue
'Affecter une macro' :

'Macro1 2,"test"'

(les simples quotes sont obligatoires)

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !

je connais un peu.
apparement avec ca, on pourrait appeler de n'importe quel xls ouvert une macro, donc une fonction publique, du genre 'macro_insererTexte' par ex
Mais peut-on vraiment lui transmettre des arguments divers/complexe du genre: string range et cie.... et par reference ?

deja d'apres l'aide, j'ai l'impression qu'on peut pas transmettre des objet, et rien par ref

et en plus, j'ai essayé de mettre un argument du genre sub Macro2(i as integer). d'enregistrer sous xla puis de cocher la macro complémentaire. (c'est bien comme ca qu'on manipule un xla).
et ca mon Excel 2003, il aime pas trop. en tout cas, il veut pas faire un bouton personalisé avec Macro1. Avec sub Macro1(), il prend car y pas d'arguments.


Quelle sont les possibilités exacte des xla ?

si il y a une possiblité de passer des integer et des string dans les macros, ca serait deja bien. je me debrouillerai avec.....

merci






Bonjour,

Les XLA. C'est juste un .xls enregistré sous .xla et qui est accessible
à tous les classeurs.


Comment utiliser les fonctionnalités d'une classe implantée dans un fichier fichierClasse.xls dans d'autres fichiers fichier1.xls , fichier2.xls, fichier3.xls.


--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.

Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime