Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

déclaration de tableau dynamique

2 réponses
Avatar
Pierre
Bonjour,
je me connecte à une base de données pour récupérer des noms de projets
j'aimerais stocker ces noms de projets dans un tableau dynamique (plusieurs
dimensions)
le problème est que je ne connais pas le nombre de projets
(je sais que j'ai 4 colonnes dans ma table, mais je ne connais pas le nb de
lignes)

j'ai donc tenté d'initialiser mon tableau avec

Dim TableauProjets(500,4)
ensuite je parcours ma table
à chaque enregistrement
je remplis mon TableauProjets
à la fin du traitement j'aimerai redimensionner ma variable en fonction du
nb d'enregistrement parcouru

j'ai essayer
ReDim Preserve TableauProjets(k, 4) mais ça ne fonctionne pas
merci de votre aide

ci-joint le code
Pierre
-------------------------
Option Base 1

Sub Macro1()
Dim myDB As Database
Dim myFileName As String
Dim Vsql As String
Dim TableauProjets()

myFileName = Worksheets("Paramètres").Range("B2").FormulaR1C1
Set myDB = DBEngine.OpenDatabase(myFileName)
Vsql = "Select * from T_Projets order by NomProj"
Set myRS = myDB.OpenRecordset(Vsql, dbOpenDynaset)
k = 0
Do While Not myRS.EOF
k = k + 1
TableauProjets(k, 1) = myRS.Fields("NomProj").Value
TableauProjets(k, 2) = myRS.Fields("NumProj").Value
TableauProjets(k, 3) = myRS.Fields("CouleurFond").Value
TableauProjets(k, 4) = myRS.Fields("CouleurTexte").Value
myRS.MoveNext
Loop
myRS.Close
myDB.Close
'erreur ligne suivante
ReDim Preserve TableauProjets(k, 4)
End Sub

2 réponses

Avatar
Daniel
Bonjour.
Si je me souviens bien, si tu utilises "preserve", tu ne peux changer que la
dernière dimension (4 dans ton cas).
Cordialement.
Daniel
"Pierre" a écrit dans le message de news:
4518e5fa$0$27415$
Bonjour,
je me connecte à une base de données pour récupérer des noms de projets
j'aimerais stocker ces noms de projets dans un tableau dynamique
(plusieurs dimensions)
le problème est que je ne connais pas le nombre de projets
(je sais que j'ai 4 colonnes dans ma table, mais je ne connais pas le nb
de lignes)

j'ai donc tenté d'initialiser mon tableau avec

Dim TableauProjets(500,4)
ensuite je parcours ma table
à chaque enregistrement
je remplis mon TableauProjets
à la fin du traitement j'aimerai redimensionner ma variable en fonction du
nb d'enregistrement parcouru

j'ai essayer
ReDim Preserve TableauProjets(k, 4) mais ça ne fonctionne pas
merci de votre aide

ci-joint le code
Pierre
-------------------------
Option Base 1

Sub Macro1()
Dim myDB As Database
Dim myFileName As String
Dim Vsql As String
Dim TableauProjets()

myFileName = Worksheets("Paramètres").Range("B2").FormulaR1C1
Set myDB = DBEngine.OpenDatabase(myFileName)
Vsql = "Select * from T_Projets order by NomProj"
Set myRS = myDB.OpenRecordset(Vsql, dbOpenDynaset)
k = 0
Do While Not myRS.EOF
k = k + 1
TableauProjets(k, 1) = myRS.Fields("NomProj").Value
TableauProjets(k, 2) = myRS.Fields("NumProj").Value
TableauProjets(k, 3) = myRS.Fields("CouleurFond").Value
TableauProjets(k, 4) = myRS.Fields("CouleurTexte").Value
myRS.MoveNext
Loop
myRS.Close
myDB.Close
'erreur ligne suivante
ReDim Preserve TableauProjets(k, 4)
End Sub






Avatar
Pierre
merci
comme je n'ai pas le droit de dimensionner mes lignes
j'ai inversé ligne colonne
puis tranposé
ca marche
Pierre
"Daniel" a écrit dans le message de news:

Bonjour.
Si je me souviens bien, si tu utilises "preserve", tu ne peux changer que
la dernière dimension (4 dans ton cas).
Cordialement.
Daniel
"Pierre" a écrit dans le message de news:
4518e5fa$0$27415$
Bonjour,
je me connecte à une base de données pour récupérer des noms de projets
j'aimerais stocker ces noms de projets dans un tableau dynamique
(plusieurs dimensions)
le problème est que je ne connais pas le nombre de projets
(je sais que j'ai 4 colonnes dans ma table, mais je ne connais pas le nb
de lignes)

j'ai donc tenté d'initialiser mon tableau avec

Dim TableauProjets(500,4)
ensuite je parcours ma table
à chaque enregistrement
je remplis mon TableauProjets
à la fin du traitement j'aimerai redimensionner ma variable en fonction
du nb d'enregistrement parcouru

j'ai essayer
ReDim Preserve TableauProjets(k, 4) mais ça ne fonctionne pas
merci de votre aide

ci-joint le code
Pierre
-------------------------
Option Base 1

Sub Macro1()
Dim myDB As Database
Dim myFileName As String
Dim Vsql As String
Dim TableauProjets()

myFileName = Worksheets("Paramètres").Range("B2").FormulaR1C1
Set myDB = DBEngine.OpenDatabase(myFileName)
Vsql = "Select * from T_Projets order by NomProj"
Set myRS = myDB.OpenRecordset(Vsql, dbOpenDynaset)
k = 0
Do While Not myRS.EOF
k = k + 1
TableauProjets(k, 1) = myRS.Fields("NomProj").Value
TableauProjets(k, 2) = myRS.Fields("NumProj").Value
TableauProjets(k, 3) = myRS.Fields("CouleurFond").Value
TableauProjets(k, 4) = myRS.Fields("CouleurTexte").Value
myRS.MoveNext
Loop
myRS.Close
myDB.Close
'erreur ligne suivante
ReDim Preserve TableauProjets(k, 4)
End Sub