CommonDialog Problème ActiveX

Fermé
La0o34 Messages postés 14 Date d'inscription samedi 2 janvier 2010 Statut Membre Dernière intervention 23 mars 2012 - 23 mars 2012 à 09:53
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 28 mars 2012 à 23:36
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 :

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:
A voir également:

5 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
23 mars 2012 à 10:57
Bonjour,
Votre code insere dans de l'ACCESS 2007 fonctionne sans probleme.

A suivre
0
La0o34 Messages postés 14 Date d'inscription samedi 2 janvier 2010 Statut Membre Dernière intervention 23 mars 2012 1
23 mars 2012 à 11:04
Certainement mais il me manque peut être un dll ou autre chose permettant d'ouvrir l'objet CommonDialog, je pense.
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
23 mars 2012 à 12:32
Re,
Est ce que vous voyez le logo du CommonDialog sur votre formulaire?
0
blux Messages postés 26450 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 6 novembre 2024 3 312
23 mars 2012 à 14:48
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
Modifié par OlivrT le 28/03/2012 à 23:37
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 


0