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 :

Appeler une macro VBA depuis une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut Appeler une macro VBA depuis une cellule
    Bonjour,

    J'ai parcouru une bonne partie des sujets déjà écrits et je n'ai pas trouvé de solution à mon problème que voici :
    - Dans un fichier VBA, j'ai une macro appelée MyFunction(cell1,cell2)
    - Dans un fichier excel, une cellule appelle cette fonction par :
    Cela fonctionne très bien jusqu'à la prochaine ouverture du fichier excel.

    En effet, à la prochaine ouverture du fichier Excel, je rencontre l'erreur #NOM, car il ne trouve plus MyFunction, alors qu'il est toujours présent.
    Je dois alors changer la formule de la cellule par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MesMacros.xla!MyFunction(H4,J4)
    Mais après avoir retrouvé le lien, Excel transforme la formule en Et le problème réapparaitra à la prochaine ouverture de fichier ...

    Comme concerver en dur le chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MesMacros.xla!MyFunction(H4,J4)
    dans la cellule ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 117
    Par défaut
    Salut,

    Deux solutions possibles :
    1- Tu ajoutes ta macro dans ton fichier, du coup, tu n'auras plus le problème
    2- Le fichier *.xla doit être mis dans le répertoire idoine, à savoir :
    C:\....\Application Data\Microsoft\Addins

  3. #3
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    Malheureusement, je ne peux pas utiliser ces solutions
    1/ la macro est dans un fichier xla, car elle est utilisée par de nombreux fichiers excel. Donc cette solution demanderait de dupliquer une macro qui peut encore évoluer ...

    2/ Je ne peux pas non plus, car ces fichiers Excel sont utilisés par plusieurs utilisateurs sur plusieurs ordinateurs. Ce nombre d'utilisateurs n'est pas fixe et n'est pas complétement connu, donc pas envisageable de demander à chacun de copier ou même créer un lien symbolique du fichier xla sur le disque local

    Je cherchais plutôt une solution qui force Excel à figer le chemin d'appel de la macro, genre INDIRECT, mais INDIRECT ne cible que des noms de cellule et refuse un appel de function

    Merci quand même ...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 117
    Par défaut
    Re

    J'ai peut être une piste de solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    AddIns.Add "Filename"
    AddIns("Nom module ?").Installed = True
    Tu mets ça à l'ouverture de ton classeur

  5. #5
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    J'obtiens toujours #NOM comme résultat
    tu as testé chez toi ?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 117
    Par défaut
    Non j'avoue que j'ai pas essayé de mettre un appel de fonction
    Mais l'ajout des macros complémentaires fonctionne bien.
    Je vais voir

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 117
    Par défaut
    J'ai testé et tout fonctionne correctement

    J'ai un fichier BookMacros.xla que j'ai sur mon disque dans Mes documents
    Et à l'ouverture de mon classeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Application.AddIns.Add "C:\......\BookMacros.xla"
        Application.AddIns("Bookmacros").Installed = True

  8. #8
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    J'ai l'erreur 1004 :
    La méthode Add de la classe AddIns a échoué

    et je vois toujours des #NOM comme résultat

  9. #9
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    J'ai également la même problématique que Ainelle mais sous Excel 2007

    J'ai donc testé le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_open()
     
    Application.AddIns.Add "C:\....\test.xlsm"
    Application.AddIns("test").Installed = True
     
    End Sub
    à l'ouverture d'un autre classeur.

    Pas de problème, sauf que ça ne fait pas ce que je souhaiterais; à savoir:
    • le classeur test.xlsm s'ouvre automatiquement (ce que je ne veux pas)
    • la fonction VBA définie dans test.xlsm que je veux utiliser dans une formule de mon nouveau classeur n'est pas reconnue (alors que c'est le but de la manip)


    N'est ce pas la bonne manière de procéder sous Excel 2007?

    Merci de votre aide

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 117
    Par défaut
    @Ainelle
    Ton fichier est accessible ?
    Ton Excel est en version Française ou Anglaise ?

    @issoram
    j'avoue ne pas connaitre cette extension, et après avoir regarder sur le net, il semble que ce soit l'équivalent de .xla pour 2003 mais n'ayant pas 2007 je ne peux malheureusement pas faire de test

    Question subsidiaire : l'extension des macros complémentaires en 2007 c'est quoi ? sur que c'est xlsm ?

    En fait l'extension des macros complémentaires pour 2007 c'est .xlam donc c'est normal qu'il t'ouvre le fichier

  11. #11
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Mais de toute façon, on est obligé d'inclure ces lignes de codes dans tous les classeurs utilisant cette fonction...

    N'y a t il pas un moyen plus simple pour importer une fonction externe dans plusieurs classeurs?

  12. #12
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    @trollinou : oui, le fichier est accessible, d'ailleurs, comme l'a fait remarqué issoram, Excel ouvre le fichier .xla (mais ça ne me gène pas). Du coup, essairait-til de l'ouvrir 2 fois ? car comme Microsoft est avare en code erreur, l'erreur 1004 correspond aussi à "fichier non trouvé" et également "fichier déjà ouvert", bref, un fourre-tout ...
    Et pour la version, c'est une version 2003 FR, oui.
    En tout cas, les menus sont en français et les formules accessibles depuis une cellule sont en FR (SI , ET, OU ...)

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 117
    Par défaut
    @issoram :
    Si il y a plus simple mais pas de façon générique pour tout le monde sauf si "tout le monde" utilise une version sur réseau par exemple.

    Avec Excel il est possible de "stocker" des macros complémentaires à un endroit spécifique du poste de travail "..Application Data\Microsoft\AddIns", dans ton cas en extension xlam sinon ça ne marchera pas.

    Et d'ajouter également un classeur, l'équivalent du normal.dot pour Word dans le dossier XLSTART et ce classeur contient les macros complémentaires activées, ce qui fait que lorsqu'une personne ouvre Excel depuis ce modèle les fonctions sont directement activées.
    Ce modèle est un fichier Excel standard.

    Je suis assez clair ?

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 117
    Par défaut
    @Ainelle :

    issoram travaille en 2007 et toi en 2003.
    je ne connais pas l'ensemble des différences mais ne serait-ce que pour les fichiers macros complémentaires les extensions ne sont pas les mêmes.

    Est-ce que tu peux me fournir ton fichier macros complémentaires modifiés suffisamment pour ne pas "compromettre" des données plus ou moins confidentielles que je teste sur mon poste ?

    Même si Microsoft ne fournit pas forcément un détail sur les erreurs, elles permettent de donner des pistes.

  15. #15
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Je suis confronté au même problème que Ainelle: fichiers partagés par plusieurs utilisateurs sur différents postes.
    Mais n'ayant pas vraiment trouvé de solution alternative satisfaisante, autre que les 2 proposés par trollinou:

    Deux solutions possibles :
    1- Tu ajoutes ta macro dans ton fichier, du coup, tu n'auras plus le problème
    2- Le fichier *.xla doit être mis dans le répertoire idoine, à savoir :
    C:\....\Application Data\Microsoft\Addins
    J'ai opté pour la première, mais de manière un peu différente que le "Addins" proposé plus haut:
    1. Export du module contenant les fonctions à utiliser. A partir de Microsoft VB : Modules/exporter un fichier => création d'un fichier .bas
    2. Import de ce module dans chacun de mes fichiers grâce à une boucle toute bête et à la commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activeworkbook.VBProject.VBComponents.Import("/.../mon_module.bas")
    Ça ne me satisfait pas vraiment mais ça a le mérite de marcher....
    Ça fonctionnera peut être aussi pour toi Ainelle sous 2003...

Discussions similaires

  1. [XL-2013] Référence à une cellule nommée depuis une macro VBA
    Par vonfelt dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/02/2015, 11h25
  2. [XL-2007] Appel d'une fonction VBA depuis une feuille
    Par St-Jean dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/11/2009, 23h55
  3. Appeler une dll ou un autre module vba depuis une macro excel vba
    Par technobiz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/11/2008, 14h24
  4. Lancer une macro excel depuis une macro powerpoint
    Par toma65 dans le forum VBA PowerPoint
    Réponses: 7
    Dernier message: 12/06/2007, 09h41
  5. [VBA]lancer une macro à chaque changement de cellule dans une feuille
    Par freddddd dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 13h58

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