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

VBA Discussion :

property let pour tableau de double


Sujet :

VBA

  1. #1
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 76
    Points : 49
    Points
    49
    Par défaut property let pour tableau de double
    je veux créer un module de classe qui a comme attributs entrez autres des tableaux de double ( à 2 entrées, de dimension quelconque?)
    voulant les droits en lecure-écriture, ai-je bien le droit -je débute- de définir:
    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
    Private CC() As Double
    Public Property Let C(Cb() As Double)
        ReDim CC(1 To n, 1 To p) As Double
        For j = 1 To p
            For i = 1 To n
                CC(i, j) = Cb(i, j)
            For j = 1 To p
        For i = 1 To n
    End Property
    Public Property Get C() As Double()
        For j = 1 To p
            For i = 1 To n
                C(i, j) = CC(i, j)
            Next i
        Next j
    End Property
    j'ai un doute... car vbe crashe à ce niveau...
    Merci

    déjà il faudrait sans doute passer n et p en arguments, non?

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    a priori la méthode suivante fonctionne pour les tableaux dynamiques...

    l'objet nommé <POO2> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private CC() As Double
    Public Property Let c(ByRef cb() As Double)
       CC = cb
    End Property
    Public Property Get c() As Double()
       c = CC
    End Property
    Une fonction de test :
    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
     
    Private Sub MonTest()
       Dim cb() As Double, ce() As Double
       Dim i As Integer, j As Integer, Minij As Integer
       Dim oo As POO2
       Randomize
       Minij = 1
       ReDim cb(Minij To 5, Minij To 2)
       Set oo = New POO2
    Debug.Print vbCrLf & "1) initialise cb()"
    Debug.Print "'i'", "'j'", "'cb(i,j)'"
       For j = Minij To UBound(cb, 2)
          For i = Minij To UBound(cb)
             cb(i, j) = Int(Rnd * 50)
    Debug.Print i, j, cb(i, j)
          Next i
       Next j
       oo.c = cb
    Debug.Print vbCrLf & "2) Affectation de cb() à l'objet"
    Debug.Print vbCrLf & "3) Efface cb()"
    Debug.Print "'i'", "'j'", "'cb(i,j)'"
       For j = Minij To UBound(cb, 2)
          For i = Minij To UBound(cb)
             cb(i, j) = 0
    Debug.Print i, j, cb(i, j)
          Next i
       Next j
    Debug.Print vbCrLf & "4) Réaffectation de cb() via l'objet"
       cb = oo.c
    Debug.Print vbCrLf & "5) Affectation directe ce() via l'objet"
       ce = oo.c
    Debug.Print "'i'", "'j'", "'cb(i,j)'", "'ce(i,j)'"
       For j = Minij To UBound(cb, 2)
          For i = Minij To UBound(cb)
    Debug.Print i, j, cb(i, j), ce(i, j)
          Next i
       Next j
    Debug.Print vbCrLf & "6) Détruit l'objet"
       Set oo = Nothing
    Debug.Print vbCrLf & "7) Vérification des tableaux cd() et ce()"
    Debug.Print "'i'", "'j'", "'cb(i,j)'", "'ce(i,j)'"
       For j = Minij To UBound(cb, 2)
          For i = Minij To UBound(cb)
    Debug.Print i, j, cb(i, j), ce(i, j)
          Next i
       Next j
    End Sub
    A vérifier selon votre utilisation...

    Philippe

  3. #3
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    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
    Private CC() As Double
    Public Property Let C(Cb() As Double)
        ReDim CC(1 To n, 1 To p) As Double
        For j = 1 To p
            For i = 1 To n
                CC(i, j) = Cb(i, j)
            For j = 1 To p        |
        For i = 1 To n            |<== Petit problème !!!!
    End Property
    Public Property Get C() As Double()
        For j = 1 To p
            For i = 1 To n
                C(i, j) = CC(i, j)
            Next i
        Next j
    End Property
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  4. #4
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    effectivement, merci garuda, j'avais mal copié-collé mais ça n'était pas à l'origine du problème ...
    Sinon, merci philben pour ta réponse détaillée:
    ton test marche, je comprends mieux mais j'ai toujours un truc (théorique) qui me bloque :
    pourquoi par exemple un me retourne une erreur (oo.C est bien signalé comme un tableau de double ...) ?

    Merci!

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    debug.print oo.C(1,1)me retourne une erreur (oo.C est bien signalé comme un tableau de double ...) ?
    c'est normal puisque la propriété Get C() n'attend pas de paramètre.

    Deux possibilités :

    * soit écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Debug.Print oo.c()(1, 1)
    ce qui en clair, on demande le contenu de la cellule 1,1 du tableau retourné par la propriété get C().

    * soit ajouter une propriété qui retourne un élément particulier du tableau (j'ai pas mis les vérifs d'usage des paramètres) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Property Get GetElement(ByVal i As Integer, ByVal j As Integer) As Double
       GetElement = CC(i, j)
    End Property
    Appel par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Debug.Print oo.GetElement(1, 1)
    Philippe

  6. #6
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Merci beaucoup!

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

Discussions similaires

  1. Active X, Property Get, Let pour Icone
    Par avigeilpro dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/04/2007, 15h27
  2. Réponses: 1
    Dernier message: 27/04/2007, 13h56
  3. [VB6] utilisation de Property LET / GET pour un tableau
    Par titounne dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 18/10/2004, 22h06
  4. Réponses: 4
    Dernier message: 12/09/2003, 11h38
  5. abs pour un long double
    Par barthelv dans le forum C
    Réponses: 2
    Dernier message: 23/07/2003, 16h16

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