VBA ACCESS

yakusa82 Messages postés 21 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 8 juin 2007 - 1 juin 2007 à 11:30
yakusa82 Messages postés 21 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 8 juin 2007 - 4 juin 2007 à 09:01
Bonjour,

Je débute tout juste en VB, j'aurais besoin d'aide

voila j'ai sous access 4 requetes que j'exécute l'une aprés l'autre manuellement "double clique lol"

et j'aurais voulue crée un code qui permettrais de lancé l'exécution de ses 4 requetes l'une apres l'autres

de plus, pour les 2 premieres une simple exécution mais pour la 3 et 4 il faut modifier 2 valeur
champ date et critéres

je voudrait qu'arrivé a la phase 3 le programme me demande les valeur pour tel et tel champ idem pour la phase 4

pourriez vous me dire comment procédé si un code de se type existe deja sur le quel je pourrait m'appuyer ou meme un tutos qui en parle

merci

11 réponses

cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
1 juin 2007 à 11:51
Salut,

Si tu veux déjà avoir une réponse précise, faudrait peut-être nous montrer la structure de tes requêtes, tu ne crois pas ?

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
1 juin 2007 à 11:56
Salut,

tu vas donc l'onglet module de Access et tu fais nouveau.

Ensuite dans la fenetre VB de ce module tu mets:

Public sub Requete_SQL()

Dim valeur as string

SQL = Ta_requete1
Docmd.RUNSQL SQL

SQL = Ta_requete2
Docmd.RUNSQL SQL

valeur = Inputbox "Veuillez entrer la valeur"

SQL = Ta_requete3    'prendre en compte la valeur dans cette requete
Docmd.RUNSQL SQL

valeur = Inputbox "Veuillez entrer la valeur"

SQL = Ta_requete4  'prendre en compte la valeur dans cette requete
Docmd.RUNSQL SQL

End sub

A toi de remplacer les requetes en gras par ce qu'il faut
0
yakusa82 Messages postés 21 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 8 juin 2007
1 juin 2007 à 12:22
en faite sur la requete 1 et 2 une simple exécution suffit de ces requetes
mais pour la 3 et 4 la en effet il faut une msgbox qui demanderais la valeurs du champ 8 qui est la période du temps au temps  et la valeur du critere du champ 1
0
yakusa82 Messages postés 21 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 8 juin 2007
1 juin 2007 à 12:30
Quand tu met

SQL = Ta_requete1 >>>c'est le nom de ma requete dans access ou faut mettre la requete SQL qui est derreire
SELECT ACFIC0101_ACPROMPF.NOPRPR, [Fichiers articles].DESIG, ACFIC0101_ACPROMPF.PSP7PR, [Poids mesures].Champ2 AS [Lib poids], Int(100*[PSP7PR]/[POCTU])/100 AS PK, Int(ACFIC0101_ACPROMPF!PSP7PR) AS euros, Right(Str(100*ACFIC0101_ACPROMPF!PSP7PR),2) AS centimes, "du 13 au 24 juin 2007" AS Periode, ACFIC0101_ACPROMPF.CDPLPR INTO [table des stops]
FROM (ACFIC0101_ACPROMPF LEFT JOIN [Fichiers articles] ON ACFIC0101_ACPROMPF.CDPLPR = [Fichiers articles].PLIG) LEFT JOIN [Poids mesures] ON [Fichiers articles].PKGL = [Poids mesures].Champ1
WHERE (((ACFIC0101_ACPROMPF.NOPRPR)=3259 Or (ACFIC0101_ACPROMPF.NOPRPR)=3260));

Docmd.RUNSQL SQL
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yakusa82 Messages postés 21 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 8 juin 2007
1 juin 2007 à 13:39
Personne!,,
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
1 juin 2007 à 13:47
Est ce que ca te convient sinon ?

et en effet, SQL est en faite une chaine de caracteres donc, ce n'est pas le nom mais bien la requete en question, a moins que tu veuilles le contrainre.

Ex :

SQL =  "Select .............................."
0
yakusa82 Messages postés 21 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 8 juin 2007
1 juin 2007 à 14:09
PB
si je fait

SQL= " select......" bien ca me met une erreur
erreur compilation:
erreur de syntaxe
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
1 juin 2007 à 14:59
Oula attent, je parlais de ta requete LOL,

c'est à dire :

SQL = "SELECT ACFIC0101_ACPROMPF.NOPRPR, [Fichiers articles].DESIG, ACFIC0101_ACPROMPF.PSP7PR, [Poids mesures].Champ2 AS [Lib poids], Int(100*[PSP7PR]/[POCTU])/100 AS PK, Int(ACFIC0101_ACPROMPF!PSP7PR) AS euros, Right(Str(100*ACFIC0101_ACPROMPF!PSP7PR),2) AS centimes, "du 13 au 24 juin 2007" AS Periode, ACFIC0101_ACPROMPF.CDPLPR INTO [table des stops]
FROM (ACFIC0101_ACPROMPF LEFT JOIN [Fichiers articles] ON ACFIC0101_ACPROMPF.CDPLPR = [Fichiers articles].PLIG) LEFT JOIN [Poids mesures] ON [Fichiers articles].PKGL = [Poids mesures].Champ1
WHERE (((ACFIC0101_ACPROMPF.NOPRPR)=3259 Or (ACFIC0101_ACPROMPF.NOPRPR)=3260));"

Docmd.RUNSQL SQL

car ca :

SQL= " select......" , ca veut rien dire.

