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 :

Ajout d'une macro complémentaire (XLAM) par VBA [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club Avatar de PierreE_67207
    Homme Profil pro
    Bureau d'étude (bâtiment)
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Bureau d'étude (bâtiment)
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 29
    Points
    29
    Par défaut Ajout d'une macro complémentaire (XLAM) par VBA
    Bonjour,

    Je re-poste sur un sujet déjà évoqué dans d'autres discussions passées (ici et notamment) mais qui ne me permettent pas d'aboutir dans mon cas.

    Il semblerait que je rencontre pourtant la même problématique que je rencontre : je souhaiterais, à l'ouverture d'un XLAM, ajouter par code le fichier en question aux compléments de macro complémentaires. Voici le code présent dans mon fichier XLAM :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Private Sub Workbook_Open()
     
    '*****************************************'
    'Ajout du complément macro complémentaire :
    '*****************************************'
     
       Application.AddIns.Add(ThisWorkbook.FullNameURLEncoded).Installed = True
     
    End sub

    Et voici le message d'erreur qui apparaît à l'ouverture du fichier :

    "Impossible de lire la propriété Add de la classe AddIns"

    J'ai beau fouillé et testé différentes choses, je reste bloqué. Est-ce que vous auriez une idée ?

    Mon but étant de pouvoir faire installer simplement le complément sur d'autres PC.

    Merci par avance pour vos lumières !

    PE

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PierreE_67207 Voir le message
    Bonjour,

    Je ne sais pas si ma réponse cadre avec votre problème, mais voilà comment sont organisées mes macro complémentaires.
    Le principe est de remplacer la version existante par celle que je livre à mes clients.

    Dans ThisWorkbook
    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
    28
    29
    30
    31
    32
    33
     
    Option Explicit
     
    Private Sub Workbook_Open()
     
    ' Ajout d'une commande au menu Outils
     Dim NouvelleCommande As CommandBarControl
     Dim Msg As String
     
        ' Suppression de la commande existante (au cas où...)
        On Error GoTo RienAFaire
     
        For Each NouvelleCommande In Application.CommandBars(1).Controls
            If NouvelleCommande.Caption = "MonNomDAppli" Then
               Application.CommandBars(1).Controls("MonNomDAppli").Delete
               Exit For
            End If
        Next NouvelleCommande
     
     
        ' Création de la nouvelle commande
        CreationMenuComplementXXXX
     
        Exit Sub
     
        ' Gestion d'erreur
    RienAFaire:
     
        Msg = "Une erreur s'est produite." & vbNewLine
        Msg = Msg & "Le menu MonNomDAppli a été ajouté dans la barre de menu mais un problème a été rencontré !"
        MsgBox Msg, vbCritical
     
    End Sub
    Dans le premier module standard :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Option Explicit
     
     
    Sub CreationMenuComplementXXXX()
     
        Dim IndexAide As Integer
        Dim NouveauMenu As CommandBarPopup
     
        ' Numéro d'index du menu d'aide
        '------------------------------
        IndexAide = CommandBars(1).Controls("?").Index
     
        ' Création du contrôle
        '---------------------
        Set NouveauMenu = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, Before:=IndexAide, Temporary:=True)
     
        ' Ajout du texte
        NouveauMenu.Caption = "MonNomDAppli"
        NouveauMenu.TooltipText = "Version du 27-05-2020. Contact : Eric KERGRESSE - Tél 02-99-41-01-77 ou 07-50-07-95-97"
     
       With NouveauMenu
     
     
          With .Controls.Add(Type:=msoControlPopup)
                .Caption = "Importer"
                .BeginGroup = True
                .TooltipText = "Import des fichiers .csv"
          End With
     
          Set Item = CommandBars(1).Controls("Appros").Controls("Importer").Controls.Add(Type:=msoControlButton)
          With Item
                  .Caption = "Le fichier Csv XXXX"
                  .OnAction = "MaMacro"
                  .TooltipText = "Votre commentaire"
            End With
            Set Item = Nothing
     
         End With
     
        ' Et ainsi de suite pour ajouter des sous menus.
     
         Set NouveauMenu = Nothing
     
      End Sub

  3. #3
    Nouveau membre du Club Avatar de PierreE_67207
    Homme Profil pro
    Bureau d'étude (bâtiment)
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Bureau d'étude (bâtiment)
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Bonjour Eric,

    Merci beaucoup pour votre réponse, ça me paraît correspondre exactement à ce que je cherche à faire pour l'aspect d'ajout de commandes personnalisées dans mon ruban, depuis le complément "macro complémentaire", je vais étudier ça de près !

    En revanche j'ai l'impression que ça ne traite pas de l'ajout d'un complément par VBA (méthode manuelle : menu Option / Complément).

    J'explique mon but précis :
    1. Transmettre des fichiers XLAM (macro complémentaire) sur d'autre PC
    2. Par une ouverture du fichier, via l'événement :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Private Sub Workbook_Open()
      => automatiser l'ajout (ou remplacement) du complément
    3. Puis comme indiqué dans votre réponse, ajouter les menus personnalisés dans le ruban


    Et c'est donc le point 2 qui me reste à élucider, car pour le moment j'obtiens le message d'erreur décrit dans mon premier message.

    Merci par avance pour votre aide.

    PE

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PierreE_67207 Voir le message
    En revanche j'ai l'impression que ça ne traite pas de l'ajout d'un complément par VBA (méthode manuelle : menu Option / Complément).
    Il ne faut pas s'emm... à ça. Un mode opératoire pour la première installation est suffisant. Aux versions suivantes (sans jamais changer le nom), faire un copier-coller dans le répertoire d'installation Excel fermé.

  5. #5
    Nouveau membre du Club Avatar de PierreE_67207
    Homme Profil pro
    Bureau d'étude (bâtiment)
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Bureau d'étude (bâtiment)
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Il ne faut pas s'emm... à ça. Un mode opératoire pour la première installation est suffisant. Aux versions suivantes (sans jamais changer le nom), faire un copier-coller dans le répertoire d'installation Excel fermé.
    Je suis d'accord avec le principe si c'était uniquement pour un usage personnel, mais s'agissant d'une application servant à de nombreux collègues (plusieurs dizaines), le mode opératoire pour l'installation initiale et les mises-à-jour à venir me semble trop compliqué.

    PE

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PierreE_67207 Voir le message
    Je suis d'accord avec le principe si c'était uniquement pour un usage personnel, mais s'agissant d'une application servant à de nombreux collègues (plusieurs dizaines), le mode opératoire pour l'installation initiale et les mises-à-jour à venir me semble trop compliqué.
    Moi, je travaille pour un grand compte...

  7. #7
    Nouveau membre du Club Avatar de PierreE_67207
    Homme Profil pro
    Bureau d'étude (bâtiment)
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Bureau d'étude (bâtiment)
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Moi, je travaille pour un grand compte...
    Je ne comprends pas bien la remarque.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PierreE_67207 Voir le message
    Je ne comprends pas bien la remarque.
    Un grand compte, c'est une entreprise de plusieurs milliers d'employés.
    Pour compléter ma remarque, tu aurais raison si tu envoyais une version très fréquemment.

  9. #9
    Nouveau membre du Club Avatar de PierreE_67207
    Homme Profil pro
    Bureau d'étude (bâtiment)
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Bureau d'étude (bâtiment)
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Un grand compte, c'est une entreprise de plusieurs milliers d'employés.
    Pour compléter ma remarque, tu aurais raison si tu envoyais une version très fréquemment.
    Oui j'avais compris pour le grand compte, c'est aussi mon cas, mais je ne vois pas la pertinence de la remarque.

    C'est pas grave, faute de mieux je ferai comme tu l'indiques, c'était aussi mon idée de départ, mais je souhaitais améliorer et faciliter l'outil, le rendre plus "sexy" et éviter de perdre mes collègues dans des manipulations qui auraient pu être automatisées.

    En tout cas merci pour ton code pour la modification du ruban, je vais étudier ça ce soir.

    PE

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PierreE_67207 Voir le message
    Oui j'avais compris pour le grand compte, c'est aussi mon cas, mais je ne vois pas la pertinence de la remarque.
    Je voulais simplement dire que je n'avais jamais eu de remarque sur ma méthode même de la part d'utilisateurs peu avertis avec l'informatique, bien au contraire, et le nombre d'utilisateurs n'est pas un critère.

  11. #11
    Nouveau membre du Club Avatar de PierreE_67207
    Homme Profil pro
    Bureau d'étude (bâtiment)
    Inscrit en
    Janvier 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Bureau d'étude (bâtiment)
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2015
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Bonjour à tous,

    Pour les personnes qui chercheraient la même chose, voici ce qui répond à ce que je cherchais pour automatiser la mise en place d'un Add-In à l'ouverture d'un fichier d'installation.

    La procédure est appelée dans "Private Sub Workbook_Open" du classeur du futur Complément, enregistré en format .xlsm :
    Code :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    Sub AjoutComplémentExcel()
     
    '*****************************************'
    'Ajout du complément macro complémentaire :
    '*****************************************'
     
        Dim CheminFichier As String: CheminFichier = Application.UserLibraryPath
            '=> équivalent à : "C:\Users\" & Environ("USERNAME") & "\AppData\Roaming\Microsoft\AddIns\"
        'Nota : NomFichier est une constante public String qui définit le nom de fichier pour la copie
        Dim NomCompletFichier As String: NomCompletFichier = CheminFichier & NomFichier & ".xlam"
        Dim Complément As AddIn
     
     
        If Mid(ThisWorkbook.FullNameURLEncoded, InStrRev(ThisWorkbook.FullNameURLEncoded, ".") + 1) <> "xlam" Then
     
        'Si le complément existe déjà, on le supprime pour pouvoir le regénérer (permet les mises-à-jour)
            If Len(Dir(NomCompletFichier)) > 0 Then
                Application.AddIns.Add(NomCompletFichier).Installed = False
                Kill NomCompletFichier
            End If
     
        'Enregistrement du fichier en cours en format .xlam dans le dossier des compléments Excel :
            ThisWorkbook.SaveAs Filename:=CheminFichier & NomFichier, FileFormat:=xlOpenXMLAddIn
     
        'Installation et activation du complément :
            Application.AddIns.Add(NomCompletFichier).Installed = True
     
        'Validation de l'installation du fichier et fermeture du fichier d'installation :
            MsgBox "Complément " & NomFichier & " chargé avec succès !" & Chr(13) & Chr(13) & _
                       "Le fichier d'installation va maintenant se fermer.", vbOkOnly, "Terminé"
            ThisWorkbook.Close SaveChanges:=False
     
        End If
     
    End sub
    Sujet résolu.

    PE

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

Discussions similaires

  1. [XL-2010] Installer une macro complémentaire .xlma par code VBA
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/04/2012, 16h52
  2. [XL-2007] Vérifier l'ajout d'une macro complémentaire.
    Par Duffyduff dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/09/2010, 11h36
  3. [XL-2003] Installer et Désinstaller une macros complémentaire par VBA
    Par amerex dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/04/2010, 00h13
  4. [VBA Excel] Pb avec une macro complémentaire
    Par Nyck0las dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/11/2007, 22h19
  5. [VBA-E]-Appeler une macro complémentaire ?
    Par Régolo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/04/2007, 23h34

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