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ébutant Module de Classe / Pb de event change [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur amateur VBA Excel
    Inscrit en
    Janvier 2013
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur amateur VBA Excel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 69
    Par défaut Débutant Module de Classe / Pb de event change
    Bonjour,

    Je cale un peu sur une erreur que je fait dans un module de classe.
    Mon "projet" est de réussir a faire tout un tas d'opération (vérif, lancement de procedure,etc...) lorsque mon textbox change en fonction de son tag.

    Je pense que la partie module normal fonctionne (avec des valeurs espionne j'ai pu voir que mes textbox "entraient" bien dans la classe mais la classe ne réagi pas quand je change la valeur. Pourriez vous m'éclairer de vos lumières car là, j'avais l'impression de commencer à comprendre le fonctionement de VBA mais les classes ça me donne l'impression d'etre arrivé à l'entré du chateau du boss de fin de vba ...

    Module normal :
    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
    Sub IntegrerTextbox()
    Dim LeCalculeur(1000) As BoxAcalculer 'je sais que je devrait faire des redim pour économiser de la mémoire mais j'ai pas encore fait ...
     
    Dim i As Integer
    Dim Ctu As MSForms.Control
     
     
    i = 0
        For Each Ctu In Porte1.Controls
        If Ctu.Tag <> "" Then
                Set LeCalculeur(i) = New BoxAcalculer
                Set LeCalculeur(i).LaTextbox = Ctu
                i = i + 1
            End If
        Next Ctu
    Porte1.Show 0
    End Sub

    Le module de classe :
    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
     
    'on déclare une variable de notre classe dans laquelle on va placer le controle
    Public WithEvents LaTextbox As MSForms.TextBox
     
     
    Private Sub LaTextbox_Change()   'cette fonction se déclenche si la valeur du controle est "changé"
    Dim infosTag As Variant         'Dans cette variable nous allons stocker les infos qui sont dans le tag
     
     
    If LaTextbox.Tag <> "" Then      'on ne lance en fait cette sub que si le champs tag est rempli
        infosTag = Split(LaTextbox.Tag, ",") 'on découpe les info du tag pour les mettre dans un tableau
     
        Select Case infotag(0)  ' on verifi ce que lon doit faire en fonction de la preiere partie du tag
            Case Is = "A"       ' si le tag commence par A
     
                msgbox "A"
     
            Case Is = "B"       ' si le tag commence par B
     
                MsgBox "B"
     
            End Select
    End If
    End Sub
    Merci d'avance du temps que vous prendrez à lire mon code de débutant.

  2. #2
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Que se passe-t-il si tu déclares ta variable LeCalculeur(1000) As BoxAcalculer en Public dans ton module standard ?
    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public LeCalculeur(1000) As BoxAcalculer
     
    Sub IntegrerTextbox()
     
    Dim i As Integer
    Dim Ctu As MSForms.Control
    'etc....

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur amateur VBA Excel
    Inscrit en
    Janvier 2013
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur amateur VBA Excel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 69
    Par défaut
    Merci !!!!!!!!!!!!! Ca marche !!!!!!

    Bon je me suis pas trop trop ridiculiser, l'erreur était "petite" .

    Merci encore

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

Discussions similaires

  1. [XL-2003] Ajouter dynamiquement des Events à une Feuille via un module de classe.
    Par comme de bien entendu dans le forum Excel
    Réponses: 4
    Dernier message: 10/06/2012, 07h11
  2. [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
  3. [Débutant(e)]Erreur 'class' or 'interface' expect
    Par chevy dans le forum Général Java
    Réponses: 7
    Dernier message: 30/03/2005, 08h13
  4. [Débutant(e)] toString + classes abstraites
    Par debdev dans le forum Langage
    Réponses: 9
    Dernier message: 26/01/2005, 15h22
  5. [Débutant]Déterminer la classe d'un objet
    Par Wisefool dans le forum Langage
    Réponses: 4
    Dernier message: 06/05/2004, 12h55

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