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 :

Application.run avec le nom de la macro complémentaire en paramètre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 14
    Par défaut Application.run avec le nom de la macro complémentaire en paramètre
    bonjour,

    j'aimerais savoir comment faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run("'nomdelamacro.xla'!mafonction")
    avec "nomdelamacro" en parametre de facon à ce que quand j'ouvre l'excel il me demande par exemple quelle macro je veux utiliser ou prend la macro complementaire coché dans outil -> macro complémentaire.
    Pour l'instant je doit utilser un même nom quelque soit ma version de macro.
    Mon chef de projet atteste qu'on peut faire application.run sans mettre "nomdelamacro" est ce possible? Si oui comment? car il m'a demandé de chercher.

    Merci d'avance pour vos reponses.

  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
    Par défaut
    "Application.Run("'nomdelamacro.xla'!mafonction")"
    En écrivant ça tu confonds nom de la macro et nom du fichier.
    Dans ta ligne, ce qui est ".xla", c'est le fichier. La macro, c'est "mafonction"
    Quand un xla est installé, ton chef a raison, le nom du fichier n'est pas nécessaire.
    Pour installer une macro complémentaire par macro (c'est le fichier.xla qu'on installe) regarde dans l'aide en ligne à "AddIns, collection d'objets", la méthode Add. Tu as un exemple. Pour l'installer, tu dois préciser le chemin complet du .xla
    Bonne journée

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 14
    Par défaut
    Merci pour ta reponse.
    J'ai juste une dernière question comment récuperer la macro complémentaire installée pour la désinstaller en VBA

  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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Addins("NomDeLaMacro.xla").Installed = false

  5. #5
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 14
    Par défaut
    Mais le nom de la macro installée je ne la connais pas elle est choisie par l'utilisateur à l'ouverture du fichier du fichier
    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
     
     
    Private Sub Workbook_Open()
     
    NomFichier = Application.GetOpenFilename(FileFilter:="Fichiers Microsoft Excel (*.xla),*.xla")
    Decoup = Split(NomFichier, "\")
    Nom = Decoup(UBound(Decoup))
    NomFichier2 = Left(Nom, Len(Nom) - 4)
     
    If VarType(NomFichier) = vbBoolean Then
        MsgBox "Erreur de chargement"
    Else
        Set maMacro = AddIns.Add(Filename:=NomFichier, CopyFile:=True)
        Application.AddIns.Add (NomFichier)
        AddIns(NomFichier2).Installed = True
        'AddIns.add(NomFichier2).Installed = True
        'Call OuvreSiPasOuvert(NomFichier)
    End If
     
     
    End Sub
    maintenant je voudrais dans workbook_close recuperer la macro qui est installée et la désinstaller

  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
    Par défaut
    Citation Envoyé par ckrikri
    Mais le nom de la macro installée je ne la connais pas elle est choisie par l'utilisateur à l'ouverture du fichier du fichier
    Notre boule de cristal ne va pas jusqu'à deviner ce que tu ne dis pas
    Une solution serait de lister les macros complémentaires et de dévalider la dernière... Mais assure toi que tu n'as pas la validation d'autres macros dans ton code, ou au moins qu'il n'y a pas d'incidence néfaste...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub SupAddIns()
        For Each Nom In Application.AddIns
            NomMC = Nom.Name
            'MsgBox NomMC 'si tu veux tester le nom des macros
        Next
        AddIns(NomMC).Installed = False
    End Sub

Discussions similaires

  1. Réponses: 18
    Dernier message: 18/11/2013, 10h50
  2. [XL-2007] Application.run avec userform
    Par zalombo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/06/2012, 23h41
  3. Utiliser Application.run avec une classe
    Par baya22 dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/04/2012, 12h07
  4. Passer un paramètre à une macro avec Application.run
    Par ouskel'n'or dans le forum VBA Word
    Réponses: 1
    Dernier message: 05/10/2007, 15h20
  5. [VBA-E]Application.run avec paramètres
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/03/2007, 16h48

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