Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Général VBA

Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.

Réponse
 
Outils de la discussion
Vieux 29/02/2008, 09h20   #1 (permalink)
Membre régulier
 
Date d'inscription: novembre 2005
Messages: 112
Par défaut Option Multiselect dans OpenFileDialog

Bonjour

J'ai trouvé ce code sur MSDN, mais comment on fait pour activer la propriété Multiselect ?

Code :
     Option Explicit
 
       Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
         "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
 
       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
 
       Sub Openfiledialog()
         Dim OpenFile As OPENFILENAME
         Dim lReturn As Long
         Dim sFilter As String
         OpenFile.lStructSize = Len(OpenFile)
         'OpenFile.hwndOwner = Form1.HWND
         'OpenFile.hInstance = App.hInstance
         sFilter = "AUTOCAD Files (*.dwg)" & Chr(0) & "*.dwg" & Chr(0)
         OpenFile.lpstrFilter = sFilter
         OpenFile.nFilterIndex = 1
         OpenFile.lpstrFile = String(257, 0)
         OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
         OpenFile.lpstrFileTitle = OpenFile.lpstrFile
         OpenFile.nMaxFileTitle = OpenFile.nMaxFile
         OpenFile.lpstrInitialDir = "T:\"
         OpenFile.lpstrTitle = "choix des plans"
         OpenFile.flags = 5
         lReturn = GetOpenFileName(OpenFile)
         If lReturn = 0 Then
            MsgBox "The User pressed the Cancel Button"
         Else
            MsgBox "The user Chose " & Trim(OpenFile.lpstrFile)
         End If
       End Sub
 
patbeautifulday1 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/02/2008, 17h44   #2 (permalink)
Inscrit(e)
 
Date d'inscription: juillet 2007
Localisation: au pays de la liberté d'esprit
Messages: 3 110
Par défaut

Bonjour,

Cette fonction de l'Api de Windows est faite pour sélectionner un fichier, pas plusieurs...

Quelle est la raison pour laquel tu souhaites en sélectionner plusieurs à la fois ?
ucfoutu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/03/2008, 12h23   #3 (permalink)
Membre régulier
 
Date d'inscription: novembre 2005
Messages: 112
Par défaut

salut uctofou

Je souhaite, dans Autocad, créer une liste de fichiers pour effectuer des traitements automatiques : ouverture, extraction de données, puis fermeture, etc...
J'ai pensé utiliser cette API pour sélectionner plusieurs fichiers à la fois pour effectuer cette opération à la chaîne. Mais maintenant que j'y pense, je vais plutôt fonctionner par parcours et exploration de répertoire, et traitement sur chaque fichier. Je ferai le test sur un seul fichier et basta...
Par contre est-ce que c'est la même API pour sélectionner un répertoire plutôt que d'un fichier ?
patbeautifulday1 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/03/2008, 12h31   #4 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 579
Par défaut

Code :
Sub repertoireLister()
    Dim fs, f, f1, fc, s, NomRep
    NomRep = ActiveWorkbook.path & "\"
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(NomRep)
    Set fc = f.SubFolders
    For Each f1 In fc
        s = s & f1.Name
        s = s & vbCrLf
    Next
    MsgBox s
End Sub
ou
Code :
Sub ListerLesRépertoires()
Dim chemin as string, NomRep as string, Rep as boolean
    Chemin = "c:\Windows\"
    NomRep = Dir(Chemin, vbDirectory)
    Do While NomRep <> ""
        If NomRep <> "." And NomRep <> ".." Then
            Rep = (GetAttr(Chemin & NomRep) And vbDirectory) = vbDirectory
            If Rep Then msgbox NomRep
        End If
        NomFich = Dir
    Loop
End Sub
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBAACCESS

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Général VBA

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide