VBA/Excel charger table type utilisateur
PacoE
Messages postés
37
Statut
Membre
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
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) :
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 :
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) :
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
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) :
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 :
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) :
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
A voir également:
- VBA/Excel charger table type utilisateur
- Table ascii - Guide
- Liste déroulante excel - Guide
- Table des matières word - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
3 réponses
Bonjour,
Quand tu fais une tableau de 'Type' les variables le composant doivent avoir une longeur définie...
A+
Quand tu fais une tableau de 'Type' les variables le composant doivent avoir une longeur définie...
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 * 30
MANUF As String * 30
BRAND As String * 30
PROP As String * 30
LIC As String * 30
CAT As String * 30
VENTES As TVENTES
End Type
Public Type TOTITEM
NBE As Integer
M_ITEM(1 To 60) As ITEM 'je pense que tu a 54 enrg.
End Type
A+
Salut!
Merci de ta réponse.
J'ai essayé de définir la longueur des chaines mais j'ai le même problème. en fait le message d'erreur s'applique à la table TOTITEM.
et j'ai beaucoup plus de 54 enregistrements. pour l'instant je test avec un nombre tres réduit. idealement je devrais pouvoir charger des miliers de lignes.... c'est pas gagné....
A+
Merci de ta réponse.
J'ai essayé de définir la longueur des chaines mais j'ai le même problème. en fait le message d'erreur s'applique à la table TOTITEM.
et j'ai beaucoup plus de 54 enregistrements. pour l'instant je test avec un nombre tres réduit. idealement je devrais pouvoir charger des miliers de lignes.... c'est pas gagné....
A+
Tu imbrigue mal tes Types...
essaye avec.. (pas tester)
Mais pourquoi toutes ces dimentions dans VV et VR qui ne servent pas ?
Et quel est la finalité de ce tableaux ?
Si c'est pour mettre dans un fichier à accés direct ce n'est pas la bonne solution.
Et quand tu ressort les variables string il faut employer Trim
A+
essaye avec.. (pas tester)
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 * 30
MANUF As String * 30
BRAND As String * 30
PROP As String * 30
LIC As String * 30
CAT As String * 30
End Type
Public Type TOT
M_ITEM As ITEM
VENTES As TVENTES
End Type
Public ToTitem(1 To 50) As TOT
Public Sub LOAD_DB()
Dim I As Integer, J As Integer, Compteur As Integer
I = 5
Compteur = 0
While I <= 54
Compteur = Compteur + 1
With ToTitem(Compteur)
.M_ITEM.EAN = Range("A" & I).Value
.M_ITEM.GROUP = Range("B" & I).Value
.M_ITEM.MANUF = Range("C" & I).Value
.M_ITEM.BRAND = Range("D" & I).Value
.M_ITEM.PROP = Range("E" & I).Value
.M_ITEM.LIC = Range("F" & I).Value
.M_ITEM.CAT = Range("G" & I).Value
For J = 1 To 12
.VENTES.VV(1, 1, J) = Cells(I, J + 7)
Next J
End With
I = I + 1
Wend
End Sub
Mais pourquoi toutes ces dimentions dans VV et VR qui ne servent pas ?
Et quel est la finalité de ce tableaux ?
Si c'est pour mettre dans un fichier à accés direct ce n'est pas la bonne solution.
Et quand tu ressort les variables string il faut employer Trim
A+