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 :

Mettre à jour des macros à partir d'un classeur maitre


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Mettre à jour des macros à partir d'un classeur maitre
    Bonjour,

    Je recherche un exemple qui me permettrait de mettre à jour automatiquement des macros de classeur "individuel" à partir d'un classeur Maître. Je m'explique:

    Chaque personne de l'équipe a un classeur Excel personnel sur son poste de travail (feuille de temps). Ce classeur contient des macros. À chaque ouverture, ces classeurs personnels vont chercher dans un classeur Maitre (se trouvant sur le réseau) des informations relatives à chaque utilisateur. Ces informations se présentent sous la forme d'un feuille Excel individualisée avec le nom de l'utilisateur.
    Cette macro fonctionne très bien.

    Chaque classeur individuel contient en plus d'autres macros. Celles-ci pourraient être modifiées de temps en temps pour des corrections de bugs, d'anomalies ou pour amélioration.

    En plus de récupérer les infos personnelles, je souhaiterai que les nouvelles versions de macros soient mises à jour automatiquement à chaque ouverture des classeurs personnels.

    Est-ce possible? Avez-vous une idée de la manière de s'y prendre?
    Avez-vous des exemples?

    MErci beaucoup de votre aide.

    Bonne journée.

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous,
    Je n'avais pas posté ma demande sur le bon forum. Et c'Est peut-être pour ça que je n'ai pas de réponse.
    Est-ce que vous avez une idée pour m'aider?

    Pour résumer en quelques mots ma demande:
    Je voudrai qu'à l'ouverture d'un classeur Excel se trouvant sur un poste de travail, ses macros soient mises à jour automatiquement à partir d'un fichier maître qui se trouve sur le réseau.
    Cela permettrait de corriger des bogues ou faire des améliorations aux macros.

    Merci beaucoup de votre aide et bonne journée.

  3. #3
    Membre expérimenté
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Points : 1 580
    Points
    1 580
    Par défaut
    Bonjour,
    Petite question idiote : est-ce qu'il ne serait pas plus simple d'ouvrir le fichier sur le réseau à l'ouverture du fichier local ? Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
       Workbooks.Open "MesMacros.xls", ReadOnly:=True, AddToMru:=False
    End Sub

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour et Merci Tedo01
    J'avoue que l'idée est intéressante mais le problème est que n'importe quelle type de macro peut être modifié et donc susceptible d'être mises à jour:
    Combobox, Macros lancées à l'ouverture, Macros associées à une feuille en particulier, etc.

    Pour préciser le contexte, pour l'instant, j'ai une quinzaine de classeurs identiques (un sur chaque poste de travail) et un fichier maître sur le réseau. Et je ne tiens pas à récupérer les 15 classeurs pour les modifier manuellement à chaque ajustement de macro.

  5. #5
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Aujourd'hui quand un classeur local lit des infos dans le classeur central que tu appelles "maître", ce classeur central est-il ouvert ou fermé?

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    À l'ouverture du fichier "Local", le classeur "central" est ouvert par macro, une feuille de paramètres est copiée du "central" vers le "Local" puis le classeur "central" est fermé.

    Phil

  7. #7
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Encore une question : quelles différences entre le classeur central et les classeurs locaux?
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Le classeur central contient une page spécifique pour chaque utilisateur avec ses paramètres et ses données qui sont mis à jour par un seul responsable.

    Il y a un classeur local par utilisateur (Ce classeur sert pour la saisie de leur temps de travail).

    Quand l'utilisateur ouvre son classeur local, une macro va chercher la feuille de paramètres spécifiques à l'utilisateur dans le classeur central.
    Il faudrait également qu'à ce moment-là, une macro puisse mettre à jour les macros du classeur local à partir du classeur central.

  9. #9
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re,

    Je comprends qu'il y a des données à récupérer dans le classeur central, et du code éventuellement mis à jour.
    Mais il y a probablement aussi des données locales à conserver.

    On peut imaginer que la mise à jour se fasse avec du code dans le classeur local. Mais c'est compliqué puisqu'il faudra alors que le code qui s'exécute se mette à jour. Pas glop!
    On peut imaginer un classeur spécifique qui ne contient que le code de mise à jour. C'est la solution la plus simple, amis ce classeur devra lui même être remis à jour "manuellement".
    On peut imaginer que c'est le classeur central qui fait la mise à jour. C'est plus difficile mais évite le pb de la mise à jour du code de mise à jour...

    Dans l'idée, il faut concevoir les 2 classeurs de telle façon qu'ils contiennent les mêmes objets : feuilles, Userforms, Modules. En fait, le classeur central peut avoir + d'objets, mais tous les objets du local doivent être dans le central.

    Il faut prévoir, dans une feuille de paramètres masquée, une cellule nommée par exemple "nmWbkType".

    Dans le module Workbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private su Workbook_Open
    Select case Thisworkbook.Names("nmWbkType").refersToRange.Value
        Case "Central"
        Case "Local"
            Workbooks.open "...Central.xls"
            Application.Run "Central.xls!MAJLocal", thisworkbook.Name
    End Select
    Principe de MAJ (dans central)
    Copier le classeur central (SaveCopyAs "...\Tempo")
    Ouvrir Tempo
    Supprimer tous les objets inutiles
    Copier les données de local dans Tempo
    Ecrire nmWbkType = "Local"
    Fermer local
    supprimer local
    Enregistrer Tempo sous Local
    Supprimer Tempo

    SI dans les paramètres, tu gères aussi les versions (et, pourquoi pas? les mises à jour des données), tu peux comparer les infos de Local et Central (par exemple dates de dernières modif) avant de faire la mise à jour, pour en faire le moins possible. C'est toujours mieux pour l'utilisateur...

    Voilà en gros, une idée.

    COrdialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci PGZ,
    Je vais travailler dès cet après-midi sur ta proposition qui me parait pas mal du tout!
    Je t'en donnerai des nouvelles très bientôt.

    Au fait quel temps avez-vous dans les Pyrénées? Ici à Québec, on a droit à notre première petite tempête de neige (une vingtaine de cm de neige).

    Bonne soirée.

    Philippe

  11. #11
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Avec plaisir!

    Ici nous avons un temps frais pour la saison et ... du soleil! Pourvu que cela dure.

    Bon courage et tiens-nous au courant.

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/01/2011, 11h45
  2. Réponses: 1
    Dernier message: 01/07/2010, 13h35
  3. Mettre à jour des tables avec un trigger
    Par Titouf dans le forum Langage SQL
    Réponses: 9
    Dernier message: 20/01/2008, 15h57
  4. Réponses: 1
    Dernier message: 23/01/2006, 18h53
  5. Réponses: 3
    Dernier message: 09/07/2004, 10h23

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