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

dimension d'un tableau en fonction d'une variable

7 réponses
Avatar
françois
voil=E0 : est ce possible de dimensionner une tableau en=20
fonction d'une variable. Je souhaite r=E9cup=E9rer le nombre=20
d' enregistrements pr=E9sents dans une table Access et=20
dimensionner un tableau en fonction de ce nombre. Si je=20
fais

marequete.movelast
dim montableau(marequete.recordcount)=20

Vb me r=E9pond : constante attendue !

et pourtant =E7a m'arrangerait bien de faire comme =E7a !!!

merci de votre r=E9ponse ou d'une piste =E9ventuelle
Fran=E7ois

7 réponses

Avatar
Himselff
ya une methode pas tres jolie mais qui fonctionne tres bien

do while not (monRecordset.eof)
compteur = compteur + 1
monRecordSet.movenext
loop

ensuite tu remet a movefirst et tu REDIM tableau(compteur,1)

Bonne chance
"françois" wrote in message
news:2d4401c4287a$26a7d170$
voilà : est ce possible de dimensionner une tableau en
fonction d'une variable. Je souhaite récupérer le nombre
d' enregistrements présents dans une table Access et
dimensionner un tableau en fonction de ce nombre. Si je
fais

marequete.movelast
dim montableau(marequete.recordcount)

Vb me répond : constante attendue !

et pourtant ça m'arrangerait bien de faire comme ça !!!

merci de votre réponse ou d'une piste éventuelle
François
Avatar
Eric
Bonjour François

Dans ta procedure declares ainsi:
En Début : Dim Tableau()

puis apres le marequete.movelast
ReDim Tableau(marequete.recordcount)

A+
Eric

françois écrivait news:2d4401c4287a
$26a7d170$:

voilà : est ce possible de dimensionner une tableau en
fonction d'une variable. Je souhaite récupérer le nombre
d' enregistrements présents dans une table Access et
dimensionner un tableau en fonction de ce nombre. Si je
fais

marequete.movelast
dim montableau(marequete.recordcount)

Vb me répond : constante attendue !

et pourtant ça m'arrangerait bien de faire comme ça !!!

merci de votre réponse ou d'une piste éventuelle
François



Avatar
François Picalausa
Hello,

En Début : Dim Tableau()


De préférence en typant le tableau!

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Eric" a écrit dans le message de
news:
Avatar
françois
Merci Eric ! C'est exactement ce dont j'avais besoin
François
Avatar
Eric
Hello François
oui mais je ne savais pas ce qu'il allait contenir donc j'ai laissé en
variant par défaut. A l'auteur d'adapter à ses besoins ;-)

A+
Eric

"François Picalausa" écrivait news:#cbQg0HKEHA.628
@TK2MSFTNGP11.phx.gbl:

Hello,

En Début : Dim Tableau()


De préférence en typant le tableau!



Avatar
ng
Salut,

En complément des autres réponses qui proposaient ceci :

Dim tblTableau() as MONTYPE
'//Code
Redim tblTableau(marequete.recordcount)
'//Le tableau sera redimensionné de 0 à marequete.recordcount
'//Pr le redim. de 1 à marequete.recordcount :
Redim tblTableau(1 To marequete.recordcount)

tu peux aussi redimensionner ton tableau en préservant les données (ca ne te
sert pas ici, mais c'est juste au cas ou t'en aurais besoin un jour) :

Dim tblTableau() as MONTYPE
'//Code
Redim Preserve tblTableau(marequete.recordcount)
'//Le tableau sera redimensionné de 0 à marequete.recordcount


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/

françois a écrit :

voilà : est ce possible de dimensionner une tableau en
fonction d'une variable. Je souhaite récupérer le nombre
d' enregistrements présents dans une table Access et
dimensionner un tableau en fonction de ce nombre. Si je
fais

marequete.movelast
dim montableau(marequete.recordcount)

Vb me répond : constante attendue !

et pourtant ça m'arrangerait bien de faire comme ça !!!

merci de votre réponse ou d'une piste éventuelle
François


Avatar
Christophe
Bonjour,
ci dessous une copie/collée d'une fonction utilisant DAO et renvoyant un
tableau de type utilisateur à partir du recordset
et je vois pas ce qu'il y a de "Pas joli" avec plus de mille enregistrements
c'est "instantané"
Et si tu ne recherche que dans une table tu utilises une méthode seek sur la
clef primaire et c'est encore plus rapide.

Christophe Vergon

Public Function AppuiDeFeuille(idfeuille As Long) As PointLiaison()
Dim bd As Database
Dim rq As QueryDef
Dim rst As Recordset
Dim PL() As PointLiaison


Set bd = OpenDatabase(Emplacementbase) 'ouvre la base
Set rq = bd.QueryDefs("Rqappuidefeuille") ' affecte la requete
rq.Parameters("idfeuille") = idfeuille& ' les parametres
Set rst = rq.OpenRecordset ' ouvre le recordset

If Not (rst.EOF And rst.BOF) Then 'si pas vide
rst.MoveFirst 'au premier
i& = 0 'compteur à 0

Do While Not rst.EOF
ReDim Preserve PL(i&)
PL(i&).idpoint = rst("idappuifeuille")
PL(i&).idfeuille = rst("ptrfeuille")
PL(i&).nom = rst("nom")
PL(i&).x = rst("X")
PL(i&).y = rst("Y")
i& = i& + 1
rst.MoveNext
Loop

Else
'renvoi de l'element nul
ReDim PL(0)
PL(0).idfeuille = idfeuille
PL(0).nom = -1
End If

AppuiDeFeuille = PL

Set rst = Nothing
Set rq = Nothing
Set bd = Nothing
End Function

"françois" a écrit dans le message de
news: 2d4401c4287a$26a7d170$
voilà : est ce possible de dimensionner une tableau en
fonction d'une variable. Je souhaite récupérer le nombre
d' enregistrements présents dans une table Access et
dimensionner un tableau en fonction de ce nombre. Si je
fais

marequete.movelast
dim montableau(marequete.recordcount)

Vb me répond : constante attendue !

et pourtant ça m'arrangerait bien de faire comme ça !!!

merci de votre réponse ou d'une piste éventuelle
François