Probleme [VBA] importation données excel dans Access
Probleme [VBA] importation données excel dans Access - VB/VBA/VBS - Programmation
MarshPosté le 26-06-2007 à 08:44:29
Bonjours à tous. Voila j(ai un petit problème qui m'empeche d'avancr dans mon travail. J'ai un code VBA d'importation/convertion de données Excel vers une base de données Access. J'ai l'erreur suivante: Erreur d'execution '429': Un composant ActiveX ne peut pas créer d'objet
Dim Num_agent As Integer ' Numéro de l'agent 'AutoIncrement(pas de numéro d'agent) Dim Nom_agent As String 'Nom de l'agent Dim Num_projet As Integer 'Numéro du projet 'AutoIncrement (pas de numéro de projet) Dim Semaine_realisation As String 'numéro de la semaine de réalisation Dim Metier As String 'Métier Dim Projet As String 'Nom du projet Dim Description As String 'description de l'activité réalisée Dim Tache As String 'Avancement (en pourcentage ou terminé) Dim Temps_passe As Integer 'Temps_passé sur le projet (en h)
Dim SQL As String 'Variable qui permet de créer une table Dim NomTable As String 'Nom de la table d'importation n°1 Dim NomTable2 As String 'Nom de la table d'importation n°2 Dim j As Integer 'Comp teur
Dim NomDuFichier 'Nom du fichier à importer (insertion des cellule Excel) Dim xls As Excel.Application 'Excel Dim MonClasseur As Excel.Workbook 'Le classeur Dim MaFeuilleDeDonnees As Excel.Worksheet 'la Feuille Dim CDialog As New MSComDlg.CommonDialog 'la boite de dialogue
'############################################### ' Pour incrémenter de 1 ==> type autoIncrément Num_agent = Num_agent + 1 Num_projet = Num_projet + 1 '###############################################
With CDialog 'Répertoire d'ouverture .InitDir = "C:\" 'Filtre sur les Classeur Excel .Filter = "*.xls Classeur Excel|*.xls" 'Montre la boite de dialogue ouverture de fichier .ShowOpen 'Récupère le chemin et le nom choisi NomDuFichier = .Filename End With
If NomDuFichier = vbNullString Then Call MsgBox("Veuillez sélectionner un fichier", vbExclamation Or vbOKOnly, "Attention !!!" ) Exit Sub End If
Set Dbs = CurrentDb 'CurrentDb ==> Suivi_activites
'Initialisation Nom de la table d'importation n°1 NomTable = "Projets" 'Initialisation Nom de la table d'importation n°2 NomTable2 = "Agents"
'Ouverture de l'application EXCEL Set xls = New Excel.Application
'Ouverture du classeur Excel choisi plus haut par l'utilisateur Set MonClasseur = xls.Workbooks.Open(NomDuFichier)
'Affectation de l'objet feuille Set MaFeuilleDeDonnees = MonClasseur.Worksheets(1) Call MsgBox("Le classeur d'importation est ouvert", vbInformation Or vbOKOnly)
Marsh Posté le 26-06-2007 à 08:44:29
Bonjours à tous. Voila j(ai un petit problème qui m'empeche d'avancr dans mon travail. J'ai un code VBA d'importation/convertion de données Excel vers une base de données Access.
J'ai l'erreur suivante:
Erreur d'execution '429':
Un composant ActiveX ne peut pas créer d'objet
J'ai cette erreur au nivau de mon = With CDialog
Voici mon code:
[cpp][/cpp]Sub Cmd_Importation_Click()
'On Error GoTo err
Dim Num_agent As Integer ' Numéro de l'agent 'AutoIncrement(pas de numéro d'agent)
Dim Nom_agent As String 'Nom de l'agent
Dim Num_projet As Integer 'Numéro du projet 'AutoIncrement (pas de numéro de projet)
Dim Semaine_realisation As String 'numéro de la semaine de réalisation
Dim Metier As String 'Métier
Dim Projet As String 'Nom du projet
Dim Description As String 'description de l'activité réalisée
Dim Tache As String 'Avancement (en pourcentage ou terminé)
Dim Temps_passe As Integer 'Temps_passé sur le projet (en h)
Dim SQL As String 'Variable qui permet de créer une table
Dim NomTable As String 'Nom de la table d'importation n°1
Dim NomTable2 As String 'Nom de la table d'importation n°2
Dim j As Integer 'Comp teur
Dim NomDuFichier 'Nom du fichier à importer (insertion des cellule Excel)
Dim xls As Excel.Application 'Excel
Dim MonClasseur As Excel.Workbook 'Le classeur
Dim MaFeuilleDeDonnees As Excel.Worksheet 'la Feuille
Dim CDialog As New MSComDlg.CommonDialog 'la boite de dialogue
'###############################################
' Pour incrémenter de 1 ==> type autoIncrément
Num_agent = Num_agent + 1
Num_projet = Num_projet + 1
'###############################################
With CDialog
'Répertoire d'ouverture
.InitDir = "C:\"
'Filtre sur les Classeur Excel
.Filter = "*.xls Classeur Excel|*.xls"
'Montre la boite de dialogue ouverture de fichier
.ShowOpen
'Récupère le chemin et le nom choisi
NomDuFichier = .Filename
End With
If NomDuFichier = vbNullString Then
Call MsgBox("Veuillez sélectionner un fichier", vbExclamation Or vbOKOnly, "Attention !!!" )
Exit Sub
End If
Set Dbs = CurrentDb 'CurrentDb ==> Suivi_activites
'Initialisation Nom de la table d'importation n°1
NomTable = "Projets"
'Initialisation Nom de la table d'importation n°2
NomTable2 = "Agents"
'Ouverture de l'application EXCEL
Set xls = New Excel.Application
'Ouverture du classeur Excel choisi plus haut par l'utilisateur
Set MonClasseur = xls.Workbooks.Open(NomDuFichier)
'Affectation de l'objet feuille
Set MaFeuilleDeDonnees = MonClasseur.Worksheets(1)
Call MsgBox("Le classeur d'importation est ouvert", vbInformation Or vbOKOnly)
'Creation des tables d'importation
SQL = "create table " & NomTable & "(Num_projet integer, Semaine_realisation string, Metier string, Projet string, Description string, Tache string, Temps_passe integer)"
Dbs.Execute SQL
SQL = "create table " & NomTable2 & "(Num_agent integer, Nom_agent string, Num_projet integer)"
Dbs.Execute SQL
MsgBox ("Tables d'importation crées" )
j = 5 'on initialise j à 5 (Cellules vides avant la ligne 5)
With MaFeuilleDeDonnees
Do While Not IsEmpty(.Range("A" & CStr(j)))
'Recuperations des données lignes par lignes
Semaine_realisation = .Range("B" & CStr(j)).Value
Metier = .Range("C" & CStr(j)).Value
Projet = .Range("D" & CStr(j)).Value
Activite_realisee = .Range("E" & CStr(j)).Value
Temps_passe = .Range("F" & CStr(j)).Value
Tache = .Range("G" & CStr(j)).Value
Nom_agent = .Range("E" & CStr(2)).Value
'Insertion des données dans la table
SQL = "INSERT INTO NomTable (Num_projet, Semaine_realistion, Metier, Projet, Description, Tache, Temps_passe)"
Dbs.Execute SQL
SQL = "INSERT INTO NomTable2 (Num_agent, Nom_agent, Num_projet)"
Dbs.Execute SQL
j = j + 1
Loop
End With
'Fermeture du classeur d'Importation
'False = pas sauvegarder les changements
Call MonClasseur.Close(False)
'Quitter l'application Excel
Call xls.Quit
MsgBox (" Le classeur d'importation est fermé " )
MsgBox (" Importation des données effectuée " )
'###############################################
Num_projet = 1
Num_agent = 1
'###############################################
err:
'Destruction des objets
Set xls = Nothing
Set MonClasseur = Nothing
Set MaFeuilleDeDonnees = Nothing
Set CDialog = Nothing
Num_projet = 0
Num_agent = 0
End Sub[cpp][/cpp]
(de plus je ne sais pas comment faire un autoincrément pour mes Num_projet et Num_agent)
Par avance merci de vos réponses