Probleme [VBA] importation données excel dans Access

Probleme [VBA] importation données excel dans Access - VB/VBA/VBS - Programmation

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

Reply

Marsh Posté le 26-06-2007 à 08:44:29   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed