Problème d'automation Access-VBA-Excel

Fermé
Chris - 20 juil. 2001 à 14:11
 Chris - 22 juil. 2001 à 15:06
Je suis stagiaire débutante en informatique et je voudrais transférer les résultats d'une requête sélection réaliser sous Access2000, dans une feuille Excel. J'obtient les résultats de la requête Access dans un formulaire auquel j'ai intégré un bouton associé à ce code, et censé réaliser l'automation.J'ai notamment des prob aux nivaux des paramètres (too few parameters. expected 2 !!)
Merci d'avance, c'est assez urgent
Voici le source:

Option Compare Database

Private Sub Commande22_Click()

On Error GoTo Err_Commande22_Click

Dim Champ1 As String
Dim Champ2 As String
Dim Champ3 As String
Dim Champ4 As String
Dim Champ5 As Integer
Dim Champ6 As Integer
Dim Champ7 As Integer
Dim Champ8 As Long
Dim Champ9 As Integer
Dim Champ10 As Long
Dim MonFichier As String
Dim db As Database
Dim Enreg As Recordset
Dim qry As QueryDef


'Attribue un nom à aux différents champs (remplit dans le formulaire)
Champ1 = [nom_oper]
Champ2 = [nom_outil]
Champ3 = [no_carte_outil]
Champ4 = [nom_access]
Champ5 = [qte]
Champ6 = [Vc]
Champ7 = [n]
Champ8 = [f]
Champ9 = [Vf]
Champ10 = [long]

'Défini le nom du fichier Excel
MonFichier = [no_type_fiche]

'Ouvre l'application Excel
Set MonXL = CreateObject("Excel.Application")
'Ceci initialise la variable et charge Excel en arrière plan
'Rend Excel visible...
MonXL.Visible = True
MonXL.UserControl = True

'Ouvre MonFichier
MonXL.Workbooks.Open FileName:="C:\Mes Documents\Chris\" & MonFichier

'Ouverture de la base de données "carte_outil2.mdb"
Set db = CurrentDb

'Ouverture des enregistrements de la requête "Rco" <----Rco étant le nom de la requête Access


db.QueryDefs("Rco").Parameters("Numéro de la fiche outil") = MonFichier <--- ici est signalé une incompatibilité de type
db.QueryDefs("Rco").Parameters("Numéro de la carte outil") = Champ3
Set qry = db.QueryDefs("Rco")

Set Enreg = qry.OpenRecordset(dbOpenDynaset)

Ligne = 1

'Premier enregistrement de la table "Rco"
Enreg.MoveFirst

'Ecriture dans le fichier sélectionné tant que la fin de la table de la requête n'est pas atteinte
Do While Enreg.EOF = False

' Place le contenu du champ "Opération d'usinage" dans la 1ère colonne de la feuille EXCEL
MonXL.Cells(Ligne, 1).Value = Enreg![nom_oper]

' Place le contenu du champ "Désignation outil" dans la 2ème colonne de la feuille EXCEL
MonXL.Cells(Ligne, 2).Value = Enreg![nom_outil]

' Place le contenu du champ "N° carte outil" dans la 3ème colonne de la feuille EXCEL
MonXL.Cells(Ligne, 3).Value = Enreg![no_carte_outil]

' Place le contenu du champ "Désignation accessoires" dans la 4ère colonne de la feuille EXCEL
MonXL.Cells(Ligne, 4).Value = Enreg![nom_access]

' Place le contenu du champ "Qté M/C" dans la 5ème colonne de la feuille EXCEL
MonXL.Cells(Ligne, 5).Value = Enreg![qte]

' Place le contenu du champ "Vc" dans la 6ème colonne de la feuille EXCEL
MonXL.Cells(Ligne, 6).Value = Enreg![Vc]

' Place le contenu du champ "n" dans la 7ème colonne de la feuille EXCEL
MonXL.Cells(Ligne, 7).Value = Enreg![n]

' Place le contenu du champ "f" dans la 8ère colonne de la feuille EXCEL
MonXL.Cells(Ligne, 8).Value = Enreg![f]

' Place le contenu du champ "Vf" dans la 9ème colonne de la feuille EXCEL
MonXL.Cells(Ligne, 9).Value = Enreg![Vf]

' Place le contenu du champ "Longueur outil" dans la 10ème colonne de la feuille EXCEL
MonXL.Cells(Ligne, 10).Value = Enreg![long]


'Ligne suivante
Ligne = Ligne + 1

'Enregistrement suivante
Enreg.MoveNext

Exit_Commande22_Click:
Exit Sub

Err_Commande22_Click:
MsgBox Err.Description
Resume Exit_Commande22_Click

Loop


Enreg.Close

End Sub

A voir également:

1 réponse

il faut absolument que tu ecrive du code ??

parceque il y a une fonction toute faite sous acces qui transfere tes donnees sous excel. et en plus tu peux facilement l'associer a un bouton...
0
Le problème n'est pas que je dois écrire absolument du code mais tout doit être automatique à partir d'access, sans que l'utilisateur n'ait à "fouiller" et enregistrer les fichiers. De plus je dois pouvoir manipuler tous les enregistrements des différents champs issu de la requête , independement, pour pouvoir les mettre exactement ou je veux dans les differentes feuilles Excel selon cas, voir ignorer certain champ dans le cas de repetitions .. c'est pour ça que le code parait un peut compliqué, mais disons que c'est le seul moyen que j'ai trouvé pour pouvoir traiter ces enregistrements comme je veux par la suite (des case et if sont prevus par la suite..)
Si tu as des idees, ou des precisions à demander n hesites pas à me contacter. Merci d avance
0