Problème d'automation Access-VBA-Excel
Chris
-
Chris -
Chris -
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
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:
- Problème d'automation Access-VBA-Excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
- Déplacer colonne excel - Guide
Si tu as des idees, ou des precisions à demander n hesites pas à me contacter. Merci d avance