IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Auto-installation d'un Add-In Excel avec AddIns


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 21
    Points : 10
    Points
    10
    Par défaut Auto-installation d'un Add-In Excel avec AddIns
    Bonjour, j'ai fait un add-in Excel et je voudrais pourvoir le distribuer.
    Pour éviter de devoir expliquer comment sauver et installer manuellement cet add-in, je voudrais qu'il s'installe et se load automatiquement lorsqu'on l'ouvre pour la première fois.

    J'ai bien fait quelques essais, mais avec pour seul résultat de planter Excel à l'ouverture...

    Quelqu'un a une idée ? Merci d'avance.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Pour que les procédures de ton appli le prennent en compte, tu peux utiliser Addins, mais ça n' "installera" pas le xla s'il n'existe pas sur le post. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.AddIns.Add("C:\Program Files\Microsoft Office\Office10\Macrolib\Analyse\ATPVBAEN.XLA").Installed = True

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    J'ai essayé ceci. L'add-in se sauve bien dans le répertoire des add-ins, mais il n'apparait pas dans excel : il faut encore aller le chercher manuellement (Tools - Add-ins... puis browse et le sélectionner)

    Il y a un moyen d'automatiser ce point aussi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub Workbook_Open()
     
    TestDrive = UCase(ThisWorkbook.Path)
    MyAddinName = ThisWorkbook.Name
    DestDrive = UCase(Application.UserLibraryPath)
     
    If Right(TestDrive, 1) <> "\" Then TestDrive = TestDrive & "\"
    If Right(DestDrive, 1) <> "\" Then DestDrive = DestDrive & "\"
     
    If TestDrive = DestDrive Then
        'Already installed
        Exit Sub
    Else
        'Not installed Here
        MyCheck = MsgBox("Copy " & MyAddinName & " to " & Application.UserLibraryPath & "?", vbYesNo)
        If MyCheck = vbNo Then
        Exit Sub
        ThisWorkbook.Close
        Else
        ThisWorkbook.SaveAs Filename:=DestDrive & MyAddinName
        ThisWorkbook.Close
        Workbooks.Add
        Application.AddIns.Add(DestDrive & MyAddinName).Installed = True
        End If
    End If
     
    End Sub

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Si je comprends bien ton code, ton xla est le classeur actif. Il ne va pas s'installer lui-même. Tu dois le placer dans le bon répertoire, celui des xla, auquel cas il apparaît dans la liste des macros complémentaires... peut-être seulement après avoir redémarré Excel (?)
    Là, dans une autre appli, tu peux l'activer à l'aide de la ligne que je t'ai indiquée.
    Quel est l'intérêt d'activer un xla pour lui-même ?
    Ou alors j'ai mal lu ton code...
    A+

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    C'est pour pouvoir le distribuer par mail et que le destinataire n'ait qu'à l'ouvrir pour qu'il s'installe de lui-même.

    Mais je sais pas si c'est possible (un add-in téléchargé du net avait le même problème).

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Adresse aux utilisateurs, à la fois un classeur contenant ta macro d'install et ton xla.
    Mais je pense toujours que, pour qu'il apparaisse dans les macros complémentaires, il faut redémarrer Excel. Ceci... si toutefois il a été placé au bon endroit

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 21
    Points : 10
    Points
    10
    Par défaut Ca a marché !
    Ca marche bien avec ce code (la création des menus est plascé dans Workbook_AddinInstall).

    Je fermais les workbook un peu trop tot ...

    Et, en effet, il n'apparait en VBA qu'après redémarrage d'Excel (par contre, on peut déjà le l'appeler)

    Merci !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub Workbook_Open()
     
    TestDrive = UCase(ThisWorkbook.Path)
    MyAddinName = ThisWorkbook.Name
    DestDrive = UCase(Application.UserLibraryPath)
    If Right(TestDrive, 1) <> "\" Then TestDrive = TestDrive & "\"
    If Right(DestDrive, 1) <> "\" Then DestDrive = DestDrive & "\"
     
    If TestDrive = DestDrive Then
        'Already installed
        Exit Sub
    Else
        'Not installed Here
        MyCheck = MsgBox("Copy '" & MyAddinName & "' to '" & Application.UserLibraryPath & "'?", vbYesNo)
        If MyCheck = vbNo Then
        ThisWorkbook.Close
        Exit Sub
        Else
        ThisWorkbook.SaveAs Filename:=DestDrive & MyAddinName
        Workbooks.Add
        Application.AddIns.Add(DestDrive & MyAddinName).Installed = True
        ThisWorkbook.Close
        End If
    End If
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Erreur création fichier Excel avec Workbooks.Add()
    Par Xorbane dans le forum VBA Access
    Réponses: 3
    Dernier message: 25/06/2012, 22h00
  2. [XL-2003] Comment distribuer un fichier Excel avec Add-in ?
    Par michaud_rene dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/12/2009, 17h44
  3. Réponses: 0
    Dernier message: 04/08/2009, 11h30
  4. Réponses: 4
    Dernier message: 26/03/2008, 11h24
  5. Auto install macro vba excel
    Par zootman dans le forum Installation, Déploiement et Sécurité
    Réponses: 6
    Dernier message: 14/06/2006, 21h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo