Quelle bibliothéque à cocher??

Résolu
Signaler
Messages postés
21
Date d'inscription
vendredi 12 novembre 2004
Statut
Membre
Dernière intervention
27 mars 2007
-
Messages postés
285
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
13 mars 2012
-
Bonjour

Je travaille sous access 2000 et quand je compile ce code, ca donne le message suivant : "Type défini par l'utilisateur non défini" dans la ligne "Dim Fd As FileDialog"

Dim Fd As FileDialog
Set Fd = Application.FileDialog(msoFileDialogOpen)
With Fd
.AllowMultiSelect = False ' multisélection interdite
If .Show = -1 Then
path= .SelectedItems(1)' mémorisation du fichier sélectionné
Else
Exit Sub
End If
End With
Set Fd = Nothing

Quelle "bibliothèque" je dois cocher dans "Outils / Références" ?

N.B : J'ai coché la bibliothèque "Microsoft Office 9.0 Object Library" , tjrs le même message

Merci d'avance

27 réponses

Messages postés
285
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
13 mars 2012

Tout le plaisir est pour nous


suggestion :


Pourquoi ne pas mettre simplement *.* pour le filter, si c'est que tu veux...





observation suite à ton commentaire sur le cancelerror :

Le cancel error est en principe initialisé à false : c'est le
comportement par défaut.



Effectivement si tu le bascules à true (ou à
oui) et qu'il est exécuté avec une annulation on obtient un message qui
n'est pas un message d'erreur mais l'annulation par l'utilsateur. Cette
contreinte bascule si tu maîtrises la gestion des
erreurs, car tu sais ce qu'elle veut dire, et tu décides alors de
ce que
tu en fait.







'* Mise en place de la gestion des erreurs

onerror goto MesErr


set ....

With dlg



.DialogTitle = "selectionner un fichier" 'titre de la
boite



.Filter = "
(*.*)|*.*"



.InitDir = "T:"
'repertoire par defaut


.CancelError = True 'pour intercepter toutes les anomalies


.Flags = tacmCdlOfnHideReadOnly + tacmCdlOfnPathMustExist


.ShowOpen


End With





'Doc_Chemin est la zone de texte recevant le chemin du fichier


If obj.FileName <> "" Then


Doc_Chemin.Value = obj.FileName


End If


'* gestion des erreur cancelerror paramétré sur oui/true

MesErr:

If Err.number <> 32755 then


msgbox err.number & "#"& err.description

endif








madbob
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
Je crois que c'est :

comdlg32.ocx

It@li@
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
dans outils Outils / Composants

It@li@
Messages postés
285
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
13 mars 2012

Salut la cie



Moi ça tourne quand je selectionne la référence Microsoft office 10 object librairie


madbob
Messages postés
21
Date d'inscription
vendredi 12 novembre 2004
Statut
Membre
Dernière intervention
27 mars 2007

Merci bcp pour vos réponses, je trouve pas cette référence, je n'ai que "Microsoft Office 9.0 Object Library" et ca marche pas avec, qu'est ca que je fais?
Sinon comment je peux spécifier un dossier par défaut à l'ouverture d'une boite de dialogue (Un lecteur réseau par exemple ou le bureau) avec le controle common dialog?

Merci d'avance.

Moony

N.B: Je travaille avec access 2000 et pas Visual Basic.
Messages postés
285
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
13 mars 2012

On a bien compris...



Par contre qu'est-ce que tu voudrai faire ça je suis pas sur d'avoir compris.



Si tu veux obtenir les fenêtre standtart de bilou du utilise le composant que t'a indiqué par
It@li@.



ou tu le fais par la toolbox et en choisissant microsoft common dialog control....

et en dessinant de suite l'objet dans ton form. après y plus qu'a coder



madbob
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
tu dois utiliser le comdlg32.ocx
en cochant Projet...composants....Microsoft Common Dialog Control 6.0

It@li@
Messages postés
21
Date d'inscription
vendredi 12 novembre 2004
Statut
Membre
Dernière intervention
27 mars 2007

Je sais tout ca et c'est deja fait, ce que je veux savoir mnt c'est comment définir un dossier par défaut pour common dialog (Par exemple en cliquant sur ouvrir la boite de dialogue affiche les dossiers du bureau ou un lecteur réseau)?

Pour le message d'erreur j'ai laissé tombé.

Merci encore une fois pour vos réponse.

Moony
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
' Chemin Initial
CommonDialog1.InitDir = "C:"

It@li@
Messages postés
21
Date d'inscription
vendredi 12 novembre 2004
Statut
Membre
Dernière intervention
27 mars 2007

C'est bien ce que je cherche, Merci.
Une autre petite question: Quand je clique sur "Annuler" sans choisir un fichier j'ai un message d'erreur.
Je dois tester sur le bouton cliqué? Si oui quelles propriétés utiliser ?
Merci les gars pour vos promptes réponses.
Messages postés
285
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
13 mars 2012

Je pense très sincerement que l'erreur est générée après et pas par la commondialogbox...

C'est après la grouille, tu dois faire quelquechose alors que la chaine que tu utilises est vide....

madbob
Messages postés
21
Date d'inscription
vendredi 12 novembre 2004
Statut
Membre
Dernière intervention
27 mars 2007

T'as raison, l'affectation du chemin à une zone du texte qui causait l'erreur. Voici le code final.

With dlg
.DialogTitle = "selectionner un fichier" 'titre de la boite
.FileName = "" 'on recherche un fichier d'extension txt
.Filter = "Word (*.doc)|*.doc|Excel (*.xls)|*.xls|PDF (*.pdf)|*.pdf|TIFF (*.tif)|*.tif|RTF (*.rtf)|*.rtf|Tous Les Fichiers (*.*)|*.*"
.InitDir = "T:" 'repertoire par defaut
.CancelError = False 'pour ne pas partir en erreur si on click sur annuler
.Flags = tacmCdlOfnHideReadOnly + tacmCdlOfnPathMustExist
.ShowOpen
End With
'Doc_Chemin est la zone de texte recevant le chemin du fichier
If obj.FileName <> "" Then
Doc_Chemin.Value = obj.FileName
End If

Merci pour votre aide et pour votre temps.

Moony
Messages postés
21
Date d'inscription
vendredi 12 novembre 2004
Statut
Membre
Dernière intervention
27 mars 2007

Merci, t'es vraimant gentil, je rectifierai mon code.

Moony
Messages postés
21
Date d'inscription
vendredi 12 novembre 2004
Statut
Membre
Dernière intervention
27 mars 2007

Je voulais juste ajouter que pour le message d'erreur "Type défini par l'utilisateur non défini", j'ai téléchargé la bibliothéque "Microsoft Office 11.0 Object Library" (mso.dll) à partir du site : http://www.dlldump.com/filelistings/m.shtml et j'obtiens plus ce message, j'ai un autre message "Membre de méthode ou de données introuvable" et j'ai le mot en rouge sélectionné.

Dim Fd As FileDialog
Set Fd = Application.FileDialog(msoFileDialogOpen)
With Fd
.AllowMultiSelect = False ' multisélection interdite
If .Show = -1 Then
path= .SelectedItems(1)' mémorisation du fichier sélectionné
Else
Exit Sub
End If
End With
Set Fd = Nothing
Messages postés
285
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
13 mars 2012

Salut



Le message est clair il ne reconnait pas le membre (de la classe)

=> la classe qui contient ce membre n'est pas correctement linké au projet sur lequel tu travaille.

Je ne connais pas les circonstances mais tu as peut être un link qui a sauté



As tu fais une recherche via l'explorateur d'objet ?



J'ai xp et access 2000 et ça marche très bien qu'elles sont les autres réferences valides associées à ton projet

madbob
Messages postés
285
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
13 mars 2012

Microsoft common dialog control 6 sp3 m'a l'air indipensable

"Contrôle Microsoft CommonDialog 6.0"


madbob
Messages postés
21
Date d'inscription
vendredi 12 novembre 2004
Statut
Membre
Dernière intervention
27 mars 2007

Voici ttes les références cochées dans mon application :

- Visual Basic For Applications
- Microsoft Access 9.0 Object Library
- Microsoft Office 11.0 Object Library
- Microsoft DAO 3.6 Object Library
- OLE Automation
- Microsoft ActiveX Data Objects 2.1 Library
- Microsoft Windows Common Controls-2-6.0(SP4)
- Microsoft Forms 2.0 Objects Library
- Sinus ActiveX-Steuerelement-Modul
- Microsoft Common Dialog Control 6.0
- FILEMGMT 1.0 Type Library
- DriveListBox
- DirListBox
- FileList
- Cdlg
- MSIOFF ActiveX Control module

Merci.
Messages postés
285
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
13 mars 2012

Peut-être faut-il que tu hierachises autrement tes ressources avec les
flèches de priorités tu devrais monter Microsoft Common Dialog Control
6.0 dessous OLE Automation.

Il faut éviter d'avoir des conflit liés au polymorphisme, ces conflit
sont résolus par la hiérarchisation et les flèches sont prévues pour ça.

Si vraiment ça ne fonctionne pas, refait un projet minimaliste insère
la comon controle par la boite à outil (la référence correcte et
disponible va être implémentée automatiquement)

Mets ton code et faits la fonctionner



J'ai touché à rien et ça marche et j'ai comme référence dispo :

VB dor applications

Micr.. Access 10.0 object library

OLE Automation

Microsof ActiveX DAO 2.1 Library

Microsoft Comm Dialog Controle 6.0 (SP3)



La référence Microsoft Comm Dialog Controle 6.0 (SP3) a été inséré
directement quand j'ai inséré le composant par la boite à outil...

A+
madbob
Messages postés
21
Date d'inscription
vendredi 12 novembre 2004
Statut
Membre
Dernière intervention
27 mars 2007

Toi tu as "Microsoft Access 10.0 object library" et moi je n'ai que "Microsoft Access 9.0 object library", peut être c'est ca qui cause le problème, Non?

Moony
Messages postés
285
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
13 mars 2012

mes certitudes ne sont qu'incertitudes moony01 . Mais je baisse pas les bras



Ton probleme est peut être ailleur moi je ne fait pas de set regarde ce
code et il n'arive pas à instancier il faut peut être pas faire de set
Moi je n'en fait pas

et mon controle est sur mon formulaire



Private Sub Commande1_Click()

On Error GoTo Meserr

Me.CD1.DialogTitle = "Selectionner un fichier text à coder"



'* filtres

If P_Crit = 0 Then

Me.CD1.Filter = "(*.TXT)|*.txt"

ElseIf P_Crit = 1 Then

Me.CD1.Filter = "(*.BMP)|*.bmp"

End If



'* Ouvre le template MS avec le filtre approprié

Me.CD1.ShowOpen



Meserr:

If Err.Number <> 32755 Then

MsgBox Err.Number & Err.Description

End If

End Sub


madbob