IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

problème de paramètres dans une fonction


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut problème de paramètres dans une fonction
    Bonjour à tous,
    je voudrais exporter une requête access dans un onglet spécifié d'un fichier excel.
    Pour cela, j'utilise une fonction exportation de ce type:
    Exportation(requête, fichier de sortie(type: C:\Bureau\fichier.xls), onglet)
    Mon problème est que le fichier de sortie peut varier en fontion d'un paramètre "projet". Donc je dois faire varier mes paramètres de la requête exportation.
    Ma variable "fichier de sortie" est lue dans une table "table_infos_projet".
    Mais je ne sais pas comment coder pour pouvoir assigner le fichier de sortie comme paramètre à la requête exportation.
    Pour le moment voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub Commande5_Click()
     
    Dim mabase As Database
    Dim qd As DAO.QueryDef
     
     
    Set mabase = CurrentDb
     
    Set qd = mabase.CreateQueryDef(, "SELECT First(table_infos_projet.chemin) as chemin FROM table_infos_projet  HAVING table_infos_projet.projet=[Formulaires]![Formulaire GENERAL]![AFFAIRE]")
     
     
    Call Exportation("test", qd,"onglet2")
     
    end sub
    -----
    Sub Exportation(requete, sortie As String, onglet2 As String)
    ...
    end sub
    Le chemin de sortie est censé être contenu dans qd mais je n'arrive pas à l'utiliser.
    Le format de qd ne convient pas mais je ne sais pas comment obtenir la valeur du champ retournée pour qd.

    J'espère avoir été clair.
    Je reste à votre disposition pour toute question supplémentaire.
    merci d'avance pour vos réponses.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Bonjour

    Au lieu d'utiliser DAO.QueryDef tu peux le remplacer par un Recordset.
    Tu auras donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim qd As RecordSet
     
    Set qd = mabase.OpenRecordSet(, "SELECT First(table_infos_projet.chemin) as chemin FROM table_infos_projet  HAVING table_infos_projet.projet=[Formulaires]![Formulaire GENERAL]![AFFAIRE]")
    Maintenant pour récupérer la valeur retournée par la requête tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Call Exportation("test", qd("chemin"),"onglet2")
    Attention quand même ! Si ta requête te renvoie plus qu'une valeur, il faudra peut être une boucle.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    tout d'abord merci de la réponse.
    J'ai essayé ton code,mais cela de fonctionne pas:
    j'ai un message d'erreur d'execution3061 avec trop peu de paramètres.
    j'ai déjà posté une question sur ce type d'erreur
    http://www.developpez.net/forums/sho....php?p=3250261
    et on m'a répondu qu'il me fallait utiliser objet QueryDef intermédiare, auquel je fournis le paramètre car je fais appel à un formulaire.
    et là je suis bloqué je n'arrive pas à insérer cette requête intermediaire.
    A+

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut une idée avec Vlookup
    En supposant que ton code est dans le même formulaire que celui contenant le contrôle [AFFAIRE]

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Commande5_Click()
    Dim strChemin As String, strAffaire As String
     
    strAffaire = Me.AFFAIRE
    ' Si projet est de type texte ajouter des quotes
    ' strAffaire = "'" & strAffaire & "'"
     
    ' récupère chemin dans table table_infos_projet
    strChemin = DLookup("chemin", "table_infos_projet", "projet=" & strAffaire )
     
    Call Exportation("test", strChemin ,"onglet2")
     
    end sub
    A+

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    D'abord il y avait une erreur dans ce que j'ai posté. Ensuite Trop peu de paramétre ... est tout a fait normal parce que le paramétre n'est pas bien renseigné.

    Selon que Projet est un entier ou un texte l'écriture du paramétre sera un peu différent.

    Entier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set qd = mabase.OpenRecordSet("SELECT First(table_infos_projet.chemin) as chemin FROM table_infos_projet  HAVING table_infos_projet.projet=" & Forms![Formulaire GENERAL]!AFFAIRE)
    Texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set qd = mabase.OpenRecordSet("SELECT First(table_infos_projet.chemin) as chemin FROM table_infos_projet  HAVING table_infos_projet.projet='" & Forms![Formulaire GENERAL]!AFFAIRE & "'")
    Tu peux aussi déclarer une variable comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim MonProjet as Variant
    MonProjet=Forms![Formulaire GENERAL]!AFFAIRE
    et tu l'utilise dans la suite.

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    merci beaucoup!

    je me suis servi de ton 2e post et cela m'a beaucoup aidé.J'ai changé d'approche car j'avais besoin d'un 2e critère autre que le projet qui était le nom de l'onglet et j'arrivais pas à combiner les 2 critères dans Dlookup .Quand je triais avec l'un ou l'autre indépendamment ca fonctionnait mais pas les 2 en même temps.

    J'ai fais une requête intermédiaire (parametrage) qui filtre les données de la table de départ par le nom de projet.
    je me sers de cette requête pour faire un filtre par le nom de l'onglet.
    Voila ce que donne maintenant le resultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Commande5_Click()
    Dim strChemin As String, strAffaire As String, stronglet As String, strcolonnes As Long
     
    'plus utile
    'strAffaire = Forms("Formulaire GENERAL").AFFAIRE
    'strAffaire = "'" & strAffaire & "'"
     
    stronglet = "kilometres par mois"
    ' récupère chemin dans table table_infos_projet
    strChemin = DLookup("chemin", "parametrage", "onglet=" & "'" & stronglet & "'")
    ' récupère nb de champ dans table table_infos_projet, c'est une autre donnée dont j'ai besoin
    strcolonnes = DLookup("nb_champ", "parametrage", "onglet=" & "'" & stronglet & "'")
    Call Exportation("test", strChemin, stronglet, strcolonnes)
    End Sub
    je vais regarder de plus près la dernière solution que tu m'as proposée, elle est peut être plus simple.

    En tout cas merci beaucoup de ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/04/2010, 16h08
  2. Réponses: 3
    Dernier message: 20/03/2006, 17h46
  3. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 15h50
  4. [PL/SQL] Multi paramètre dans une fonction
    Par wiLL_ dans le forum Oracle
    Réponses: 2
    Dernier message: 28/02/2006, 17h31
  5. Réponses: 9
    Dernier message: 13/05/2005, 03h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo