Création d'une référence XLAM

Bonsoir le forum,

Voilà je galères depuis quelques jours pour essayer de créer un fichier XLAM qui serve de reférence.

Mon fichier model_ command contient toute les macros dont j'ai besoin pour le bon fonctionnement du fichier. Ce fichier sert de base pour tous les fichiers filles (22 au total) . J'aurai aimé pouvoir transférer l'ensemble des macros contenus dans mon model vers une référence... afin de n'avoir aucune macro dans les fichiers filles ( pour faires des mise à jour sans ouvrir les 22 fichier filles mais c'est la que tous ce complique, j'ai beau avoir suivi 4 ou 5 tutos que ca marche toujours pas....

Le fichier xlam s'associe bien mais je n'arrive pas à créer le pseudo modul " reference"

Les macros sont :

  • Dans les deux modules main et ruban,
  • L'onglet bienvenue
  • ThisWorkbook

Pour revenir à l'affichage classique d'excel bouton ----> "Excel Classique" mdp : xx

Si vous savez faire ca je veux bien un coup de pousse et quelques explications, je déprime

Cela devrai pouvoir mettre utile pour piloter à distance les fichiers filles avec un classeur que je suis en train de concevoir.

127model-command.xlsm (341.73 Ko)

Bonjour,

Pour revenir à l'affichage classique d'excel bouton ----> "Excel Classique" mdp : xx

Comment ça ?

Si tu t'amuses à modifier l'environnement met ta macro thisworkbook_open en commentaire.

Toujours à faire pour un fichier d'aide. Tu le spécifies, on peut voir ce qu'il y a dedans et si on le lance ou pas.

Personne n'a envie de passer 1h à remettre en état son excel à cause d'un apprenti sorcier. Perso je ne télécharge pas...

Enfin c'est bien, tu en as parlé au moins.

Ceci dit, je ne comprend pas bien ce que tu entends par pseudo modul " reference" (?!?)

Un xlam n'affiche aucune feuille, alors la feuille Bienvenue...

Et il se chargera systématiquement même si tu travailles sur d'autres fichiers.

C'est dans ce cas une consommation de ressources inutile (c'est pourquoi je les évite au maximum). 'Fait un fichier normal', xlsm que tu ouvres quand tu en as besoin.

eric

Bonsoir Eriiic,

Domage Argghh,

Bon alors mon thisworkbook_open contient juste l'ouverture vers l'onglet bienvenue...et la désactivation du verrouillage des onglets via le bouton excel classique dont le mdp est xx (Astuce que j'ai piqué à galopin) aucun risque le ruban n'est pas permanant et n est effectif que sur le fichier joint

Private Sub Workbook_Open()
Application.ScreenUpdating = False
For cptr = 1 To ThisWorkbook.Sheets.Count
        Sheets(1).visible = xlSheetVisible
        If Sheets(cptr).Name <> "Bienvenue" Then
            Sheets(cptr).visible = xlSheetVisible
            On Error Resume Next
            Sheets(cptr).Columns("A:W").EntireColumn.Hidden = False
            Sheets(cptr).visible = 0
        End If
Next
Locked_all
Application.ScreenUpdating = True
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim a As String
a = ActiveSheet.Name
    If YMASK Then
    Sheets(a).Unprotect 'Password:="xx"
    Else
    On Error Resume Next
    Sheets(a).Protect 'Password:="xx"
    End If
Cells(1, 1).Select
End Sub

Donc grosso modo le seul risque en telechargeant est un gros fous rire en voyant mon code...lol

J'ai récupérer il y a quelques temps un fichier qui utilisait un xlam qui se balade avec le xlsm sans avoir à l'installé via " Gérer les compléments Excel" dans ce fichier il y a un pseudo module "réference" cf image fichier joint

Et j'aimerai pouvoir faire la même chose pouvoir mettre mon xlam en référence dans un répertoire commun pour que les 22 fichiers filles pointes vers ce fichier. pour ne pas avoir à passer par sur tous les postes (150 utilisateur environs :s) et surtout de n'avoir à modifier que le xlam pour d'eventuelle ajout de bouton/ macro sans avoir à tous réinstaller.

Je ne suis pas certain d'etre claire mais j'aurai essayer

capture

Tes fichiers ne pointeront pas dessus. Les macros leurs seront disponibles

'Enregistrer sous...' ton xlsm en choisissant le type *.xlam dans la liste déroulante et c'est fait. Il s'enregistrera au bon endroit pour s'ouvrir à chaque lancement d'excel.

eric

PS : je viens de voir dans un répertoire commun

Dans les options avancées 'Général' tu as un champ à remplir 'ouvrir tous les fichiers de ce répertoire'

Reste à voir si ça fonctionne sur un lecteur réseau, et ça sera à faire sur chaque poste.

j'ai déjà fait le enregistrer sous...le xlam s'enregistre directement dans c: user\....Addins

et je l'active par gérer les macro complémentaires.

Mais le but c'est de pouvoir le mettre sur un réseau.

Les fichiers xlsm et xlam que j'utilise donne ceci

capture capture2

et n'apparait pas dans la gestion Macro complétaire, contrairement au mien qui pointe systématiquement vers c\user...même si je le charge depuis un autre repertoire

alors que par le enregistrer sous..; que je réalise mon arborescence est

capture3

[Edit ] Des photos du message précédant

J'avais ajouté un PS que tu n'as pas dû voir.

eric

bonjour à tous

relire https://forum.excel-pratique.com/viewtopic.php?f=10&t=116130

et surtout qu'il ne faut pas dépasser 4 fichiers

pourquoi ?

parce que passé 4 fichiers Excel, c'est signe qu'on travaille comme en 1970 avec des classeurs à levier et des feuilles de papier

il est vraissemblables que les 22 fichiers sont identiques, et qu'il faut alors les regrouper en un seul, sur un seul onglet.

et tout devient alors si simple

plus besoin de VBA, presque plus de formules non plus !

Excel est quelque peu différent des classeurs à levier

bon travail et amitiés à tous

Les 22 fichiers contiennent evidemment des données différentes, mais la structure est la même. j'avais bien pensée gérer cela avec un seul fichier mais pour des raisons de confidencialité (que je trouves obcure vu que c'est un fichier de commande )il m'as été interdit par le systeme d'information et par mon chef de service de travailler ainsi. On est tombé d'accord sur un modele unique....