Attention quand meme car je crois qu'il faut revoir la synthaxe.
0
yakusa82 Messages postés 21 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 8 juin 2007
1 juin 2007 à 15:58
oui ca sais ce que j'ai fait
SQL = "SELECT ACFIC0101_ACPROMPF.NOPRPR, [Fichiers articles].DESIG,
ACFIC0101_ACPROMPF.PSP7PR, [Poids mesures].Champ2 AS [Lib poids],
Int(100*[PSP7PR]/[POCTU])/100 AS PK, Int(ACFIC0101_ACPROMPF!PSP7PR) AS
euros, Right(Str(100*ACFIC0101_ACPROMPF!PSP7PR),2) AS centimes, "du 13 au 24 juin 2007" AS Periode, ACFIC0101_ACPROMPF.CDPLPR INTO [table des stops]
FROM
(ACFIC0101_ACPROMPF LEFT JOIN [Fichiers articles] ON
ACFIC0101_ACPROMPF.CDPLPR = [Fichiers articles].PLIG) LEFT JOIN [Poids
mesures] ON [Fichiers articles].PKGL = [Poids mesures].Champ1
WHERE (((ACFIC0101_ACPROMPF.NOPRPR)=3259 Or (ACFIC0101_ACPROMPF.NOPRPR)=3260));"

Docmd.RUNSQL SQL

lol c juste que c'etait pour allé plus vite ds mon message héhé

je fait donc comme ci dessus
sauf que ca me met l'erreur
en faite ça s'affiche comme suit
SQL=
SELECT ACFIC0101_ACPROMPF.NOPRPR, [Fichiers articles].DESIG,
ACFIC0101_ACPROMPF.PSP7PR, [Poids mesures].Champ2 AS [Lib poids],
Int(100*[PSP7PR]/[POCTU])/100 AS PK, Int(ACFIC0101_ACPROMPF!PSP7PR) AS
euros, Right(Str(100*ACFIC0101_ACPROMPF!PSP7PR),2) AS centimes, "du 13 au 24 juin 2007" AS Periode, ACFIC0101_ACPROMPF.CDPLPR INTO [table des stops]
FROM
(ACFIC0101_ACPROMPF LEFT JOIN [Fichiers articles] ON
ACFIC0101_ACPROMPF.CDPLPR = [Fichiers articles].PLIG) LEFT JOIN [Poids
mesures] ON [Fichiers articles].PKGL = [Poids mesures].Champ1
WHERE (((ACFIC0101_ACPROMPF.NOPRPR)=3259 Or (ACFIC0101_ACPROMPF.NOPRPR)=3260));"

Docmd.RUNSQL SQL
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
4 juin 2007 à 07:56
"lol c juste que c'etait pour allé plus vite ds mon message héhé"

A désolé, en effet ne connaisant pas ton niveau, je croyais que tu avais mis la requete avec les ......

Peux tu me préciser l'erreur de compilation.
Je te mets en gras ce qui me parait bizarre, c'est pas nécessairement faux mais ca m'interpelle:

SQL= "SELECT ACFIC0101_ACPROMPF.NOPRPR, [Fichiers articles].DESIG, ACFIC0101_ACPROMPF.PSP7PR, [Poids mesures].Champ2 AS [Lib poids], Int(100*[PSP7PR]/[POCTU])/100 AS PK, Int(ACFIC0101_ACPROMPF!PSP7PR) AS euros, Right(Str(100*ACFIC0101_ACPROMPF!PSP7PR),2) AS centimes, "du 13 au 24 juin 2007" AS Periode, ACFIC0101_ACPROMPF.CDPLPR INTO [table des stops]
FROM (ACFIC0101_ACPROMPF LEFT JOIN [Fichiers articles] ON ACFIC0101_ACPROMPF.CDPLPR = [Fichiers articles].PLIG) LEFT JOIN [Poids mesures] ON [Fichiers articles].PKGL = [Poids mesures].Champ1
WHERE (((ACFIC0101_ACPROMPF.NOPRPR)=3259 Or (ACFIC0101_ACPROMPF.NOPRPR)=3260));"

Ce qui me praraitrait plus correcte:

SQL= "SELECT ACFIC0101_ACPROMPF.NOPRPR, [Fichiers articles].DESIG, ACFIC0101_ACPROMPF.PSP7PR, [Poids mesures].Champ2 AS [Lib poids], " & Int(100*[PSP7PR]/[POCTU])/100 & " AS PK,"& Int(ACFIC0101_ACPROMPF!PSP7PR) & " AS euros, "& Right(Str(100*ACFIC0101_ACPROMPF!PSP7PR),2) & " AS centimes, "du 13 au 24 juin 2007" AS Periode, ACFIC0101_ACPROMPF.CDPLPR INTO [table des stops]
FROM (ACFIC0101_ACPROMPF LEFT JOIN [Fichiers articles] ON ACFIC0101_ACPROMPF.CDPLPR = [Fichiers articles].PLIG) LEFT JOIN [Poids mesures] ON [Fichiers articles].PKGL = [Poids mesures].Champ1
WHERE (((ACFIC0101_ACPROMPF.NOPRPR)=3259 Or (ACFIC0101_ACPROMPF.NOPRPR)=3260));"

Par contre, pour ce qu'il y a en violet, je vois pas ce que tu cherches a faire.
0
yakusa82 Messages postés 21 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 8 juin 2007
4 juin 2007 à 09:01
Bah en faite ca me sert beaucoup et c'est la la difficulté c'est que crée un exécutable bon ok mais fo qu'il me demande de changer cette valeur la date de telle jour a tel jours
0