Bonjour à tous, j'ai un problèle avec mon code et plus particulièrement avec ma boite de dialogue. Il se trouve que j'ai une erreur au niveau de mon
With CDialog
Voici mon code( code servant à importer des données excel dans une base de données Access)==> je précise je suis débutant en VBA:
Sub Cmd_Importation_Click()
'On Error GoTo err
Dim Num_agent As Integer 'AutoIncrement(pas de numéro d'agent)
Dim Nom_agent As String 'Nom de l'agent
Dim Num_projet As Integer '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 'Compteur
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
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("C" & CStr(j)).Value
Metier = .Range("D" & CStr(j)).Value
Projet = .Range("E" & CStr(j)).Value
Activite_realisee = .Range("F" & CStr(j)).Value
Temps_passe = .Range("G" & CStr(j)).Value
Avancement = .Range("H" & CStr(j)).Value
'Insertion des données dans la table
SQL = "INSERT INTO" & NomTable & " (Num_projet, Semaine_realistion, Metier, Projet," & _
"Description, Tache, Temps_passe) VALUES ('" & Num_projet & "','" & Semaine_realisation & "','" _
& Metier & "','" & Projet & "','" & Description & "','" & Tache & "','" & Temps_passe & "');"
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 ")
err:
'Destruction des objets
Set xls = Nothing
Set MonClasseur = Nothing
Set MaFeuilleDeDonnees = Nothing
Set CDialog = Nothing
End Sub
Voila j'ai l'erreur suivante au niveau de mon With CDialog:
Erreur d'execution'429':
Un composant ActiveX ne peut pas creer d'objet
Par avance merci de votre aide
Configuration: Windows XP
Firefox 2.0.0.4