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 :

Withevent dans un module standard [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de Projet Automatisme et IT
    Inscrit en
    Juillet 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de Projet Automatisme et IT
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Withevent dans un module standard
    Bonjour,
    je modifie mon post, car j'ai l'impression que ça ne parait pas claire.
    J'aimerais utiliser un objet "OPCGroup" de VBA excel avec la propiété WithEvents dans un module pour pouvoir utiliser la fonction WorkBook_Open(). Mon problème étant que "WithEvents" n'est pas accpeté dans un module.

    D'une part dans ThisWorkBook :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Application.OnTime TimeValue("16:00:00"), "test"
    End Sub
    d'autre part dans un module :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Option Explicit  ' every variable has to be declared
    Option Base 1    ' every Array starts on Index 1
     
    Private MyOPCServer As OPCServer
    Private WithEvents MyOPCGroup As OPCGroup
    Private MyOPCItems() As OPCItem
     
    Private Sub test()
     
        Dim SHandles(10) As Long  'parameter value
        Dim Values(10) As Variant 'parameter value
        Dim Errors() As Long     'return value
        Dim i As Integer
     
     
        'save ServerHandles
        For i = 1 To 10
            SHandles(i) = MyOPCItems(i).ServerHandle
        Next i
     
        'find out the values which are written into the following cells (line 11+12, column F)
        'this values should be writen into PLC
     
        For i = 1 To 10
              Values(i) = Cells(8 + i, 6)
              If Values(i) = "" Then Values(i) = 0
        Next i
     
        Call MyOPCGroup.SyncWrite(10, SHandles, Values, Errors)
     
    End Sub
    A savoir que la fonction "test" fonctionne correctement sur un event "click"
    Merci de votre aide par avance.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour

    Citation Envoyé par terrypical Voir le message
    Bonjour,
    je modifie mon post, car j'ai l'impression que ça ne parait pas claire.
    J'aimerais utiliser un objet "OPCGroup" de VBA excel avec la propiété WithEvents dans un module pour pouvoir utiliser la fonction WorkBook_Open(). Mon problème étant que "WithEvents" n'est pas accpeté dans un module.
    Il n'y a aucun objet OPCGroup dans VBA et tu ne dis pas quand et avec quoi, tu déclenches in événement Click

    Ton objet OPCGroup est donc un objet tout à fait externe à VB-VBA.

    Ceci dit, rien n'empêche d'avoir quelque chose de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Machin_Click
       Test
    end sub
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Il faut déclarer les variable avec le modificateur 'WithEvents' dans un module object ou de classe. Les module standard ne gèrent pas les événements.

  4. #4
    Candidat au Club
    Homme Profil pro
    Chef de Projet Automatisme et IT
    Inscrit en
    Juillet 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de Projet Automatisme et IT
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    @clementmarcotte
    Je travaille sur Excel 2010, OPCGroup est un objet (DLL OPC_auto) et références
    Nom : ee.png
Affichages : 541
Taille : 28,4 Ko

    Mon problème ne vient pas de l'objet mais de son utilisation, je veux lancer une macro contenant ma fonction "test" a l'heure indiqué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Application.OnTime TimeValue("11:00:00"), "test"
    End Sub
    on ne peut pas laisser la fonction dans "sheet1" car elle est inaccessible
    Nom : zz.png
Affichages : 653
Taille : 58,7 Ko

    et dans module je ne peux pas déclaré WithEvents.

    @Nouveau2
    déclaré la variable dans un module de classe d'accord mais la fonction aussi je dois l'écrire dans ce module??
    j'ai des erreur de ce type, quand je laisse ma fonction dans "sheet1" ou "module de classe".
    Nom : zz.png
Affichages : 653
Taille : 58,7 Ko

    si vous avez un exemple de ce qui peut marcher je suis preneur.
    merci d'avance.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Utilise le nom complet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_Open()
        Application.OnTime TimeValue("11:00:00"), "Sheet1.Test"
    'ou alors
        'Application.OnTime TimeValue("11:00:00"), "VBAProject.Sheet1.Test"
    End Sub
    Ca fonctionne même si la méthode est privée d'ailleurs.

  6. #6
    Candidat au Club
    Homme Profil pro
    Chef de Projet Automatisme et IT
    Inscrit en
    Juillet 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de Projet Automatisme et IT
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    et bien un grand merci à toi Nouveau2

    en effet c'était juste lié à ce mauvais appel.

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

Discussions similaires

  1. [XL-2010] Utiliser une fonction contenue dans un module standard dans un userform
    Par tony76 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 07/05/2015, 07h14
  2. Réponses: 4
    Dernier message: 27/11/2009, 17h08
  3. erreur avec withevents dans un module de classe
    Par patbou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/12/2007, 04h32
  4. [VB.NET] Appeler une sub public dans un module de form
    Par SergeF dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/06/2004, 13h08

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