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 :

Macro installée dans un autre classeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 129
    Par défaut Macro installée dans un autre classeur
    Bonjour,

    Je travaille sous Excel 2003.
    Je souhaite savoir si il est possible d' "héberger" une macro sur un classeur et la faire tourner sur plusieurs autres classeurs.
    Je m'explique:
    Les utilisateurs de ma macro ont chacun un fichier excel. Ils remplissent une BDD. Ma macro leur permet de remplir cette BDD.
    Je souhaite savoir si il est possible de stocker le code sur un classeur Excel, et que chaque utilisateur puisse appeler cette macro pour qu'elle s'exécute sur son classeur. Celà implique que plusieurs utilisateurs puissent faire tourner la macro sur leur classeur en même temps.

    Merci d'avance pour votre aide!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Par défaut
    Bonjour,

    Regarde ici ça te donnera matière a réfléchir. Et fais une recherche sur le forum car ta question a été posé plusieurs fois déjà. Tu trouveras surement ton bonheur !
    Bon courage et bon travail !

    Cordialement,

    Lyonel

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 129
    Par défaut
    Merci pour cette première réponse.
    Pour ce que tu décris, et ce qui est indiqué dans le lien, j'arrive déjà à le faire.
    Ce que je souhaite, c'est par exemple:
    J'ai un fichier excel A sur lequel j'ai un bouton. Lorsque je clique sur ce bouton, il affiche un formulaire.
    Est-il possible que ce formulaire et tout le code associé à ce formulaire soit stocké sur un classeur B?
    Je souhaite que plusieurs classeurs identiques utilisent en même temps le formulaire et le code stockés dans le classeur B qui sera fermé.
    Tout celà est dans le souci de ne pas dupliquer le même code dans tous les classeurs.
    Ma question est de savoir si celà est possible, si c'est valable, et comment?

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Par défaut
    Bonjour,

    je me suis penché un peu plus sur ton problème ce matin. Je suis arrivé à quelque chose de pas très catholique mais qui fonctionne.
    Pour cela j'ai créé 2 classeur Excel Book1 et Book2:
    - Dans Book1 se trouve le formulaire (Userform1) et un module (module1)
    - Dans Book2 se trouve le bouton pour appeler le formulaire.

    Voila les codes:
    -Book2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Button1_Click()
    Workbooks.Open Filename:= _
            "C:\...\Book1.xls" 'J'ai volontairement caché l'emplacement par ...
    ActiveWorkbook.RunAutoMacros xlAutoOpen
    End Sub
    -Book1:
    *module1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ThisWorkbook.Activate
    UserForm1.Show
    *Userform1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CommandButton1_Click()
    'Code pour enregistrer le formulaire
    ...
    UserForm1.Hide
    ActiveWorkbook.Close savechanges:=False
    End Sub
    Le bouton en question valide le remplissage du formulaire et ferme Book1

    J'espère que ça te servira et que c'est ce que tu cherchais... Le tout reste une piste de réflexion. Il y a sûrement mieux comme code mais celui-ci fonctionne.

    Cordialement,

    Lyonel

  5. #5
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    autre solution possible,

    1) Créer un nouveau classeur excel avec uniquement ce forrmulaire. pour cela il faut supprimer les feuilles de ce classeru avant sauvegarde (Sheets(fsffsfs).delete)

    2) Sauver le fichier ainsi constitué à l'endroit défini par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim emplacement as string
    emplacement = Application.path & "\STARTUP"
    cela te donne un code qui sera activé et donc disponible à chaque ouverture d'excel automatiquement.

    Tu peux alors appeler un code qui se trouve dans un module de ton fichier "caché" qui active ton formulaire, via quelquechose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    res = Application.Run("TONFICHIERCACHE.XLS!MontreForm1")

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 129
    Par défaut
    Bonjour,

    Merci beaucoup pour ces bouts de code.
    Depuis hier, j'ai lu ce que je pouvais trouver sur ce sujet sur ce site.
    J'avais trouvé des bouts de code similaires à ceux que vous m'avez montrés.
    Je n'ai pas encore réussi à le faire tourner, mais je me demande si il sera possible de faire tourner ces macros aussi bien (aussi rapidement) que si elles étaient installées sur chaque fichier. La deuxième question que je me pose. Vu que ces fichiers seront enregistrés sur le réseau, sera-t-il possible que plusieurs utilisateurs, chacun sur leur fichier fassent tourner cette macro en même temps?
    Merci d'avance pour votre aide.

Discussions similaires

  1. Réponses: 18
    Dernier message: 18/11/2013, 10h50
  2. [XL-2003] Macro : copie de feuilles dans un autre classeur : problèmes graphs + divers
    Par gandalf20000000 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/10/2009, 10h52
  3. copie d'une macro dans un autre classeur
    Par guypilote dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/08/2009, 17h58
  4. Executer une macro dans un autre classeur
    Par nautygirl dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/07/2007, 15h34
  5. [VBA] utiliser une macro contenue dans un autre classeur
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 01/02/2006, 18h46

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