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

Requête en fonction VBA

11 réponses
Avatar
orange
Bonjour =E0 tous,

Je suis nouveau en VBA et j'aimerais savoir s'il est possible de faire
une fonction VBA qui agirait de fa=E7on similaire =E0 une fonction SQL.

Voici ce que je cherche =E0 faire:

Function getAnnees(annee As Integer) As ?? <- retourne une table
Access

Table.Column(0).Name =3D "Annees"
Do While annee < year(getDate()) + 1
Table.Row.Add() =3D year
year =3D year + 1
Loop
Returns Table

End Function

Maintenant, en utilisant une requ=EAte Access du genre :

SELECT getAnnees(2008)

J'aimerai obtenir une table comme celle-ci :
|Annees
rang=E9e 1 | 2008
rang=E9e 2 | 2009
rang=E9e 3 | 2010


Merci beaucoup =E0 tous

10 réponses

1 2
Avatar
Gloops
orange a écrit, le 14/11/2010 13:15 :
Bonjour à tous,

Je suis nouveau en VBA et j'aimerais savoir s'il est possible de faire
une fonction VBA qui agirait de façon similaire à une fonction SQL.

Voici ce que je cherche à faire:

Function getAnnees(annee As Integer) As ??<- retourne une table
Access

Table.Column(0).Name = "Annees"
Do While annee< year(getDate()) + 1
Table.Row.Add() = year
year = year + 1
Loop
Returns Table

End Function

Maintenant, en utilisant une requête Access du genre :

SELECT getAnnees(2008)

J'aimerai obtenir une table comme celle-ci :
|Annees
rangée 1 | 2008
rangée 2 | 2009
rangée 3 | 2010


Merci beaucoup à tous





Bonjour,

Regarde si il y a des idées à prendre là :

http://support.microsoft.com/kb/186133/fr
Avatar
orange
Bonjour,

Ma question n'est peut-être pas complète.

Pour préciser, j'ai toujours travaillé avec SQL Server et pour ce
projet, je dois travailler uniquement avec MS Access 2007. Je cherche
donc une façon de reproduire des fonctions SQL Server en Access, en me
disant qu'en utlisant le VBA, j'y arriverais peut-être, mais je ne
connais pas le VBA.

À travers tout ça, mon objectif final est d'arriver à faire des
requêtes Access SQL avec JOIN entre tables de ma base de données
Access et fonctions VBA comprise dans des modules de cette même base
de données.

Est-ce possible?


Merci
Avatar
blaise cacramp
Bonjour Mathieu

Il me semble que des *requêtes* SQL Server devraient pouvoir être
strictement pareilles en Access.
Ce n'est pas le cas dans la programmalilté où le VBA ... oui.
Mais la fonction (ou procédure) ne va pas te retourner une table : elle va
la construire ou la mettre à jour.

Le VBA ne devrait pas être trop compliqué pour quelqu'un qui programme en
T-SQL

Cdt,
Blaise

"orange" a écrit dans le message de news:

Bonjour,

Ma question n'est peut-être pas complète.

Pour préciser, j'ai toujours travaillé avec SQL Server et pour ce
projet, je dois travailler uniquement avec MS Access 2007. Je cherche
donc une façon de reproduire des fonctions SQL Server en Access, en me
disant qu'en utlisant le VBA, j'y arriverais peut-être, mais je ne
connais pas le VBA.

À travers tout ça, mon objectif final est d'arriver à faire des
requêtes Access SQL avec JOIN entre tables de ma base de données
Access et fonctions VBA comprise dans des modules de cette même base
de données.

Est-ce possible?


Merci
Avatar
orange
Merci Blaise,

Est-ce que tu sais s'il y a moyen de faire une boucle avec paramètres
dans une reAccess 2007?
Avatar
Gloops
orange a écrit, le 21/11/2010 03:24 :
Merci Blaise,

Est-ce que tu sais s'il y a moyen de faire une boucle avec paramètres
dans une reAccess 2007?




Tiens, ça, je ne savais pas ...
Avatar
blaise cacramp
non, ce n'est pas possible
"orange" a écrit dans le message de news:

Merci Blaise,

Est-ce que tu sais s'il y a moyen de faire une boucle avec paramètres
dans une reAccess 2007?
Avatar
Gloops
blaise cacramp a écrit, le 21/11/2010 12:56 :
non, ce n'est pas possible




Oups je n'avais pas réalisé que c'était une question ...
Avatar
Michel__D
Bonjour,

orange a écrit :
Merci Blaise,

Est-ce que tu sais s'il y a moyen de faire une boucle avec paramètres
dans une reAccess 2007?




Je ne sais pas ce que tu veux faire mais avec l'intermédiaire d'une table
existante tu pourrais faire ceci :

Soit la table existante [tmp] qui contient le champ [id] avec les valeurs de 1 à 9

Ensuite avec la requête suivante et saisie de la valeur 2008 tu obtiendrais :

Champ , ValAnnee
"rangée 1", 2008
"rangée 2", 2009
"rangée 3", 2010

PARAMETERS [Saisir l'année de départ] LONG;
SELECT "rangée " & T.id AS Champ, [Saisir l'année de départ]+T.id AS ValAnnee
FROM tmp AS T
WHERE [Saisir l'année de départ]+T.id<=Year(Date());
Avatar
orange
Merci Michel,

Il semble que je n'ai pas le choix de me construire des tables
temporaires alors. Ta suggestion me donne une piste. Je vais regarder
pour monter des tables temporaires qui se mettent systématiquement à
avec des genres de trigger VBA et je travaillerai avec ces tables.
J'aurais mieux voulu éviter ça, mais il semble qu'il n'y a pas d'autre
solution. A moins qu'il y a une autre base de données de type MS
Access qui offre cette possibilité? Est-ce que vous en connaissez?


Orange.
Avatar
Michel__D
Bonjour,

orange a écrit :
Merci Michel,

Il semble que je n'ai pas le choix de me construire des tables
temporaires alors. Ta suggestion me donne une piste. Je vais regarder
pour monter des tables temporaires qui se mettent systématiquement à
avec des genres de trigger VBA et je travaillerai avec ces tables.
J'aurais mieux voulu éviter ça, mais il semble qu'il n'y a pas d'autre
solution. A moins qu'il y a une autre base de données de type MS
Access qui offre cette possibilité? Est-ce que vous en connaissez?



A part le SQL Server je ne vois pas.

Concernant ma suggestion, c'étais pour ne pas utiliser le VBA, maintenant
si tu dois utiliser le VBA, tu n'a pas besoin de table existante temporaire.

Tu crée pratiquement ce que tu veux en VBA.
1 2