CommonDialog Problème ActiveX
La0o34
Messages postés
14
Statut
Membre
-
OlivrT Messages postés 323 Date d'inscription Statut Membre Dernière intervention -
OlivrT Messages postés 323 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai créé une base de donnée ACCESS il y a quelque temps avec du code VBa associé. Seulement j'étais en environnement ACCESS 2003, or maintenant à la version 2007 et 2010, mes CommonDialog pour récupérer le chemin d'un fichier par l'intermédiaire d'une boite de dialogue ne fonctionne plus.
Voici le message d'erreur correspondant :
Ce code était fonctionnel quand je l'ai fait.
Mes ligne de code correspondant :
J'ai créé une base de donnée ACCESS il y a quelque temps avec du code VBa associé. Seulement j'étais en environnement ACCESS 2003, or maintenant à la version 2007 et 2010, mes CommonDialog pour récupérer le chemin d'un fichier par l'intermédiaire d'une boite de dialogue ne fonctionne plus.
Voici le message d'erreur correspondant :
Erreur d'exécution : 429 Un composant ActiveX ne peut pas créer d'objet.
Ce code était fonctionnel quand je l'ai fait.
Mes ligne de code correspondant :
Set CD = CreateObject("MSComDlg.CommonDialog")
With CD
.MaxFileSize = 400
.InitDir = "C:\"
.CancelError = False
.DialogTitle = "Cherchez votre fichier Parcelle"
.Filter = "Fichiers Excel Parcelle (*.xls ; *.xlsx)|*.xls;*.xlsx| Tous les fichiers (*)| *.*"
.FileName = ""
.FilterIndex = 1
.ShowOpen
If CD.FileName = "" Then
If MsgBox("Veuillez prendre votre fichier avant de continuer svp!" & Chr(10) & "Voulez-vous annuler l'importation ?", vbYesNo) = vbYes Then
GoTo fin
Else
GoTo debut
End If
End If
End With
debut3:
5 réponses
-
Bonjour,
Votre code insere dans de l'ACCESS 2007 fonctionne sans probleme.
A suivre -
Certainement mais il me manque peut être un dll ou autre chose permettant d'ouvrir l'objet CommonDialog, je pense.
-
Re,
Est ce que vous voyez le logo du CommonDialog sur votre formulaire? -
Salut,
lorsque ton code plante et que tu es dans la fenêtre de saisie du code, tu fais arrêter et tu vas ensuite regarder dans le menu outlils/référence pour voir s'il ne manque rien...
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
c'est parce que l'objet n'est pas sur la machine.
Il vaudrait mieux passer par une API pour utiliser directement la boite de dialogue de Windows :
'Déclarer l'API dans un module Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long ' Dans l'évènement Click d'un bouton btnSearchMyFile par exemple : Private Sub btnSearchMyFile_Click() Dim OFName As OPENFILENAME OFName.lStructSize = Len(OFName) OFName.hwndOwner = Me.hWnd OFName.hInstance = Application.hWndAccessApp OFName.lpstrFilter = "Fichiers Excel 2003 ou inf (*.xls)" + Chr$(0) + "*.xls" + Chr$(0) + "Fichiers Excel 2007 ou sup (*.xlsx)" + Chr$(0) + "*.xlsx" 'creer un buffer OFName.lpstrFile = Space$(254) 'long max du fichier sur 255 OFName.nMaxFile = 255 OFName.lpstrFileTitle = Space$(254) OFName.nMaxFileTitle = 255 'Répertoire par défault OFName.lpstrInitialDir = "C:\" 'Le titre OFName.lpstrTitle = "Exemple Olivier" OFName.flags = 0 'Affiche la boite de dialogue If GetOpenFileName(OFName) Then MsgBox "File to Open: " + Trim$(OFName.lpstrFile) Else MsgBox "Cancel " End If End Sub