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 :

erreur d'execution 3061.Trop peu de parametres.1 attendu


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 erreur d'execution 3061.Trop peu de parametres.1 attendu
    bonjour à tous,
    J'ai consulté les différents articles relatifs à ce type d'erreur mais je n'ai pas trouvé de solution.

    J'ai un problème concernant l'extraction d'une requête ACCESS dans un onglet spécifié d'une feuille EXCEL.

    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Compare Database
    Option Explicit
    ---------
    Private Sub Commande5_Click()
     
    Call Exportation("requete", "C:\sortie.xls", "onglet2")
     
     
    End Sub
    ------------
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub Exportation(requete, sortie As String, onglet2 As String)
    
     Dim xlA As Object, xlW As Object, t As DAO.Recordset
     Dim s As String, NumChamp As Long, ligne As Long
     Dim mabase As Database
     
     Set xlA = CreateObject("excel.application")    'lance Excel
     xlA.Visible = True
     xlA.Workbooks.Open (sortie)       'ouvre le fichier
     Set xlW = xlA.activeworkbook
     ligne = 1
     Set mabase = CurrentDb
     Set t = mabase.OpenRecordset(requete)   'ouvre la requete
     Do Until t.EOF
       ligne = ligne + 1            'ligne suivante dans la feuille Excel
       For NumChamp = 0 To 1        'pour chaque colonne de la requete
        s = t(NumChamp)             'recupération des données au format Texte
        xlW.Sheets(onglet2).Cells(ligne, NumChamp + 1) = s 'ecriture dans la cellule
       Next NumChamp
      t.MoveNext                    'enregistrement suivant
      Loop
     t.Close
     xlW.Save
     xlA.Quit
     Set xlA = Nothing    ' puis libère la référence.
    
    End Sub

    Mon problème se situe à la ligne en gras. J'ai le message suivant:
    erreur d'execution 3061.Trop peu de parametres.1 attendu

    Je ne comprends pas ce qu'on entend par parametre attendu. Je ne vois pas ce qui cloche.

    "requete" est une requête faite à l'aide d'access dont le code en sql est le suivant:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNTER.[ID rame], Sum(COUNTER.Lecture) AS SommeDeLecture
    FROM [COUNTER]
    GROUP BY COUNTER.[ID rame], COUNTER.[ID projet]
    HAVING (((COUNTER.[ID projet])=[Formulaires]![Formulaire GENERAL]![AFFAIRE]))
    ORDER BY COUNTER.[ID rame];
    elle me permet de compter le nombre de kilometres réalisés(sum(counter.lecture)) par une locomotive(id rame) pour une affaire donnée.

    remarques supplémentaires

    *lorsque je lance la requête sur access, elle fonctionne
    *je suppose que le problème vient d'une compatibilité entre ma requête et openrecordset car j'ai fais ce test:
    j'ai executé la requete sous access et j'ai copié les données sur une table, ensuite j'ai executé ma fonction d'export sur cette table, et la ça a fonctionné...

    question subsidiaire:
    dans certains post j'ai vu OpenRecordset(requete,dbOpensnapshot) ou encore OpenRecordset(requete,dbOpenDynaset), à quoi correspondent ces expressions?


    Désolé si mon message est long, c'est par souci de clarté.
    J'espère qu'au moins j'ai été clair.
    Merci d'avance pour les réponses.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 209
    Points : 103
    Points
    103
    Par défaut
    Bonjour à toi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Set mabase = CurrentDb()
    requete=" SELECT COUNTER.[ID rame], Sum(COUNTER.Lecture) AS SommeDeLecture
    FROM [COUNTER]
    GROUP BY COUNTER.[ID rame], COUNTER.[ID projet]
    HAVING (((COUNTER.[ID projet])=[Formulaires]![Formulaire GENERAL]![AFFAIRE]))
    ORDER BY COUNTER.[ID rame]"
    Set t = mabase.OpenRecordset(requete) 'ouvre la requete
    Essai ça , sa ira mieux apres je crois ou alors

    requete = "NomDeTaRequete"
    Set t.........

    et pour tes question dsl je suis pas assez balaise en access pour pouvoir te repondre
    Bonne chance

  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
    tout d'abord merci beaucoup pour la rapidité de ta réponse, malheureusement ça n'a pas fonctionné, j'ai toujours la même erreur.

  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
    Bonjour,

    le problème vient de ce que ta requête fait référence à un contrôle de formulaire : [Formulaires]![Formulaire GENERAL]![AFFAIRE]
    Il est pris pour un paramètre par DAO contrairement à Access.
    Il faut que tu passes par un objet QueryDef intermédiare, auquel tu fournis le paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim q As DAO.QueryDef
    ...
     Set mabase = CurrentDb
     ' ouvre objet définiton de requête 
     Set q = mabase.QueryDefs(requete)
     ' fournit valeur du 1er paramètre 
     q.Parameters(0).Value = [Forms]![Formulaire GENERAL]![AFFAIRE]
     ' ouvre un recordset à partir de la requête paramétrée
     Set t = q.OpenRecordset
    A+

  5. #5
    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, j'essaierai cette solution dès lundi au travail.

  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 à toi LedZeppII, cette solution semble fonctionner à ceci près:
    lorsque j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    q.Parameters(0).Value = [Forms]![Formulaire GENERAL]![AFFAIRE]
    access me dit qu'il est impossible de trouver le champ "formulaires" auquel je fais référence. Pourtant tout est bien ortographié.
    Mais si je code en dur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    q.Parameters(0).Value = "paramètre"
    il selectionne bien "paramètre".
    A+

  7. #7
    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
    Bonjour,

    bizzare, "formulaires" n'est écrit nulle part.
    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    q.Parameters(0).Value = Forms("Formulaire GENERAL").AFFAIRE
    A+

  8. #8
    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
    Je pense que l'erreur venait du fait que j'utilisais [Formulaire] au lieu de [forms].
    J'utilisais [formulaires] car ca fonctionnait en sql et en mode création pour les requêtes ACCESS.
    Ta dernière solution semble fonctionner, je te remercie BEAUCOUP!

  9. #9
    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
    Sans doute. VB et SQL ne connaissent que l'anglais US.
    A+

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/03/2015, 20h08
  2. [AC-2007] Erreur d'execution 3061.Trop peu de parametres.3 attendu
    Par Charlis dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/10/2013, 09h18
  3. [AC-2010] Erreur d'exécution 3061: Trop peu de paramêtre 1 attendu
    Par acpsc dans le forum VBA Access
    Réponses: 3
    Dernier message: 06/05/2013, 22h01
  4. [AC-2000] Erreur d'exécution '3061': - Trop peu de paramètres. 2 attendu
    Par zoom61 dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/05/2013, 10h36
  5. ERREUR 3061 Trop peu de parametres
    Par Jordywolf dans le forum Access
    Réponses: 4
    Dernier message: 30/12/2011, 18h58

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