Requête Access VBA sur zdl sélection étendue

Résolu/Fermé
SandrillonC Messages postés 22 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 20 août 2013 - 4 août 2011 à 18:06
SandrillonC Messages postés 22 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 20 août 2013 - 25 août 2011 à 18:34
Bonjour à tous,

Je réalise actuellement une base de données sous Access 2007.
Je cherche à faire une requête (requête créee sans VBA) qui s'exécute sur la base d'un formulaire dans lequel on retrouve une zdl (Liste10) qui regroupe les critères (villes) de ma requête sélection.

J'ai donc écrit le code suivant :

Function Extraction_fichiers_communes_Extraction_fichier_commune()
On Error GoTo Extraction_fichiers_communes_Extraction_fichier_commune_Err

Dim ligne As Integer
Dim valeur As Variant
Dim colonne As Integer
DoCmd.SetWarnings False

' Colonne de la zone de liste dans laquelle se situe l'informationcolonne = 0

' Parcours de la zone de liste
For ligne = 0 To Forms("MON FORMULAIRE").Liste10.ListCount - 1
If Forms("MON FORMULAIRE").Liste10.Selected(ligne) Then
' Si la ligne est sélectionnée, on stocke sa valeur dans la variable "valeur"
valeur = Forms("MON FORMULAIRE").Liste10.Column(colonne, ligne)

' Transfert de ma requête vers un fichier Excel
DoCmd.TransferSpreadsheet acExport, 10, "MA REQUETE", "MON CHEMIN, True, ""

End if
Next ligne

MsgBox "fin"

Cela fonctionne pour le mieux lorsque ma zdl a pour propriété (Sélection multiple) : AUCUN

Cependant, lorsque je souhaite la passer en (Sélection multiple) : ETENDU
Cela ne marche plus. J'ai une exportation avec 5 fichiers Excel vierges si j'ai sélectionner 5 valeurs dans ma zdl.

J'ai donc inséré une MsgBox me renvoyant ma variable valeur à chaque itération : elle m'affiche bien le résultat escompté, à savoir le nom de la ville sélectionné à chaque itération.

La boucle semble donc bien fonctionner. Le problème vient-il de mon transfert de requête ? Dois-je exécuter la requête en vba avant ?
Si oui, pouvez-vous m'orienter sur le code à formaliser pour lancer une requête SQL dans un module VBA ?


Par avance merci

SandrillonC

2 réponses

blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
4 août 2011 à 23:07
Salut,

juste comme ça, la requête qui est exécutée est toujours la même (aucun paramétrage), est-ce normal ?
0
SandrillonC Messages postés 22 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 20 août 2013
5 août 2011 à 11:20
Bonjour,

Ma requete est en fait créee directement via ACCESS. C'est une requête de sélection qui dépend du paramètre "ville" de ma zdl (liste 10).

Je ne sais pas bien si ma requete s'exécute à chaque itération via le transfertspreadsheet.

Ce que je ne comprends pas, c'est que même si elle ne s'exécutait qu'une seule fois, le fait que ma zdl ait une propriété de selection étendue me donne bien autant de fichiers excel que de sélections mais ils sont tous vierges. Dans ce cas, pourquoi le premier fichier ne serait-il pas rempli ? Car le meme code VBA avec une propriété de ma zdl en AUCUN concernant la sélection multiple, fonctionne parfaitement.

Et étant donné que j'ai 1500 extractions à faire, je ne voudrais pas cliquer à la main sur chaque ville pour extraire mes fichiers.


Cordialement
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
5 août 2011 à 11:29
Peut-on voir le texte de la requête ? Je serais intéressé par savoir comment tu fais pour y passer ta ville en paramètre...
0
SandrillonC Messages postés 22 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 20 août 2013
23 août 2011 à 16:41
Bonjour,

Le paramètre ville de ma requete dépend d'une zdl appartenant à un formulaire :

Select *
From [MaTable]
Where [MaTable].[Ville] = [Formulaires]![MonFormulaire]![MaZdl]
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
24 août 2011 à 11:46
Si ta zone de liste est multiple, tu ne peux récupérer sa valeur dans une requête.
Il te faut créer une requête sous forme de chaine que tu exécuteras dans ton transferspreadsheet...
0
SandrillonC Messages postés 22 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 20 août 2013
24 août 2011 à 20:42
J'ai eu peur que tu me proposes de passer par les Recordset de la librairie ADO !
Comment puis-je créer une requête sous forme de chaîne ?

Ce que je ne comprends pas c'est qu'à chaque itération de ma boucle, j'arrive bien (via une msg box) à lire ma variable "valeur". Mais les requetes exportées sont vides
0
SandrillonC Messages postés 22 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 20 août 2013
24 août 2011 à 20:43
Je suis ouvert à tout tutoriel proposé :)
0