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.
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
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
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
[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....
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
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 !!