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 :

Détecter les évènements d'un classeur depuis un complément


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Santé

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut Détecter les évènements d'un classeur depuis un complément
    Bonjour à tous,

    je code actuellement un complément Excel pour un déploiement plus facile sur les postes de l'entreprise, et je cherche une méthode pour détecter les évènements des classeurs ouverts depuis ce complément sans être obligé de rajouter du code VBA dans les fichiers Excel des utilisateurs.

    Actuellement, j'ajoute ça dans les fichiers Excel (objet workbook) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Sub Workbook_Open()
     
    Call Application.Run("GxPAT.xlam!OpenWB", ThisWorkbook)
     
    End Sub
    Et je souhaiterai que ça se lance sans avoir à ajouter de VBA dans ces fichiers.

    Si vous avez une piste, je vous en serai excessivement reconnaissant, je n'ai rien trouvé dans mes recherches ni mes essais...

    Cordialement,

    Stef

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    pour que cela se lance je en place ton .xlam dans "compléments" de l'onglet développeur malheureusement il faut le faire sur chaque poste utilisateur.

    donc si ils sont une dizaine ça peut se faire, s'ils sont plus cela devient une grosse galère et penser à une autre solution

    donc ma question Combien sont'ils?

    A bientôt

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Santé

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut
    Merci pour la première piste,

    ils sont "nombreux" voire potentiellement quelques centaines, mais je voudrai garder le complément comme "caché", ou du moins qu'il soit transparent pour les utilisateurs. Je me suis posé la question aussi de son activation, effectivement il faudrait peut-être le faire manuellement dans ce cas.

    Ce que j'ai fait pour le moment c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    Sub Workbook_Open()
     
    AddIns("Gxpat").Installed = True
     
    ' Checking that the Audit Trail Addin is opened
    On Error Resume Next    ' turn off error checking
    Set ATComp = Workbooks(AddIns("Gxpat").Name)
    LastError = Err
    On Error GoTo 0        ' restore error checking
    If LastError <> 0 Then
        ' the add-in workbook isn't currently open. Manually open it.
        Set ATComp = Workbooks.Open(AddIns("Gxpat").Name)
    End If
     
    Call Application.Run("GxPAT.xlam!OpenWB", ThisWorkbook)
     
    End Sub
    Ce qui active automatiquement le complément à l'ouverture du classeur.

    La question d'origine est un peu différente: j'ai un code qui se lance quand l'utilisateur modifie son fichier Excel, normalement on détecte cet évènement en utilisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub Workbook_SheetChange(ByVal ShId As Object, ByVal Source As Range)
     
    Call Application.Run("GxPAT.xlam!RecSheetChange", ShId, Source, ThisWorkbook) ' lance le code de mon complément qui agit sur la modification
     
    End Sub
    Et je voudrai pouvoir détecter ce type d'évènement directement depuis mon complément sans inclure ce code dans le tableur Excel d'origine...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Santé

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Par défaut
    Merci Pierre pour cette réponse, ça m'éclaire déjà beaucoup plus.

    Pour le déploiement du complément, je vais voir avec l'IT s'ils peuvent le faire eux-même à distance.

    Je place le sujet en résolu !

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par StefBBR Voir le message
    [...]Et je voudrai pouvoir détecter ce type d'évènement directement depuis mon complément sans inclure ce code dans le tableur Excel d'origine...
    Je t'ai donné une piste pour activer le complément à l'ouverture d'Excel et pour qu'il capture l'évènement sur n'importe quel classeur.

    Note toutefois que cet évènement survient après l'évènement identique sur ledit classeur, qui survient lui-même après un évènement de feuille.

    Donc, si tu as par exemple ton complément avec une capture de SheetActivate au niveau xlApp, que tu utilises un classeur qui gère aussi SheetActivate et que tu actives une feuille qui gère elle aussi son activation, tu auras les évènements dans l'ordre suivant:
    Activation de la feuille
    Activation de la feuille au niveau du classeur
    Activation de la feuille au niveau application

    Fais très attention à ta gestion d'évènements car un code sur lequel tu n'as pas la maîtrise pourrait te faire partir en vrille.

    Note également qu'il est impératif que tu gères les erreurs (on error...) pour rendre proprement la main en cas de soucis, car ton code entrera en concurrence avec du code écrit dans les classeurs ouverts.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Dans le module du workbook de ton complément, tu peux créer un objet Excel.Application en le déclarant avec WithEvents. Cela te permettra d'écouter les évènements de l'application. Il te suffit alors d'initisaliser l'objet à l'ouverture de ton complément et de gérer les évènements qui sont liés à l'application.

    Nom : Capture.PNG
Affichages : 604
Taille : 28,5 Ko

    Après, si tu places ton complément (un xlam) dans le dossier de démarrage d'Excel des utilisateurs, ton complément est lancé au démarrage d'Excel. Tu dois évidemment déployer ce complément sur tous les postes concernés.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. Détecter tous les événements d'un document html
    Par abysr dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/03/2017, 16h23
  2. Détecter les événements en tâche de fond
    Par barden dans le forum Qt
    Réponses: 5
    Dernier message: 29/08/2012, 18h14
  3. Détecter les évènements survenus sur la barre de défilement
    Par kamikazw2 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 18/05/2012, 19h45
  4. Réponses: 2
    Dernier message: 24/10/2008, 11h08
  5. [COM] Comment utiliser les événements Word ?
    Par Laurent Dardenne dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 30/05/2004, 12h38

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