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 07/12/2010, 10h17   #1
Membre du Club
 
Inscription : août 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 140
Points : 50
Points : 50
Par défaut traduction de commandes

Bonjour ,

j'essaie de gérer mes requêtes et autres directement à partir de mon excel mais l'exercice de traduction s'avère infructueux. voila ci-dessous mon code qui ne fonctionne pas de tte évidence à cause de la ligne en rouge.
quelle est la bonne synthaxe?


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
Private Sub Workbook_Open()

Dim oDb As DAO.Database
Dim LngNouvelleValeur As Long
Dim StrSQL As String

LngNouvelleValeur = 0
Set oDb = CurrentDb
StrSQL = "SELECT algorithme_mises.nid, Sum(algorithme_mises.montant) AS SommeDemontant FROM algorithme_mises, algorithme_enchere GROUP BY algorithme_mises.nid HAVING (((algorithme_mises.nid)>100))"

Set oRst = oDb.OpenRecordset(StrSQL, dbOpenTable)

While Not oRst.EOF
LngNouvelleValeur = oRecordset.Value + LngNouvelleValeur
oRecordset.MoveNext
Wend
InputBox (LngNouvelleValeur)

'Libération des objets
oRst.Close
oDb.Close
Set oRst = Nothing
Set oDb = Nothing

End Sub

Sincèrement,

Will
will Igetit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 10h52   #2
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Bonjour,

Quel est le message d'erreur ?
Ceci dit, il y a plus simple que de faire une boucle qui semble inutile dans le code présenté.
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 10h57   #3
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 080
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 080
Points : 11 615
Points : 11 615
Bonjour,

Qui est oRecordset ?

Code :
1
2
LngNouvelleValeur = oRecordset.Value + LngNouvelleValeur
oRecordset.MoveNext
oRst n'est pas déclaré.

Currentdb sous excel ? Ca existe ?

La référence DAO est activé ?

Le message d'erreur comme le suggère Kloun.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 12h17   #4
Membre du Club
 
Inscription : août 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 140
Points : 50
Points : 50
Par défaut erreur 424 après changement

J'ai fait quelques petits changements mais j'ai cette erreur 424. Je suppose qu'effectivement CurrentDb n'est pas la bonne commande. Je veux prendre mes données de
C:\Users\Raphaël Saclé\Documents\Base de données1.aacdb,
comment faut-il procéder?

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
27
Private Sub Workbook_Open()
 
Dim oDb As DAO.Database
Dim LngNouvelleValeur As Long
Dim StrSQL As String
Dim oRst As DAO.Recordset
 
 
LngNouvelleValeur = 0
Set oDb = CurrentDb
StrSQL = "SELECT algorithme_mises.nid, Sum(algorithme_mises.montant) AS SommeDemontant FROM algorithme_mises, algorithme_enchere GROUP BY algorithme_mises.nid HAVING (((algorithme_mises.nid)>100))"
 
Set oRst = oDb.OpenRecordset(StrSQL, dbOpenTable)
 
While Not oRst.EOF
LngNouvelleValeur = oRst.Fields("SommeDeMontant").Value + LngNouvelleValeur
oRst.MoveNext
Wend
InputBox (LngNouvelleValeur)
 
'Libération des objets
oRst.Close
oDb.Close
Set oRst = Nothing
Set oDb = Nothing
 
End Sub
will Igetit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 14h00   #5
Membre confirmé
 
Jacques Lesueur
Inscription : mai 2006
Messages : 180
Détails du profil
Informations personnelles :
Nom : Jacques Lesueur

Informations forums :
Inscription : mai 2006
Messages : 180
Points : 209
Points : 209
Bonjour,

Il y a une erreur sur ouverture du recordset ==> un recordset contenant un ordre SQL ne s'ouvre pas comme une table (dbOpenTable) mais comme une requête sql , dbOpenSnapshot étant le plus judicieux dans ton cas, soit(en vert la correction):
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
27
Private Sub Workbook_Open()
 
Dim oDb As DAO.Database
Dim LngNouvelleValeur As Long
Dim StrSQL As String
Dim oRst As DAO.Recordset
 
 
LngNouvelleValeur = 0
Set oDb = CurrentDb
StrSQL = "SELECT algorithme_mises.nid, Sum(algorithme_mises.montant) AS SommeDemontant FROM algorithme_mises, algorithme_enchere GROUP BY algorithme_mises.nid HAVING (((algorithme_mises.nid)>100))"
 
Set oRst = oDb.OpenRecordset(StrSQL, dbOpenSnapshot)
 
While Not oRst.EOF
LngNouvelleValeur = oRst.Fields("SommeDeMontant").Value + LngNouvelleValeur
oRst.MoveNext
Wend
InputBox (LngNouvelleValeur)
 
'Libération des objets
oRst.Close
oDb.Close
Set oRst = Nothing
Set oDb = Nothing
 
End Sub
Jack78960 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 14h08   #6
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Le produit cartésien, c'est voulu ?
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 14h38   #7
Membre du Club
 
Inscription : août 2008
Messages : 140
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 140
Points : 50
Points : 50
j'ai toujours l'erreur 424 qui devient 3343 après changement de oDd
Code :
Set oDb = OpenDatabase("C:\Users\Rap\Documents\Base de données1.accdb")
je pense qu'il y a une erreur à cette ligne mais ej ne sait aps comment savoir a quelle ligne est l'erreur.
Quelqu'un y verait il plus clair ?
will Igetit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 23h41   #8
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
1) Pour déclarer ta database, au lieu d'utiliser le currentdb
utilise plutôt l'instruction
Code :
    Set Odb = DBEngine.Workspaces(0).Databases(0)
2) comme précisait Loufab, le produit cartésien, ça va pas trop le faire
Tu n'aurais pas oublié de faire ta jointure ?

3) si tu souhaites ouvrir une autre Base se donnée, la commande appropriée serait plutôt
Code :
Set oDb = dbengine.OpenDatabase("C:\Users\Rap\Documents\Base de données1.accdb")
pour ces instructions, n'hésite pas à regarder d'abords l'aide en ligne de Access, qui est très bien faite, avant de poser la question sur le forum.
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 09h32   #9
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 936
Points : 7 936
bjr,

Merci de mettre le texte du message en entier plutôt que son numéro.
On ne connait pas tous les messages par coeur.

Dans outils => références : quelles sont les références cochées?
Est-ce Microsoft DAO 3.6 Object Library?

Si oui alors il faut essayer de le décocher et utiliser à la place :
Microsoft Office 12.0 Access database engine Object

Sinon je doute que DAO 3.6 puisse ouvrir un accdb.
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h21.


 
 
 
 
Partenaires

Hébergement Web