Problème affectaion macro complémentaire

Bonjour à tous,

J'ai une difficulté sous VBA dont je n'arrive pas à ma dépatouiller malgré la lecture de divers sujets de forum.

Je suis sous excel 2007.

Au départ, j'avais créé un fichier XLSM contenant diverses macros.

Mais souhaitant pouvoir utiliser simultanément ce fichier à plusieurs, et ayant vu qu'a priori c'était difficile avec un fichier de macros, j'ai alors :

  • créé un fichier type XLA placé dans le même répertoire et contenant toutes les macros au sein d'un module. Je lui ai donné un petit nom , disons MACRO sous VBA via Outils / Propriétés...
  • enlevé les macros sur le fichier XLSM pour le transformer en XLSX.
Je souhaite donc pouvoir utiliser sur ce fichier XLSX les macros du XLA.

Jusque là, tout va bien.

J'ai ouvert les 2 nouveaux fichiers XLSX et XLA, puis sous VBA, je suis allé dans outils, référence et j'ai lié MACRO à mon fichier XLSX en cochant son nom.

Ca ca marche.

Mais, une fois que je ferme les fichiers et les ouvre de nouveau, le lien ne se fait plus. Si je recommence, ça marche, mais j'aimerais que ce lien soit permanent, sans devoir refaire la manip.

Je précise que j'ai testé divers codes placés sous le ThisWorkBook du XLA sans succès. Mais quelqu'un en a peut être un bien.

Et je rappelle que dans mon VBA MACRO, il y a en fait pleins de macros.

Enfin, dans les options EXCEL, Compléments, j'ai bien mis le VBA en compléments actifs.

En revanche sous VBA, rien n'apparait dans mon gestionnaire de compléments.

Des idées ?

Par avance merci !