par eriiic » Aujourd’hui, 10:45

J'avais ajouté un PS que tu n'as pas dû voir.

eric

Effectivement je l'ai vu bien apres ma reponse je test vca dès que je peux

Les 22 fichiers contiennent evidemment des données différentes, mais la structure est la même. j'avais bien pensée gérer cela avec un seul fichier mais pour des raisons de confidencialité (que je trouves obcure vu que c'est un fichier de commande )il m'as été interdit par le systeme d'information et par mon chef de service de travailler ainsi. On est tombé d'accord sur un modele unique....

re

tu reçois tes ordres de personnes qui ne connaissent ni l'informatique ni Excel

comme si j'ordonnais à mon garagiste de serrer les boulons de ma voiture à ma manière.... dans 3 mois la roue...

bon courage !

amitiés

quoique si tu fais un seul fichier, et que par queries régulières tu leur fait 22 fichiers extraits ?

?

Surtout que je fais à coté de ma fonction de cadre qui n'a rien a voir avec le dev de fichier/ prog sous excel, mais bon j'aimerai bien comprendre comment il a fait le bioinformaticien pour faire apparaitre le dossier reférence

Bonsoir le forum,

Bon à défaut de réussir à faire correctement ma référence vers le xlam j'ai parasité le fichier exemple que j'avais. j'ai dans le xlms j'ai dégagé les onglet initiaux pour mettre les miens, et degagé les macro du xlam pour y mettre les miennes ( humm je sens que les puristes se regalent... )

Bref j'obtiens à peu pret ce que je voulais. par contre mes macro dans le xlam bug dans les parties de code

 For Each WS In ThisWorkbook.Worksheets

Le Thisworkbook pointe alors vers le classeur xlam et non plus sur le xlsm

du coup dans le thisworkbook du xlsm j'essais de capter le nom du classeur à l'ouverture

Public YName As Boolean
Public YMASK As Boolean
Public Sub Workbook_Open()
Dim wb As Workbook
a = ThisWorkbook.Name
YName = a ' <--------------------------------------------------------Ici le petit nom
Application.ScreenUpdating = False
For cptr = 1 To ThisWorkbook.Sheets.Count
        Sheets(1).Visible = xlSheetVisible
        If Sheets(cptr).Name <> "Bienvenue" Then
            Sheets(cptr).Visible = xlSheetVisible
            On Error Resume Next
            Sheets(cptr).Columns("A:W").EntireColumn.Hidden = False
            Sheets(cptr).Visible = 0
        End If
Next
Locked_all
Set wb = Workbook.Sheets("Bienvenue")
Application.ScreenUpdating = True
End Sub

mais évidement comme YName est booleen retourne vrai ou faux.... je dois pas être sur la bonne route.

Comment puis je recuper la valeur du classeur ouvert pour que mes macros du xlam puisse pointer vers le xlsm ouvert....

