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

Excel Discussion :

Ajouter dynamiquement des Events à une Feuille via un module de classe.


Sujet :

Excel

  1. #1
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut Ajouter dynamiquement des Events à une Feuille via un module de classe.
    Bonjour,

    Je crée des nouvelle feuilles dans un Classeur Excel et je souhaite qu'elles fassent appel à une procédure sur Double Clique.
    J'ai crée un module de classe avec un WithEvents dans lequel j'ai spécifié ma procédure, mais ensuite je n'arrive pas à instancier cette nouvelle feuille créee.

    Voilà le code du module de Classe GpeFeuilles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public WithEvents mesFeuilles As Worksheet
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Action_DE.Action
    End Sub
    Ensuite je veux créer ma feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim mesFeuilles() As New GpeFeuilles
     ...
     Nbfeuille = Worksheets.Count
     ReDim Preserve mesFeuilles(Nbfeuille + 1)
     Set ActiveSheet = MyWorkbook.mesFeuilles(Nbfeuille + 1)
    mais ca plante en ligne 5 avec ce message.

    Propriété ou méthode non géré par cet objet
    Est ce que vous sauriez comment faire ?
    D'avance merci.

  2. #2
    Membre confirmé Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 353
    Points : 633
    Points
    633
    Par défaut
    Bonjour,

    Je ne code pas en VBA mais j'ai une piste (en espérant que la logique soit la même dans tous les langages de programmation )...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim mesFeuilles() As New GpeFeuilles
     ...
     Nbfeuille = Worksheets.Count
     ReDim Preserve mesFeuilles(Nbfeuille + 1)
     Set ActiveSheet = MyWorkbook.mesFeuilles(Nbfeuille + 1)
    Dans ta syntaxe, MyWorkbook est le nom d'une classe et mesFeuilles est une propriété ou une méthode liée à cette classe... cela parait étrange et à mon avis à revoir (ou à m'expliquer)

    Bertrand

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Points : 175
    Points
    175
    Par défaut
    Salut

    ActiveSheet est une propriété en lecture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Le nom de ma feuille est " & ActiveSheet.Name
    Pour sélectionner une feuille il faut plutôt faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("MaFeuille").Activate
    Pourquoi un module de classe? Tu crées une nouvelle classe?
    Il n'y en a pas besoin à mon avis, et un module simple doit suffire...

    PS: ce message devrait être sous VBA

  4. #4
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut
    Bonjour,
    En fait ce post devait se trouver dans la partie Développement/Macro Excel.
    Vous trouverez les reponses dans cette le lien ci-dessous.

    http://www.developpez.net/forums/d12...module-classe/

    On a vraiment besoin d'utiliser un module de Classe pour faire ce genre de choses. C'est comme faire une implémentation d'interface en Java.

    Merci de vos idées.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Points : 175
    Points
    175
    Par défaut
    Si le fil a changé, il vaudrait mieux clôturer celui-ci en faisant "Résolu" et même "Délestage" ce qui permet à un modérateur de le supprimer...

Discussions similaires

  1. [XL-2003] Ajouter dynamiquement des Events à une Feuille via un module de classe.
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2012, 18h06
  2. [débutant] ajouter des contrôles à une feuille par code
    Par Claude_Azoulai dans le forum VB.NET
    Réponses: 3
    Dernier message: 03/04/2010, 18h51
  3. Réponses: 3
    Dernier message: 27/03/2008, 14h41
  4. ajouter dynamiquement des items dans un popup menu
    Par Malone dans le forum Composants VCL
    Réponses: 7
    Dernier message: 23/08/2005, 16h08
  5. [VB.NET] Manipuler une feuille via un module
    Par dinbougre dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/01/2005, 17h15

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