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 :

Charger et décharger l'AddIn [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 26
    Points : 15
    Points
    15
    Par défaut Charger et décharger l'AddIn
    Je reviens vers vous puisque je voudrais désormais charger et décharger l'AddIn à l'ouverture/fermeture de mon classeur.
    J'ai trouvé ces codes mais rien ne fonctionne :
    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 Check(ByVal cmAdDesc As String)
    Dim Trouve As Boolean, Connecte As Boolean
    Dim CmAd As COMAddIn
    Dim Msg As String
     
    If Not ThisWorkbook.ReadOnly Then
        For Each CmAd In Application.COMAddIns
            If UCase(CmAd.Description) = UCase(cmAdDesc) Then
                progId = CmAd.progId 'progId est un string
                Trouve = True
                Connecte = CmAd.Connect
                Exit For
            End If
        Next CmAd
     
        If Trouve And Connecte Then
            'Msg = "COM Add-In " & cmAdDesc & " connecté"
        ElseIf Trouve = True And Connecte = False Then
            Application.COMAddIns(progId).Connect = True 'J'ai essayé avec progId et description mais rien à faire
        Else 'J'ai pas pris le temps de modifier le else encore
            Msg = "COM AddIn " & cmAdDesc & " n'est pas " & IIf(Not Trouve, "installé", "connecté") & "." & vbNewLine & "Seule la consultation est possible."
            ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
            MsgBox Msg
        End If
    End If
    End Sub
    Merci à vous.

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    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
    Private Sub Check(ByVal cmAdDesc As String)
    Dim Trouve As Boolean, Connecte As Boolean
    Dim CmAd As COMAddIn
    Dim Msg As String
     
    If Not ThisWorkbook.ReadOnly Then
        For Each CmAd In Application.COMAddIns
            If UCase(CmAd.Description) = UCase(cmAdDesc) Then
                Trouve = True
                Connecte = CmAd.Connect
                Exit For
            End If
        Next CmAd
     
        If Trouve And Connecte Then
            'Msg = "COM Add-In " & cmAdDesc & " connecté"
        ElseIf Trouve = True And Not Connecte Then
            CmAd.Connect = True                        'J'ai essayé avec progId et description mais rien à faire
        Else                                           'J'ai pas pris le temps de modifier le else encore
            Msg = "COM AddIn " & cmAdDesc & " n'est pas " & IIf(Not Trouve, "installé", "connecté") & "." & vbNewLine & "Seule la consultation est possible."
            'ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
            MsgBox Msg
        End If
    End If
    End Sub
    Quand tu trouvais ton COM Addin, tu sors de la boucle avec Exit For et tu as ce COM Addin dans la variable CmAd.
    Il suffit de l'utiliser

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Haha c'était tout bête, merci encore à toi.
    Bonne soirée.

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Pour pallier au problème qui pourrait être rencontré lors du chargement de l'addin, une petite modification
    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
    Private Sub Check(ByVal cmAdDesc As String)
    Dim Trouve As Boolean, Connecte As Boolean
    Dim CmAd As COMAddIn
    Dim Msg As String
     
    If Not ThisWorkbook.ReadOnly Then
        For Each CmAd In Application.COMAddIns
            If UCase(CmAd.Description) = UCase(cmAdDesc) Then
                Trouve = True
                Connecte = CmAd.Connect
                Exit For
            End If
        Next CmAd
     
        If Trouve And Connecte Then
            Msg = "COM Add-In " & cmAdDesc & " connecté"
        ElseIf Trouve And Not Connecte Then
            On Error Resume Next
            CmAd.Connect = True
            On Error GoTo 0
            Msg = "COM AddIn " & cmAdDesc & IIf(CmAd.Connect, " vient d'", " n' a pu ") & "être connecté"
        Else
            Msg = "COM AddIn " & cmAdDesc & " n'est pas " & IIf(Not Trouve, "installé", "connecté") & "." & vbNewLine & "Seule la consultation est possible."
            ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
        End If
        MsgBox Msg
    End If
    End Sub

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Encore mieux merci
    Et si je veux mettre cmAdd dans une variable globale pour pouvoir décharger l'AddIn facilement c'est une bonne idée ou il vaut mieux refaire une boucle etc ?
    J'ai tenté un Public myAddIn As COMAddIn en haut de mon fichier et en faisant myAddIn = CmAd mais ça ne fonctionne pas.
    Désolé de ma nullité. :p
    Bonne soirée.

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Mieux une boucle sur le même principe (car tu n'as pas des millions de COM Addins à scruter)
    Une variable publique pour peu de choses c'est surdimensionné à mon avis. (Subjectivement)

    Sinon, pour affecter des objets on met Set

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Cool j'ai réussi grâce à toi.
    Merci et passe une bonne journée.

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

Discussions similaires

  1. [OpenGL 3.x] Charger décharger et modifier les vertex du VBO
    Par karistouf dans le forum OpenGL
    Réponses: 15
    Dernier message: 05/01/2015, 22h45
  2. Charger puis décharger une image
    Par arnolem dans le forum Téléchargez
    Réponses: 0
    Dernier message: 30/09/2011, 17h47
  3. Charger des Addin / Plugin avec le CF
    Par Kentin dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 02/02/2010, 13h20
  4. Réponses: 1
    Dernier message: 10/03/2009, 16h29
  5. [VB.NET]Charger et décharger dynamiquement des fichiers DLL
    Par leSeb dans le forum Windows Forms
    Réponses: 4
    Dernier message: 28/08/2006, 12h31

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