1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| Public Function OuvrirPlusieursFichiers(Handle As Long, _
Titre As String, _
TypeRetour As Byte, _
Optional TitreFiltre As String, _
Optional TypeFichier As String, _
Optional RepParDefaut As String) As String()
'OuvrirUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir la boîte de dialogue de sélection de plusieurs fichiers.
' La fonction renvoie un tableau de chaine
'Explication des paramètres
'Handle = le handle de la fenêtre (Me.Hwnd)
'Titre = Titre de la boîte de dialogue
'TypeRetour (Définit si le chemin est renvoyé par la fonction ou pas)
'1 = le chemin est renvoyé dans le 1er élément du tablau
'2 = le chemin n'est pas renvoyé
'TitreFiltre = Titre du filtre
'Exemple: Fichier Access
'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
'TypeFichier = Extention du fichier (Sans le .)
'Exemple: MDB
'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
'RepParDefaut = Répertoire d'ouverture par defaut
'Exemple: C:\windows\system32
'Si vous laissé l'argument vide, par defaut il se place dans le répertoire de votre application
Dim StructFile As OPENFILENAME
Dim sFiltre As String
Dim iStr() As String
Dim iStr1() As String
Dim i As Integer
Dim j As Integer
Dim iStr_Chemin As String
'Construction du filtre en fonction des arguments spécifiés
If Len(TitreFiltre) > 0 And Len(TypeFichier) > 0 Then
sFiltre = TitreFiltre & " (." & TypeFichier & ")" & Chr$(0) & "*." & TypeFichier & Chr$(0)
End If
sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)
'Configuration de la boîte de dialogue
With StructFile
.lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure
.hwndOwner = Handle 'Identification du handle de la fenêtre
.lpstrFilter = sFiltre 'Application du filtre
.lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254
.nMaxFile = 254 'Taille maximale du fichier
.lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254
.nMaxFileTitle = 254 'Taille maximale du nom du fichier
.lpstrTitle = Titre 'Titre de la boîte de dialogue
.flags = OFN_ALLOWMULTISELECT + OFN_EXPLORER '& 'Option de la boite de dialogue
If IsNull(RepParDefaut) Or RepParDefaut = "" Then
RepParDefaut = CurrentDb.Name
PathStripPath (RepParDefaut)
.lpstrInitialDir = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Mid(RepParDefaut, 1, InStr(1, RepParDefaut, vbNullChar) - 1)))
Else
.lpstrInitialDir = RepParDefaut
End If
End With
If GetOpenFileName(StructFile) Then 'Si un fichier au moins est sélectionné
iStr = Split(StructFile.lpstrFile, Chr(0))
j = UBound(iStr)
For i = 0 To j
If Len(Trim(iStr(i))) <> 0 Then
Select Case TypeRetour
Case 1
ReDim Preserve iStr1(i)
iStr1(i) = iStr(i)
Case 2
If i <> 0 Then
ReDim Preserve iStr1(i - 1)
iStr1(i - 1) = iStr(i)
End If
End Select
Else
i = j
End If
Next
If UBound(iStr1) = 0 Then
ReDim Preserve iStr1(1)
iStr_Chemin = Left(iStr1(0), InStrRev(iStr1(0), "\"))
iStr1(1) = Right(iStr1(0), Len(iStr1(0)) - Len(iStr_Chemin))
iStr1(0) = iStr_Chemin
End If
Else
ReDim iStr1(1)
iStr1(0) = ""
iStr1(1) = ""
End If
OuvrirPlusieursFichiers = iStr1 |
Partager