Récupérer la liste de plusieurs fichiers sélectionner à partir d'une boite de dialogue de style windows 95 dans une liste box. (les noms e fichiers sont en mode DOS 8 caractères)
Source / Exemple :
' cdlOFNAllowMultiselect : multi-sélection
' cdlOFNNoLongNames :Afficher les noms de fichiers longs en mode DOS
cdl.Flags = cdlOFNAllowMultiselect Or cdlOFNNoLongNames
cdl.Filter = "*.*"
cdl.FileName = "*.*"
cdl.Action = 1
List1.Clear ' effacer la liste
result = Trim(cdl.FileName) 'extrait le resultat de la boite de dialogue
j = 1
testchemin = 0
chemin = "" 'variable pour le chemin
For i = 1 To Len(result)
Debug.Print Mid(result, i, 1)
If Mid(result, i, 1) = Chr$(32) Or i = Len(result) - 1 Then
If testchemin = 0 Then ' extraire la première partie du résultat (le chemin)
chemin = Trim(Mid(result, j, i))
testchemin = 1
j = i + 1
Else ' extraire la partie suivante du résultat (le fichier) et lui ajouter le chemin au début
List1.AddItem chemin + Mid(result, j, i - j)
j = i + 1
End If
End If
Next
' tester si la liste est vide alors c'est que le résultat contient seulement un fichier séléctionné
If List1.ListCount = 0 Then List1.AddItem Trim(cdl.FileName)
Conclusion :
Pour sélectionner plusieurs fichiers avec common dialog il faut que l'on précise au contrôle comdlg par cette ligne :
cdl.Flags = cdlOFNAllowMultiselect Or cdlOFNNoLongNames
cdlOFNNoLongNames : extrait les noms en mode 8 caractères et non au format windows
cdlOFNAllowMultiselect : permettre la multisélection
seulement le résultat affiche comme suit :
c:\winnt\ fichier1.ext fichier2.ext fichier3.ext
la première partie c'est le chemin ensuite les autres parties sont les noms de fichiers séparer par des espaces.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.