Je vous laisse quand meme 3 fichiers

Le xlam, et son xlsm et le fichier original avant de devenir le xlam

pour associer le xlam et le xlsm dans le vba project du Modele.xlsm dans reference ajouter avec parcourir le xlam sauvegarder les deux fichiers sous vba project. fermer excel et rouvrir le modele. Normalement le xlam est attaché au xlsm.

Si vous avez des idées pour résoudre ce probleme.

Merci

35modele-commande.xlsm (330.83 Ko)
28original.xlsm (341.73 Ko)

Bonjour,

comme dit dans mon premier post où je te laissais entendre que ta feuille Bienvenue ne servirait à rien vu que personne ne pourra la voir, un xlam n'a pas de feuille (comprendre pas de feuilles accessibles).

Tu ne peux pas travailler avec, à moins de passer sa propriété IsAddin à False. Mais alors là ce n'est plus vraiment un xlam. Et dès que tu rétabliras IsAddin à True tu ne verras plus à nouveau les feuilles...

Et on ne voit toujours pas où tu fais le lien avec les 22 autres fichiers.

eric

Bonsoir Eriic,

Donc si je laisse mes feuilles dans le xlms ( comme dans le fichier joint) je devrais pouvoir récupérer la valeur du classeur ouvert??

Cf code du thisworkbooks du msg précedent. qui est bien dans mon xlsm Modele

Donc à partir de là la référence du classeur est recuperable par les macro du xlam ( la je suis en terre inconnue)?

Et encore merci de prendre le temps de suivre le fil !

Oui, un xlsm tu peux utiliser et consulter ses feuilles librement, pas un xlam.

Que ce soit clair, ThisWorkbook est le fichier contenant la macro.

Donc à partir de là la référence du classeur est recuperable par les macro du xlam

Ta question n'est pas claire.

Oui, un xlsm tu peux utiliser et consulter ses feuilles librement, pas un xlam.

Que ce soit clair, ThisWorkbook est le fichier contenant la macro.

Donc à partir de là la référence du classeur est recuperable par les macro du xlam

Ta question n'est pas claire.

Et non c'estait pas aussi claire que ca et tu as bien fait de poser la question, car j'ai resolus l'ensemble de mes problemes grace à cette petite phrase....

Pour faire simple selon les postes je parlais indiférement de la " feuille thisworkbook" à la racine de tout classeur ou de "l'"objet?? "thisworkbook. comme dans for each XX in Thisworkbook

Du coup la nuit portant conseil, en reprenant mes macro du xlam j'ai remplacer tout les objets Thisworkbook par Activeworbook.

Et le Activeworkbook ne peut faire réference qu'au xlsm car le xlam est "inactif".

De meme pour les worksheets transformés en activesheet, et le tour était jouer.

Deplus par erreur j'ai réussi à créer la reference entre le fichier xlam et xlsm il suffit de recuperer le xlam du c:\user...... et de le copier dans un autre repertoire, et via le vba project du fichier xmls dans reference -le bouton parcourir - tout type de fichier *.*, selectionner le xlam pour créer une réference entre les deux fichiers.

Un grand merci ca me donne envie de faire un tuto pour les xlam, car ce que j'ai trouver sur le net font reference à la methode Windows....via gerer les complement et sont donc actif pour tous les fichiers. Sais tu quels moderateur gere ca sur excel pratique?

j'espères que mes explications sont compréhensibles car je n''ai pas toujours le bon vocabulaire....

Je valide

Encore un grand Merci à Eriiic et jmd qui ont eu le courrage de suivre le fil.

A bientôt

Bonjour,

c'est Sébastien : https://forum.excel-pratique.com/memberlist.php?mode=viewprofile&u=2&sid=9b712ab3fb48342fc6cfdfd1bf484617

Mais je ne suis pas sûr que tu sois prêt...

Si tu avais expliqué plus clairement, il y avait peut-être une solution simple.

eric

Bonjour,

c'est Sébastien : https://forum.excel-pratique.com/memberlist.php?mode=viewprofile&u=2&sid=9b712ab3fb48342fc6cfdfd1bf484617

Mais je ne suis pas sûr que tu sois prêt...

Si tu avais expliqué plus clairement, il y avait peut-être une solution simple.

eric

Merci,

Effectivement je galères bien encore, je suis dans l'ajout d'onglet supplémentaire sur un fichier fille avec une macro dans le xlam lancé depuis le fichier mère....

Mais je ferais un nouveau sujet le moment venu, je vais me battre encore quelques jours !!

Rechercher des sujets similaires à "creation reference xlam"