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 :

Une classe dans une classe? [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 4
    Par défaut Une classe dans une classe?
    Bonjour,

    Contextualisation du problème :
    Je suis enseignant et je souhaite créer une petite macro afin de créer automatiquement des groupes pour mes élèves selon leurs affinités.
    Après avoir effectué quelques tests sur une feuille Excel pour savoir si cela était faisable (la procédure demandant une optimisation avec des variables binaires, je n'étais pas convaincu de l'efficacité/pertinence de Excel), je me lance maintenant dans l'automatisation de la création des groupes avec de belles macros.

    Rentrons maintenant dans le vif du sujet.
    Pour faire ma macro, je vais utiliser 2 classes :
    - La classe cEleve où j'aurais le nom et le prénom de l'élève - mNom et mPrenom en "string".
    - La classe cClasse avec juste le nom de la classe : Ex CE2 - mNom_Classe en "string", le nombre d'élèves dans la classe de CE2 en -N_Eleves en "integer" - et la liste d'élèves - mEleves() de type "cEleve".
    Afin de limiter la confusion entre une classe de vba, et une classe d'élèves, j'ai choisi de mettre en italique lorsque je parle d'une classe d'élèves!

    Le problème :
    Et j'ai un problème qui intervient très rapidement...
    Dès que je souhaite donner le nom à un élève d'une classe de CE2, je suis confronté à des erreurs dans tous les sens, soit incompatibilité de type, soit le programme lit la valeur existante au lieu de lui donner la valeur... etc... suivant mes tentatives pour corriger le problème.

    Voici la portion de code me servant de test qui pose problème, avec en gras la ligne qui bug:
    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
    Option Base 1
    Option Explicit
    
    Sub test()
    
    Dim Jean As New cEleve
    
    Jean.Nom = "Truc"
    Jean.Prenom = "Jean"
    
    Dim CE2 As New cClasse
    CE2.N_Eleves = 1
    
    CE2.Eleves(1).Nom = Jean.Nom
    
    End Sub
    Le message d'erreur actuel est : "L'indice n'appartient pas à la sélection".
    En mode debug, à la ligne en gras, je rentre dans la classe cEleve et lit la valeur du nom - Ligne 9 du code ci dessous.
    Puis j'entre dans la classe cClasse à la ligne 32. Qui veut lire la valeur de l'élève dans la mEleve() au lieu de l’attribuer...

    Codes
    La classe Cclasse
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    Option Explicit
    Option Base 1
     
    Private mNom_Classe As String
    Private mN_Eleves As Integer
    Private mEleves() As cEleve
     
    Private Affinite() As Double
     
    Property Get Nom_Classe() As String
        ' Propriété en lecture
        Nom_Classe = mNom_Classe
    End Property
     
    Property Let Nom_Classe(Nom_Classe As String)
        ' Propriété en écriture
        mNom_Classe = Nom_Classe
    End Property
     
    Property Get N_Eleves() As Integer
        ' Propriété en lecture
        N_Eleves = mN_Eleves
    End Property
     
    Property Let N_Eleves(N_Eleves As Integer)
        ' Propriété en écriture
        mN_Eleves = N_Eleves
        ReDim mEleve(mN_Eleves)
    End Property
     
    Property Get Eleves() As cEleve
    ' Propriété en lecture
    Dim i As Integer
     
    For i = 1 To mN_Eleves
        Eleves(i).Nom = mEleves(i).Nom
        Eleves(i).Prenom = mEleves(i).Prenom
    Next i
    End Property
     
    Property Let Eleves(Eleves As cEleve)
        ' Propriété en écriture
        Dim i As Integer
     
        For i = 1 To mN_Eleves
            ' Propriété en lecture
            mEleves(i).Nom = Eleves(i).Nom
            mEleves(i).Prenom = Eleves(i).Prenom
        Next i
    End Property
    La classe cEleve
    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
     
    Option Explicit
    Option Base 1
     
    Private mNom As String
    Private mPrenom As String
     
     
    Property Get Nom() As String
        ' Propriété en lecture
        Nom = mNom
    End Property
     
    Property Let Nom(Nom As String)
        ' Propriété en écriture
        mNom = UCase(Nom)
    End Property
     
    Property Get Prenom() As String
        ' Propriété en lecture
        Prenom = mPrenom
    End Property
     
    Property Let Prenom(Prenom As String)
        ' Propriété en écriture
        mPrenom = UCase(Prenom)
    End Property
    Je suis persuadé que l'erreur est extrêmement simple à corriger lorsqu'on sait quoi mettre, mais je n'ai pas trouvé la solution pour le moment.
    La seule alternative que j'ai pu trouver aurait été d'utiliser des collections, mais je ne sais pas pourquoi, ça ne me tente pas...

    Cordialement,

    T. MARTIN

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    étant un parfait incompétent avec les modules de classe (les habitués comprendrons, mais un jour viendra .... ), je me pose quand même une question

    pourquoi ne pas créer une méthode (Ajoute_Eleve) dans ta classe clsClasse qui permet d'ajouter un élève ?

    je crois que c'est le but des classes, c'est de réaliser toutes les besognes sans que le code "non classé" ait à le faire

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Classe1.Ajoute_Eleve(Jean.Nom)
    Et côté Module clsClasse ... euh, j'ai déjà dit que j'étais un parfait incompétent ou pas ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 4
    Par défaut
    Merci Joe pour ta proposition, mais en fait, elle existe déjà ^^

    Je ne l'ai pas mise pour épurer au maximum le code et mettre en avant le problème!

    En ajoutant cette méthode, il y a un moment où je suis confronté à une situation similaire... (suivant comment je m'y suis pris pour la coder)
    Et je me suis dis que si je n'arrivais pas encore le cas simple, ce n'était pas la peine de trop insister pour le moment sur la subroutine Ajouter_Eleve...

    La subroutine dans cClasse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub Ajouter_Eleve(ByVal Eleve As cEleve)
     
    mN_Eleves=m_N_Eleves+1
    ReDim mEleve(mN_Eleves)
    Set mEleve(n + 1) = Eleve
     
    End Sub
    Je précise que je maîtrise pas entièrement le "Set" que j'ai mis dans le code, mais il semblait plus ou moins marcher dans d'autres situations.

    Si je tente d'utiliser cette subroutine : Classe1.Ajouter_Eleve (Jean), j'ai alors le message d'erreur suivant :
    "Propriété ou méthode non gérée par cet objet"


    Mais si tu as d'autres idées, je suis toujours preneur :d

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir perso pour 3 valeurs(nnom,nprenom,nclasseeleve ) j'utiliserais pseudos classes avec des variables type en publique

    j'utilise souvent ce principe en l'appelant une classe sans module classe
    a méditer
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Je ne vais surtout pas m'aventurer à te donner des leçons ou des conseils avec les Classes !
    y'a des mieux placés que moi (Patrick, Robert etc...) qui vont sûrement s'en occuper


    par contre, ta variable mEleve étant un tableau et non un Object, je ne pense pas que le Set soit une bonne chose ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 4
    Par défaut
    Merci Patrick,

    Je précise que j'ai donné que le minimum pour expliquer le problème, derrière, j'aurais du coup quelques données supplémentaires à fournir par classe :
    - une matrice représentant les affinités entre les personnes.
    - Le nombre maximum de groupe voulu pour la classe.
    - Minimum et maximum d'élèves par groupe.
    - et surtout les subroutines permettant de me fournir des groupes avec le meilleur "contentement global".
    Le nombre de valeurs resterait tout le même assez limité (moins d'une dizaine), donc l'idée du type publique peut me plaire, mais à une seule condition : Peut-on quand même leur attribuer des subroutines?
    Car c'est pour cette raison que je me suis mis en tête de passer par les classes, si je peux les contourner simplement, ça me convient parfaitement!

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    un exemple comme ca vite fait a l'arrache

    test ca dans un module standard et non un module 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
    Public Type pn
    nom As String
    prenom As String
    age As Long
    End Type
    Public Type E
    nombre_eleve As Long
    eleve_N°(100) As pn
    End Type
    Dim classe(100) As E
    Sub test()
    classe(1).nombre_eleve = 25
    classe(1).eleve_N°(1).prenom = "Henry"
    classe(1).eleve_N°(1).nom = "DuVal"
    classe(1).eleve_N°(1).age = 15
    classe(3).eleve_N°(5).prenom = "jacques"
    classe(3).eleve_N°(5).nom = "Martin"
    classe(3).eleve_N°(5).age = 12
     
    MsgBox "l 'age du premier eleve de la classe(1) est : " & classe(1).eleve_N°(1).age & " ans"
    MsgBox "le prenom du 5eme eleve de la 3 eme classe est : " & classe(3).eleve_N°(5).prenom
     
    End Sub
    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonsoir Martin,

    J'ai l'impression que tu as été un peu vite en besogne!

    Pour mon information, précises moi l'organisation du traitement, car je ne voudrais pas mélanger les termes!

    Classe pour Cm2 par exemple et classe pour module de classe.

    donc dison que tu as 4 classe (ec1,Ce2,Cm1,Cm2), je prend cette exemple pour pas mélanger les terme.

    Si je gère mais classe sous forme de collection (dictionary) je peux les gère par leurs noms, ma collection fonctionne comme un changement de rails, pas besoin de m'en soucier.

    Maintenant faisons la liaison avec le module de classes.

    J'utilise ma collection pour gérer mes module de classe!

    Code test si Ce2 existe dans la collection : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If myCollection.exist("Ce2") = False then myCollection.add new clsClasse,"Ce2"

    Maintenant pour chaque nouvelle instance de clsClasse j'utilise la méthode initalised pour insencier un collection élevé

    Chaque fois que je veux rajouter un élève à mon instance Ce2, je ne gère pas la méthode add, mais je pass a bun sub public de clsclasse le informations sur l'élève.
    Code informationEleve : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myCollection("Ce2").InformationEleve("robert","Dysorthographie","Autre")
    Il appartiendra à la méthode InformationEleve de vérifier si l'élève appartient a la collection collectionEleve!

    Edite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim Classes As Object
    Set Classes = CreateObject("Scripting.Dictionary")
    If Classes.exists("Ce1") = False Then Classes.Add "Ce1", New ClsClasse
    If Classes.exists("Ce2") = False Then Classes.Add "Ce2", New ClsClasse
    If Classes.exists("Cm1") = False Then Classes.Add "Cm1", New ClsClasse
    If Classes.exists("Cm2") = False Then Classes.Add "Cm2", New ClsClasse
    Classes("Ce1").InformationEleve "Ce1", "Dysorthographie", "robert"
    End Sub
    Code ClsClasse : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Public Eleves As Object
    Private CasseName As String
    Private Sub Class_Initialize()
    Set Eleves = CreateObject("Scripting.Dictionary")
    End Sub
     
     
    Private Sub Class_Terminate()
    Set Eleves = Nothing
    End Sub
    Public Sub InformationEleve(Class As String, ElvNom As String, ElvPnom As String)
    CasseName = Class
    If Eleves.exists(ElvNom) = False Then Eleves.Add ElvNom, New ClsEleve
    Eleves(ElvNom).Nom = ElvNom: Eleves(ElvNom).Pnom = ElvPnom
    End Sub
    Code ClsEleve : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Nom As String
    Public Pnom As String
    les module de classes implique une autre façon de résonner, il faut les considérer comme de modèle, il sont en soit fini et savent ce gérer seule! clsClase se gère tout seule! tu lui donne les information et il s'en débrouille! ce n'est pas le problème de la sub test !
    Images attachées Images attachées  
    Dernière modification par Invité ; 12/11/2016 à 23h47.

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    robert
    et si il y a des jumeaux dans la même classe on est bien ennuyé hein!!!!...

    ou bien encore 2 robert ou 2 Patrick hein!!! comment on fait
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Invité
    Invité(e)
    Par défaut
    il s'agit juste d'un exemple mais on peut faire exactement c que on veux!

    il faut toujours prévoir un clé unique, un élève peut faire partie de plusieurs groupe logique!
    J’associe un élève à plieurs collections et J’associe plusieurs collection à un élève pour passe d'un groupe à l'autre de tous les niveaux de la chêne!

    classes.eleves.gentils.YeuxBleue.Eleves .cheveux.Classes.eleves.classes.mechant!


    dans d'autre langage on utiliserait l’héritage, mais là on l'associe à plusieurs collections!

    c'est pour cela qu'il faut bien analyser sa problématique!
    J'ai l'impression que tu as été un peu vite en besogne!
    dans un autre poste j'ai abordé la question de la belote (4 joueur,2 équipes et 32 carte)
    Dernière modification par Invité ; 13/11/2016 à 00h15.

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    tiens voila un exemple avec recherche d'élève par le prénom on peut bien entendu organiser la recherche par le nom l'age la date de naissance ou ce que tu veux dans la 2d boucle sur "E"

    voila un exemple de pseudoclasse
    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
    Public Type pn
        nom As String
        prenom As String
        age As Long
        naissance As String
    End Type
    Public Type CL
        nombre_eleve As Long
        eleve_N°(100) As pn
        niveau As String
    End Type
    Public classe(100) As CL
    Sub pseudoclasse()
        classe(1).nombre_eleve = 25
        classe(1).niveau = "CE2"
        classe(1).eleve_N°(1).prenom = "Henry"
        classe(1).eleve_N°(1).nom = "DuVal"
        classe(1).eleve_N°(1).age = 15
        classe(1).eleve_N°(1).naissance = "02/05/2001"
        classe(3).nombre_eleve = 17
        classe(3).niveau = "CM1"
        classe(3).eleve_N°(5).prenom = "jacques"
        classe(3).eleve_N°(5).nom = "Martin"
        classe(3).eleve_N°(5).age = 12
        classe(3).eleve_N°(5).naissance = "02/05/2004"
     
        'MsgBox "l 'age du premier eleve de la classe(1) est : " & classe(1).eleve_N°(1).age & " ans"
        'MsgBox "le prenom du 5eme eleve de la 3 eme classe est : " & classe(3).eleve_N°(5).prenom
    End Sub
    maintenant la fonction recherche par le prénom elle renvoie une variable tableau contenant les donnée de l élève
    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
    Function cherche_eleve(pren) As Variant
        Dim tablo(5)
        mess = "fiche personel de " & pren & vbCrLf
        For c = 0 To UBound(classe)
            For E = 0 To UBound(classe(c).eleve_N°)
                If classe(c).eleve_N°(E).prenom = pren Then
                    tablo(0) = classe(c).niveau
                    tablo(1) = classe(c).eleve_N°(E).nom
                    tablo(2) = classe(c).eleve_N°(E).prenom
                    tablo(3) = classe(c).eleve_N°(E).age
                    tablo(4) = classe(c).eleve_N°(E).naissance
                End If
            Next E
        Next c
        cherche_eleve = tablo
    End Function
    et la sub de test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
        fiche = cherche_eleve("jacques")
     
        mess = "fiche personel de " & pren & vbCrLf
        mess = mess & " classe de  " & fiche(0) & vbCrLf
        mess = mess & " nom : " & fiche(1) & vbCrLf
        mess = mess & " prénom : " & fiche(2) & vbCrLf
        mess = mess & " age : " & fiche(3) & vbCrLf
        mess = mess & " Date de naissance  : " & fiche(4) & vbCrLf
    MsgBox mess
    End Sub
    bonne lecture
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #12
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 4
    Par défaut
    Etant encore débutant en vba, je vais partir sur la méthode de Patrick qui me semble la plus simple à mettre en oeuvre. (Et qui utilisent que des notions que je connais!)
    Surtout que mon programme restera très court, je peux encore me passer de vraies classes.

    Si je trouve une autre méthode lors de mes futures recherches, je repasserai l'indiquer ici.

    Merci de vos aides!

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    no!!! elle n'est absolument pas plus simple d'ailleurs si tu regarde bien on procède de la même manière qu'avec une classe

    je peux te faire la même chose avec une classe si tu veux pour comparer

    la seule différence c'est que la variable classe(x) est un variant avec des pré type plutôt qu'affilié a un module classe

    mais le fonctionnement est absolument identique !!!!!

    la seule difference c'est la consomation de l'uc une variant classe() contient une voir plusieurs fois une instance du module classe
    tandis qu'avec les variant pré typé ne contient que les prévalue des privâtes type

    voila voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  2. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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