Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 2011
-
29 déc. 2006 à 16:47
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 2011
-
5 janv. 2007 à 09:28
Bonjour,
Petite question.
J'ai développé une petite appli sous EXCEL 2003 utilisant entre autre un FileDialog, appli qui fonctionne très bien.
Mon soucis, quand j'ouvre le classeur avec EXCEL 2000, mon bout de code ne fonctionne plus, le FileDialog n'est pas reconnu.
Après une courte recherche sur le net, il semblerait que les FileDialog soient inclus dans Microsoft Office 10.0 Object Library.Or, sur le poste avec Excel 2000, je n'ai que la version 9.0
Y'a t'il moyen de récupérer juste la .dll correspondant (la télécharger sur le net, le site de MicroSoft par ex ?) pour que mon appli fonctionne ? Ou je vais devoir passer par une installation d'Excel 2003 ce qui ne m'arrangerait pas du tout.
S'il est possible de la récupérer : quel peut bien être son nom, à cette .dll : MSO10.dll ?
D'avance merci,
Molenn
A voir également:
Microsoft speech object library
Microsoft excel object library - Meilleures réponses
Vba microsoft forms 2.0 object library - Meilleures réponses
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 29 déc. 2006 à 22:59
En utilisant les APIs suivantes, tu devrais pouvoir y arriver
'Dans un module
Option Explicit
Public Type BrowseInfo
hWndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
Public Const BIF_RETURNONLYFSDIRS As Long = 1
Public Const BIF_DONTGOBELOWDOMAIN As Long = 2
Public Const BIF_STATUSTEXT As Long = 4
Public Const BIF_RETURNFSANCESTORS As Long = 8
Public Const BIF_BROWSEFORCOMPUTER As Long = &H1000 ' 0x1000
Public Const BIF_BROWSEFORPRINTER As Long = &H2000 ' 0x2000
Public Const BIF_BROWSEINCLUDEFILES As Long = &H4000 ' 0x4000
Public Const MAX_PATH As Long = 260
'Déclaration api pour rechercher le répertoire racine
Public Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, _
ByVal lpBuffer As String) As Long
Public Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, _
ByVal lpString2 As String) As Long
Public Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Public Function GetFolder(Optional Title As String = "") As String
Dim iNull As Integer
Dim lpIDList As Long
Dim lResult As Long
Dim sPath As String
Dim udtBI As BrowseInfo
GetFolder = ""
With udtBI
.lpszTitle = lstrcat(Title, "")
.ulFlags = BIF_RETURNONLYFSDIRS
End With
lpIDList = SHBrowseForFolder(udtBI)
If lpIDList > 0 Then
sPath = String$(MAX_PATH, 0)
SHGetPathFromIDList lpIDList, sPath
CoTaskMemFree lpIDList
iNull = InStr(sPath, vbNullChar)
If iNull Then
sPath = Left$(sPath, iNull - 1)
End If
GetFolder = sPath
End If
End Function
'Et pour l'appeler
Private Sub BtnRep_Click()
Dim FolderName As String
FolderName = GetFolder("Veuillez sélectionner le dossier source" & vbCrLf & _
"contenant les fichiers")
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 29 déc. 2006 à 17:07
Je n'ai pas VBA mais je crois deviner que ton composant FileDialog fait ce que fait un composant CommonDialog, que tu pourrais utiliser à la place de FileDialog, donc ...
Il t'est également possible de t'affranchir de tout composant (je les évite chaque fois que possible en ce qui me concerne) et d'utliser directement les fonctions de l'API de Windows (ce qui rendra ton appli bien plus indépendante et portable).
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 29 déc. 2006 à 17:13
Le CommonDialog n'est pas utilisable pour ce que je veux faire ... En effet, il n'offre pas l'option FolderPicker. C'est pour ça que je suis parti dans Excel en fait parce que je n'avais pas envie de m'embêter et je savais que ça fonctionnait. Sauf que je n'ai pas la bonne version chez moi (j'ai fait ça un midi sur mon poste au boulot ).
Le CommonDialog permet de sélectionner des fichiers, mais pas des répertoires.
J'y viendrai si j'ai pas le choix, mis je préfèrerai éviter ^^
Merci tout de même.
Molenn
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 29 déc. 2006 à 22:18
Re bonsoir,
étant en fin d'année encore plus cinglé que de coutime, j'ai voulu m'amuser à créer un vrai et un faux double-click
Il fallait en effet permettre à la fois de "dérouler" les dossiers dans dir1 (et il faut 2 clicks !!!) et d'avoir un double ckick "particulier" pour sélectionner un dossier !!!!!
Hostoire de fou ! donc pour moi !
alors voilà :
2 clicks "normaix", espacés de plus de 1/3 de seconde... et çà déroule
2 clicks très rapprochés... et çà choisit
code de cinglé :
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
Private Sub Dir1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Const stopclic As Single = 0.3
Static coucou As Single
DoEvents
If Abs(Timer - coucou) < stopclic Then 'And toto Then
coucou = Timer - stopclic
MsgBox Dir1.List(Dir1.ListIndex)
Else
coucou = Timer
End If
End Sub
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 5 janv. 2007 à 09:28
Hop là,
on ne devrait pas prendre de vacances, je n'ai pas pu passer plus tôt ^^
J'ai testé en premier la méthode de MPi et ça fonctionne nickel. J'ai fouillé un peu le net sur cette API et j'ai trouvé les options qui me manquaient sauf une. Pas de bol décidément, mais j'ai cru comprendre (mon anglais n'étant pas de première qualité) qu'en fait, ce que je voulais faire n'était pas possible :
On ne peut pas faire ouvrir la zone de sélection sur un chemin pré-défini. Je suis obligé de me refaire toute l'arborescence à chaque fois que j'ouvre la boite de sélection. Mais autrement, tout marche très bien, donc ... Merci !!!
Molenn
Pour ma culture personnelle, je vais récupérer sur mon poste au boulot la .dll MSO.dll sur mon poste au boulot et tenter de l'installer sur mon pc, pour voir si je peux utiliser tout de même les FileDialog avec un Excel 2000. Si ça fonctionne, je vous tiendrai au courant ^^