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 :

Template et évènement [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 10
    Par défaut Template et évènement
    Bonjour,
    Je dois créer un modèle de classeur (template) excel.
    Ce dernier, lors du clic sur nouveau (et non pas ouvrir) doit créer un classeur contenant une trentaine de feuilles de calculs à partir de données externes.
    Le code qui s'exécute ne doit s'exécuter qu'à ce moment là.
    Je pensais donc utiliser un évènement de type new... pour "nouveau classeur" et y placer le code nécessaire.
    Hélas, je ne trouve pas pareil évènement !
    Cela est très problématique !
    Je cherche un tourne autour...
    Merci et rebonjour à tous...
    Je reprends le code après quelques années d'abstinences ;-)
    Jean-Louis

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour pouvoir réaliser cela, il serait préférable de le faire soit depuis le classeur de macros personnelles (PERSONAL.xlsb) soit avec un complément (addin ou macro complémentaire)
    Une idée dans cette discussion Détecter les évènements d'un classeur depuis un complément
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 10
    Par défaut
    Merci
    Je vais voir comment faire cela car j'ignore tout de PERSONAL.xlsb
    Quel bonheur que de ce remette au développement !

  4. #4
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 10
    Par défaut Suite
    Bonjour,
    Je reformule pour voir si j'ai compris la démarche proposée :
    1. Je crée un fichier xlam pour produire un complément
    2. Dans ThisWorkbook de mon projet "Au fil de l'eau", je filtre les évènements
    3. Lors de la génération du bon évènement je lance le code (ou pas selon les tests) de mon complément (objets, fonctions, dialogues...)
    4. Cela implique - je suppose - d'ajouter le fichier xlam dans le répertoire qui contient le modèle que je fournis à mes collègues
    5. Je suppose que les formulaires de dialogues et le code utiles à l'avenir dans le fichier produit doivent rester indépendant de mon complément (hygiène de programmation)
    6. Des feuilles de calculs non visibles à l'utilisateur mais nécessaires à certaines données sont-elles possibles ?

    Ai-je bien compris le protocole ?
    Cordialement
    MERCI !

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Un fichier xlam est un classeur normal dont les feuilles sont masquées et dans lequel on peut placer des procédures Sub et Function qui peuvent être accessible par tous les classeurs ouverts du PC à condition que l'on ait activé le complément sur celui-ci.
    On peut également intercepter les événements qui se produisent dans les classeurs ouverts.
    Pour cela il faut écrire l'instruction ci-dessous en tête de module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public WithEvents XL As Excel.Application
    A partir de ce moment là, nous pourrons sélectionner XL dans la liste déroulante de gauche et voir dans la liste déroulante de droite, tous les événements associés à XL

    Nom : EventProcess_1.png
Affichages : 63
Taille : 12,7 Ko

    Pour intercepter l'ouverture d'un classeur, nous utiliserons la procédure événementielle XL_WorkbookOpen et comme les nouveaux classeurs basés sur un modèle ne sont pas suffixés, il suffit d'utiliser la fonction Instr pour le détecter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub XL_WorkbookOpen(ByVal Wb As Workbook)
      If InStr(Wb.Name, ".") = 0 Then
         MsgBox "Nouveau classeur basé sur un modèle "
      End If
    End Sub

    Pour activer un complément
    1. Sélectionner Options après avoir activer l'onglet [Fichier] (Image 1)
    2. Sélectionner Complément dans le volet gauche de la boîte de dialogue Options Excel (Image 2)
    3. Cocher la macro complémentaire dans la boîte de dialogue Compléments
    4. Si celui-ci n'est pas présent dans la liste, il faut le chercher en cliquant sur le bouton Parcourir...

    Image 1

    Nom : Option - Compément.png
Affichages : 62
Taille : 35,3 Ko

    Image 2

    Nom : Dlg Compléments.png
Affichages : 69
Taille : 10,7 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour en savoir plus, sur la manière de créer une macro complémentaire voir mon billet titré VBA Excel - Créer une macro complémentaire
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,
    Citation Envoyé par JLC83440 Voir le message
    Je dois créer un modèle de classeur (template) excel.
    Ce dernier, lors du clic sur nouveau (et non pas ouvrir) doit créer un classeur contenant une trentaine de feuilles de calculs à partir de données externes.
    Le code qui s'exécute ne doit s'exécuter qu'à ce moment là.
    Utilises l'évènement Open du classeur :
    - Celui-ci est aussi bien déclenché par la commande Nouveau que par Ouvrir.
    - Pour n'exécuter la macro que sur Nouveau, il suffit de tester Thisworkbook.Path = ""

    Mais vu que cette macro ne exécute qu'un seule fois il est préférable de la mettre dans un fichier externe dédié (xlsm, personnal ou xlam).

  8. #8
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 10
    Par défaut
    Merci
    Tout cela fonctionne à merveille.
    SUPER !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/03/2017, 11h24
  2. Réponses: 1
    Dernier message: 07/07/2008, 13h56
  3. [XSLT] template
    Par demo dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/09/2002, 11h31
  4. Modification de l'évènement OnClick
    Par MrJéjé dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2002, 12h52
  5. Redéfinir l'événement OnExit de mon composant TEditFloat
    Par Seb des Monts dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/06/2002, 16h10

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