Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/11/2011, 22h37   #1
Membre Expert
 
Avatar de curt
 
Homme Curt
Bureau d'Etudes
Inscription : mars 2006
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Curt
Localisation : France

Informations professionnelles :
Activité : Bureau d'Etudes
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2006
Messages : 982
Points : 1 171
Points : 1 171
Par défaut Alimenter une variable tableaux avec les valeurs d'un champs

Bonsoir à tous,

je cherche à alimenter une variable tableau avec la valeur d'un champs contenu dans une table.

Pour l'instant, j'ai ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim MaBD As DAO.Database
Dim MonChamp As DAO.Field
Dim NomTable As DAO.TableDef
Dim Lot() As Variant
 
Set MaBD = CurrentDb
Set NomTable = MaBD.TableDefs("Tbl_Lot")
Set MonChamp = MaBD.TableDefs("Tbl_Lot").Fields("Lot")
 
Dim NombreDeLot As Integer  'Nombre de Lot contenu dans la table Tbl_Lot
    NombreDeLot = CurrentDb.TableDefs("Tbl_Lot").RecordCount
ReDim Lot(NombreDeLot)      'Redimensionnement du Tableau des Lots
 
i = 0
 
' Remplissage du tableau Lot avec les Lots concernés
 
    For Each MonChamp In NomTable.Fields
        Lot(i) = MonChamp.Value
        i = i + 1
    Next
 
etc...
Et là, j'obtiens une erreur 3219 sur la ligne
Code :
Lot(i) = MonChamp.Value
Où est l'astuce (sans doute toute bête ) à côté de laquelle je suis passé ?

Merci d'avance.

Curt
__________________
Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
---------------------------------------------------------------------
Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
Et si vous faisiez un bon geste en 2012 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !
curt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 04h37   #2
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
j'ai lu d'autre forum et il semble y avoir un problème sur le update de ta table .... l'erreur 3219 est levé puisque
Citation:
"L'opération demandée par l'application n'est pas autorisée dans ce contexte.
"
__________________
Parfois il faut faire le tour d'une roche 10 fois avant de s'apercevoir quelle est ronde.
  • Si vous trouvé mon post intéressant, n'oubliez pas de voter coté inférieur droit du message. Merci
  • Si votre Post est indiquez le....
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 21h04   #3
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
Salut Curt, Robyseb

l'intention ne me semble pas claire...

Citation:
Envoyé par curt
je cherche à alimenter une variable tableau avec la valeur d'un champs contenu dans une table.
Tu veux récupérer la valeur du champ "Lot" pour chaque enregistrement (parcours en ligne)?

Mais ici
Code :
For Each MonChamp In NomTable.Fields
tu parcoures tous les champs de la table (parcours en colonnes), mais sans parcourir les enregistrements (d'où l'erreur d'ailleurs sur .value)

En attendant de lever le voile, as-tu regardé du côté de getrows ?
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/11/2011, 22h59   #4
Membre Expert
 
Avatar de curt
 
Homme Curt
Bureau d'Etudes
Inscription : mars 2006
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Curt
Localisation : France

Informations professionnelles :
Activité : Bureau d'Etudes
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2006
Messages : 982
Points : 1 171
Points : 1 171
Bonsoir F-Leb,

je ne connaissais pas getrows

J'essaie de suite.... résultat demain.

Merci
Curt
__________________
Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
---------------------------------------------------------------------
Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
Et si vous faisiez un bon geste en 2012 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !
curt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 17h04   #5
Membre confirmé
 
Inscription : juillet 2006
Messages : 345
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 345
Points : 287
Points : 287
Bonjour,

Je vais peut-etre dire une betise mais ne faudrait-il pas utiliser un recordset ?

Avec quelque chose du style :

Code :
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
Dim MaBD As DAO.Database
Dim rst As DAO.Recordset
Dim Lot() As Variant
Dim i As Integer
Dim sChamp As String
Dim sTable As String
Dim NombreDeLot As Integer  'Nombre de Lot contenu dans la table Tbl_Lot
 
'initialisation
sTable="Tbl_Lot"
sChamp="Lot"
 
'recuperation du nombre de lots
ReDim Lot(DCount(sChamp, sTable)) 
 
i = 0
 
Set MaBD = CurrentDb
Set rst = MaBD.OpenRecordset("select [" & sChamp & "] from [" & sTable & "]")
 
' Remplissage du tableau Lot avec les Lots concernés
Do While Not rst.EOF
    Lot(i) = rst(0)
    i = i + 1
    rst.MoveNext
Loop
Access Newbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 19h26   #6
Membre Expert
 
Avatar de curt
 
Homme Curt
Bureau d'Etudes
Inscription : mars 2006
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Curt
Localisation : France

Informations professionnelles :
Activité : Bureau d'Etudes
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2006
Messages : 982
Points : 1 171
Points : 1 171
Bonsoir à tous,

je réponds (et solde) ma question un peu tardivement...

il suffisait de mettre ça :
Code :
1
2
3
4
5
6
' Remplissage du tableau Lot avec les Lots concernés
 
    For i = 0 To NombreDeLot - 1
        Lot(i) = rstTbl_Lot!Lot
        rstTbl_Lot.GetRows
    Next i
Quant au "Pourquoi faire un tableau plutôt qu'une table ?" : Tout simplement parce que je ne souhaite pas surcharger la base avec des créations de tables temporaires qu'il faut ensuite effacer... Tout reste en mémoire et le "ménage" est fait à la fermeture de l'appli. (cet avis et façon de faire n'engage que moi....)


merci à f-leb pour GetRows et à tous ceux qui ont amené leur contribution.

Bon week-end.
Curt
__________________
Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
---------------------------------------------------------------------
Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
Et si vous faisiez un bon geste en 2012 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !
curt est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h59.


 
 
 
 
Partenaires

Hébergement Web