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 :

pb charger table type utilisateur > 64k


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Par défaut pb charger table type utilisateur > 64k
    Bonjour,

    j'ai à disposition dans une feuille d'un classeur Excel une extraction d'une base de données
    et j'essaye de charger ces données dans une table VBA (type utilistateur).
    voici la structure des types utilisés (toute remarque sera la bienvenue) :

    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
    Public Type TVENTES
        VV(1 To 2, 1 To 3, 1 To 12) As Double  
        VU(1 To 2, 1 To 3, 1 To 12) As Double
    End Type
     
     
    Public Type ITEM
        EAN As Double
        GROUP As String
        MANUF As String
        BRAND As String
        PROP As String
        LIC As String
        CAT As String
        VENTES As TVENTES
    End Type
     
    Public Type TOTITEM
        NBE As Integer
        ITEM(1 To 50) As ITEM
    End Type

    Lorque que je charge mes données dans la table TOTITEM tout se passe bien si le nombre de lignes maximum du type TOTITEM n'est pas trop élevé.
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	Public Type TOTITEM
    	    NBE As Integer
    	    ITEM(1 To 50) As ITEM
    	End Type
    '=>OK
     
     
    	Public Type TOTITEM
    	    NBE As Integer
    	    ITEM(1 To 50) As ITEM
    	End Type
    '=>pas OK. un message d'erreur s'affiche :
    	"Compile error :
    	Fixed or static data can't be larger than 64K"
    Comment puis-je contourner ce problème?

    Un grand merci d'avance!!



    Pour info voici la procédure que j'utise pour charger la table DB de type TOTITEM (déclarée en public) :

    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
    Public Sub LOAD_DB()
     
    Dim I, J As Integer
     
    DB.NBE = 0
    I = 5
     
    While I <= 54
        DB.NBE = DB.NBE + 1
        DB.ITEM(DB.NBE).EAN = Range("A" & I).Value
        DB.ITEM(DB.NBE).GROUP = Range("B" & I).Value
        DB.ITEM(DB.NBE).MANUF = Range("C" & I).Value
        DB.ITEM(DB.NBE).BRAND = Range("D" & I).Value
        DB.ITEM(DB.NBE).PROP = Range("E" & I).Value
        DB.ITEM(DB.NBE).LIC = Range("F" & I).Value
        DB.ITEM(DB.NBE).CAT = Range("G" & I).Value
        For J = 1 To 12
            DB.ITEM(DB.NBE).VENTES.VV(1, 1, J) = Cells(I, J + 7)
        Next J
    I = I + 1
    Wend
     
     
    End Sub

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour


    Ce lien pourra certainement t'aider :
    http://www.developpez.net/forums/d15...riables-64-ko/

    bon week end
    michel

  3. #3
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Et celui-là explicite le problème rencontré :Microsoft aide et support
    Apparemment, tu ne vas pas pouvoir utiliser des variables de type utilisateur. Mais bon, avec des tableaux classiques ...

    Sinon, comme tu dis
    (toute remarque sera la bienvenue)
    puis-je te suggérer :

    1. de ne pas utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...= Range("A" & I).Value
    A moins d'être sûr de n'avoir qu'un classeur ne contenant qu'une feuille.

    2. tu peux charger toute la zone de données en une fois dans un tableau, c'est beaucoup plus rapide que cellule par celule,

    3. pour désigner tes colonnes, si tu ne trouves pas clair ou dangereux d'utiliser des indices numériques, tu peux utiliser des constantes personnelles. Par exemple, pour la première colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const cpsEAN as integer = 1
    Qui te permet ensuite d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonBeauTablau(i, cpsEAN)
    Cordialement,

    PGZ

Discussions similaires

  1. Réponses: 12
    Dernier message: 13/09/2013, 10h06
  2. Réponses: 2
    Dernier message: 20/07/2011, 01h15
  3. type utilisateur modifier
    Par shadow31 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 15/11/2005, 14h58
  4. [SWT] Table type Excel
    Par krappa dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 14/09/2005, 19h08
  5. [MSDE] CREATE RULE sur un type utilisateur ?
    Par Raduris dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/01/2005, 12h24

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