Hopopop (enfin j'aimerai bien)

Bonjour,

ça veut dire quoi "utiliser simultanément ce fichier à plusieurs" ?

Chacun sur un ordinateur différent avec un serveur et des USER différents ? et au même instant T ?

En principe chacun doit posséder sa propre copie de la xla. sur son ordinateur.

Même si vous travaillez à plusieurs sur le même ordinateur mais avec des USER différents chacun doit avoir sa propre copie de la xla.

Je ne connais pas de système qui permettent d'utiliser la même xla par plusieurs utilisateurs sauf s'ils travaillent sur ton ordinateur avec ton identité... Je ne dis pas que c'est pas possible hein ! mais c'est pas le cas général...

C'est précautions oratoires étant faites, on va passer aux préliminaires :

Il faut déjà prévoir un original à ton xla. Ce fichier original sera le fichier source de toutes les xla que tu diffuseras.

Le fichier source de tes xla portera une extension .xlsm (par exemple source.xlsm.

C'est ce fichier source ou une copie de ce fichier source qui servira à installer toutes les xla sur les ordi de tes collaborateurs.

On commencera par supprimer tous les xla existants.

Le mode opératoire qui suit devra être observé sur chacun des postes et pour chaque "User" qui devront disposer de ces macros complémentaires.

A partir d'Excel ouvrir le fichier source.xlsm

1-Enregistrer le fichier sous... choisir l'extension .xlam (par exemple "TRAVAIL.xlam") et laisser Excel choisir ou il l'installe.

2-Quitter Excel sans rien faire d'autre. Je vous laisse choisir si le fichier source doit être supprimé de l'ordinateur de vos collaborateurs.

A mon avis c'est préférable, mébon...

3-Pour mettre en route TRAVAIL.xlam ouvrez Excel, dans le ruban, onglet Développeur cliquer Complément et cocher votre macro complémentaire. Celle-ci sera disponible pour tous les classeurs de la position de travail (tant que vous ne l'aurez pas décochée des compléments...)

Nota : il existe une autre manière de mettre à disposition votre classeur de macros complémentaires (si vous ne voulez pas que les macro complémentaires soient disponibles pour tous les classeurs...)

Dans ce cas vous ne la cochez pas dans les compléments.

Dans le classeur ou vous souhaitez qu'elle soit active vous collez l'instruction suivante dans le ThisWorkkbook :

Private Sub Workbook_Open()
   AddIns("TRAVAIL").Installed = True
End Sub

et son pendant :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   AddIns("TRAVAIL").Installed = False
End Sub

Cette dernière manière de faire ne doit être utilisée que si un seul classeur doit pouvoir disposer de cette fonctionnalité. En effet si plusieurs classeurs sont ouverts simultanément et doivent disposer de la complémentaire, il serait fâcheux que la fermeture de l'un des classeurs ne désactive la complémentaire pour les autres...

Rappel : Une classeur de macro complémentaires est modifiable par n'importe qui depuis VBA dans le cas de multi-diffusion il est prudent de le protéger avec un mot de passe pour éviter toute fausse manip... C'est la raison d'être du classeur source.xlsm qui doit vous permettre de contrôler strictement qui modifie quoi...

N'hésitez donc pas à créer une copie de sécurité de votre classeur source (non protégé pour le cas ou vous oublieriez le mot de passe.

Dans ce classeur source il peut être également prudent de noter le mot de passe que vous utiliserez pour contrôler vos diffusions... Car à ma connaissance dans les versions récentes d'Excel il n'existe plus guère de solution simple pour craquer les mots de passe oubliés...

A+

Bonjour,

Merci Galopin de prendre autant de temps pour une réponse complète et précise. C'est agréable.

Je n'ai en revanche pas réussi à faire ce que tu me dis.

Tout d'abord quelques réponses :

  • En fait, le fichier en question sera placé sur un serveur, potentiellement utilisable par plusieurs personnes en même temps, souhaitant y intégrer des infos (c'est un doc de gestion de temps notamment). USER différents donc et même instant T.
  • En fait, j'avais volontairement placé la fichier XLAM dans le même répertoire que le XLSM, avec un nom identique, sous le conseil d'une personne sur une page internet (taper "dj joss free reso" sur un moteur de recherche pour tomber dessus). J'avais donc enlevé le XLAM de son répertoire initial.

J'ai donc fait ce que tu proposes, mais je me retrouve confronté au même problème récurrent (qui justifie peut être la facon de faire précédente ?) :

  • A partir du moment où je mets le code que tu proposes dans le ThisWorkbook du fichier de travail, le fichier contient des macros et je dois donc l'enregistrer en XLSM, ce que je ne veux pas pour pouvoir le partager... c'est la raison de cette manip du XLAM
  • En outre j'ai "Erreur d'exécution 9, l'indice n'appartient pas à la sélection"
Une autre idée ?

Par avance merci

Hopopop

bonjour,

Je ne sais pas, pour ce qui est de ton partage, Les fichiers partagés peuvent utiliser des macros qui ne sont pas nécessairement dans le répertoire de travail de l'utilisateur. Il me semble donc logique qu'ils puissent utiliser une .xlam enregistrée de manière standard. (dans le répertoire Addins de l'utilisateur )

L'usage des macros Open et Close correspondant juste à cocher ou décocher la boite de dialogue Complément, il ne semble pas qu'il puisse y avoir de problème si la .xlam est bien dans le répertoire Addins de l'utilisateur...

Je n'ai pas d'autre commentaire à faire sur la manière d'installer. Je sais qu'il y a la plupart du temps de multiples tentatives pour utiliser les .xlam autrement que prévu, mais bien sur toute tentative de contourner les principes de bases se heurtent à des inconvénients...

Dans la même situation, il y a de nombreuses années... Comme je n'étais pas administrateur réseau, dans une grande banque française, j'avais trouvé plus commode de ne pas partager le fichier lui-même mais de confier un formulaire à chacun des utilisateurs, formulaire qui arrivait directement dans ma boite e-mail (sous forme de pièce jointe) et qui était collecté systématiquement à chaque ouverture du fichier centralisateur...

Ca exige un petit travail de programmation initial mais après c'est très stable. Mais encore faut-il que ton fichier s'y prête... C'est à dire qu'il s'agisse en fait d'organiser une remonté d'informations : S'il y a vraiment des données à partager entre les utilisateurs c'est plus problématique...

Il faudrait peut-être gratter du coté des moyens modernes de partage si tu as vraiment besoin de cette fonctionnalité, mais là on sort du domaine d'Excel et ce n'est plus dans mes cordes...

A+

Bonsoir

Merci pour ta nouvelle réponse.

Je vais voir ce que je peux faire avec tes derniers éléments.

Bonne soirée

Rechercher des sujets similaires à "probleme affectaion macro complementaire"