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 :

gestion macro de plusieurs classeurs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 268
    Par défaut gestion macro de plusieurs classeurs
    Bonjour,

    Grâce à une discussion sur ce forum, j'ai appris à lister les macros d'un classeur dans une ListBox.

    Mon problème est que j'ai une collection de classeurs dont je veux
    1. lister toutes les macros de tous les classeurs de la collection
    2. choisir les macros que je veux utiliser dans la liste
    3. choisir l'ordre des macros à utiliser parmi celles sélectionnées
      (une même macro peut être utilisée plusieurs fois à différents moments)


    Je ne sais ni faire le dernier point ni comment relier par la suite la macro sélectionnée à son classeur d'origine pour exécuter la macro (dans l'appel).
    Comment dois-je m'y prendre?

    La seule idée que j'ai pour le moment pour le réaliser :
    • Créer des ListBox de façon dynamique pour chaque classeur (mais je ne sais pas encore faire, ça pourrait être intéressant)


    J'ai repris un lien http://silkyroad.developpez.com/VBA/...icEditor/#LV-A du forum que j'étudie mais je n'y arrive pas...

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 268
    Par défaut
    J'aimerais qu'à chaque nouveau classeur je puisse ajouter une listeBox spécifique à ce classeur dans mon UserForm.
    J'ai trouvé comment ajouter des ListBox par macro dans un formulaire.

    Mais comment spécifier l'endroit où on veut mettre la nouvelle listbox pour qu'elles ne se retrouvent pas les unes sur les autres?
    J'aimerais savoir comment placer les objets de façon relative les uns aux autres.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Alors ce que je te propose:
    -d'avoir seulement 2 listbox, dont la sélection d'un classeur dans la première permet de charger toutes les macros d'un classeur dans la deuxième (perso je préfère plutôt les combobox mais bon)
    -de choisir une de ces 2 méthodes de chargement de la listbox 2: soit tu charge en listant à chaque fois les macros présentes dans le classeur sélectionné dans la listbox 1, soit tu charges un partir d'un tableau à 2 dimensions que tu auras rempli lors de l'initialisation du formulaire/de l'ouverture du classeur

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 268
    Par défaut
    Merci.
    En fait, cela me serait plus facile de voir toutes les macros de chacun des classeurs que je veux en même temps.
    Donc je pensais créer un formulaire dans lequel on crée le même nombre de listbox que de classeur dans la collection.

    J'ai vu des codes permettant de créer des formulaires dans un module et de créer des listbox dans celui-ci mais mes 2 premiers problèmes avant d'aller plus loin sont :
    1. Je n'arrive pas à faire afficher le formulaire
    2. Je n'arrive pas à positionner les listbox les unes par rapport aux autres : comment peut-on gérer le positionnement des listbox les unes par rapport aux autres?

    ps : je galère vraiment sur la création des gestionnaires par le code, mais je pense que par la suite ça me donnerait beaucoup plus de possibilités

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Citation Envoyé par buzz73 Voir le message
    Merci.
    En fait, cela me serait plus facile de voir toutes les macros de chacun des classeurs que je veux en même temps.
    Dans ce cas, avec toujours 2 Listbox, je te suggère de rajouter alors en option 0 de la première listbox un intitulé "Tous les classeurs", qui lui affichera toutes les macros dans la listbox 2.

    Bref, dans la première listbox: en index 0 l'option "tous", en 1,2,3,etc... chacun des classeurs. Dans la deuxième listbox: soit toutes les macros si le choix est "tous" dans la listbox1, soit uniquement les macros du classeur sélectionné si le choix dans la listbox1 est 1 ou plus.

    A mon avis, cette façon de faire sera beaucoup plus pratique que de créer 36000 listbox.

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2008
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 268
    Par défaut
    Par contre, si tu mets l'option "tous", comment fais-tu pour savoir à quel classeur appartient la macro sélectionnée pour la lancer par la suite?

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Bonne question...
    Mais réponse assurée!

    Ce qui serait intelligent et qui n'exige pas d'efforts (et qui est donc la solution à envisager en priorité ), ce serait de remplir la deuxième listbox comme ça lorsque tu sélectionne "tous":
    "Classeur1.xls!Macro1"
    "Classeur1.xls!Macro2"
    "AutreClasseur.xls!Macro1", etc...

    Et que tu remplisse comme ça lorsque tu sélectionne un classeur, par exemple ici le classeur Classeur1:
    "Macro1"
    "Macro2"

    Après, au niveau de l'appel, tu n'auras plus qu'à tester si la valeur de la listbox1 est "tous" pour exécuter la macro. Si c'est "tous" tu fais:
    Si ce n'est pas "tous" tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Run Textbox1.Value & "!" & Textbox2.Value
    Cela te convient-il?

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

Discussions similaires

  1. [XL-2010] regrouper les macro de plusieurs classeurs dans un seul classeur
    Par jinane13 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/03/2013, 11h29
  2. [Toutes versions] Macro regroupant plusieurs classeurs dans une seule feuille
    Par lisandjo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/04/2012, 07h52
  3. [XL-2002] Rechercher/Remplacer chaîne dans onglet macro de plusieurs classeurs
    Par cdlabal dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/11/2010, 00h25
  4. [E-07] Application d'une macro à plusieurs classeurs
    Par MONINQUE dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/12/2008, 21h08
  5. Réponses: 19
    Dernier message: 12/10/2007, 13h49

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