Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MULTISELECT AVEC COMMONDIALOG


Information sur la source

Catégorie :Divers Niveau : Débutant Date de création : 08/01/2003 Date de mise à jour : 08/01/2003 23:46:08 Vu : 4 203

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

Description

Voici la façon que j'ai utilisée pour effectuer un multiselect avec un commondialog... Peut etre qu'il existe une façon plus simple mais je n'ai pas trouvé.
De plus celle-çi fonctionne très bien.
Si ça peut servir à quelqu'un...
 

Source

  • Dim Fichier() As String
  • Dim n As Integer
  • Private Sub Form_Load()
  • 'Initialisation du commondialog
  • CommonDialog1.Flags = &H200 Or &H80000 'Permet le multiselect (200)
  • 'et la boite de dialogue est de type explorateur (80000)
  • CommonDialog1.MaxFileSize = 32767 'Nombre de caractères maximum du multiselect (Valeur par défaut=256)
  • End Sub
  • Private Sub Command1_Click()
  • CommonDialog1.ShowOpen
  • If CommonDialog1.FileTitle = "" Then
  • iprecedent = 0
  • n = -1
  • For i = 1 To Len(CommonDialog1.FileName)
  • If Asc(Mid(CommonDialog1.FileName, i, 1)) = 0 Then
  • n = n + 1
  • ReDim Preserve Fichier(0 To n) As String
  • Fichier(n) = Mid(CommonDialog1.FileName, iprecedent + 1, i - iprecedent - 1)
  • iprecedent = i
  • End If
  • Next
  • n = n + 1
  • ReDim Preserve Fichier(0 To n) As String
  • Fichier(n) = Mid(CommonDialog1.FileName, iprecedent + 1, i - iprecedent - 1)
  • 'Placer ici le code a effectuer lors d'une sélection multiple
  • '[FileTitle du fichier n = Fichier(n)]
  • '[FileName du fichier n = Fichier(0) & "\" & Fichier(n)]
  • Else
  • 'Placer ici le code a effectuer lors d'une sélection simple
  • End If
  • End Sub
Dim Fichier() As String
Dim n As Integer

Private Sub Form_Load()
'Initialisation du commondialog
    CommonDialog1.Flags = &H200 Or &H80000      'Permet le multiselect (200)
                                                'et la boite de dialogue est de type explorateur (80000)
    CommonDialog1.MaxFileSize = 32767           'Nombre de caractères maximum du multiselect (Valeur par défaut=256)
End Sub

Private Sub Command1_Click()
    CommonDialog1.ShowOpen
    If CommonDialog1.FileTitle = "" Then
        iprecedent = 0
        n = -1
        For i = 1 To Len(CommonDialog1.FileName)
            If Asc(Mid(CommonDialog1.FileName, i, 1)) = 0 Then
                n = n + 1
                ReDim Preserve Fichier(0 To n) As String
                Fichier(n) = Mid(CommonDialog1.FileName, iprecedent + 1, i - iprecedent - 1)
                iprecedent = i
            End If
        Next
        n = n + 1
        ReDim Preserve Fichier(0 To n) As String
        Fichier(n) = Mid(CommonDialog1.FileName, iprecedent + 1, i - iprecedent - 1)
        
        'Placer ici le code a effectuer lors d'une sélection multiple
        '[FileTitle du fichier n = Fichier(n)]
        '[FileName du fichier n = Fichier(0) & "\" & Fichier(n)]
    
    Else
    
        'Placer ici le code a effectuer lors d'une sélection simple
        
    End If
End Sub

Commentaires et avis

signaler à un administrateur
Commentaire de Badclown le 09/01/2003 15:42:41

Je pense pas que il y est plus simple, mais tu aurais pu detailler toute les options de "Flags" car il y a pas mal de chose interressante :)

signaler à un administrateur
Commentaire de VicoLaChips2 le 09/01/2003 16:22:46

Salut !
Il y a + simple -:)
Private Sub Command1_Click()
    Dim sPathRacine As String, sFiles() As String
    CommonDialog1.ShowOpen
    sFiles = Split(CommonDialog1.FileName, vbNullChar)
    If UBound(sFiles) > 0 Then               'plusieurs fichiers
        
        sPathRacine = sFiles(0) & ""
        MsgBox sFiles(1)
    Else                                    'un seul fichier contenant
                                            'racine et nom...
        MsgBox sFiles(0)
    End If
End Sub
@+, VIC

signaler à un administrateur
Commentaire de LordBob le 09/01/2003 19:27:04

c pas trop compris l'interet de ta source... ou plutot ce kel fait...

signaler à un administrateur
Commentaire de DebvbJ le 14/01/2003 19:42:35

Ca peut-être utile pour un lecteur mp3 par exemple LordBob
Exemple : winamp permet le multi-select en ajout de fichier donc ça peut servir plutôt que d'ajouter un par un des fichiers (c'est juste un exemple)

signaler à un administrateur
Commentaire de Sphaxs le 15/01/2003 19:15:57

A vrai dire, c'est pour ça que je l'ai ecrit ce code (en réalité c'est pas un lecteur MP3 mais un lecteur utilisant windows media player (qui lit les MP3, les WAV, les MPEG, ...) mais je ne l'ai pas encore mis sur VBFrance (il reste quelques améliorations à apporter) mais s'il interresse quelqu'un, je peux le mettre... (notamment si ca interresse quelqu'un de le rendre plus "joli" car le graphisme ce n'est pas mon truc du tout ...)
A+
Sphaxs

signaler à un administrateur
Commentaire de noshelter le 16/06/2003 03:58:10

c'est juste le flags du multiselect qui m'intéressait, tu m'a rendu service, merci beaucoup.

signaler à un administrateur
Commentaire de noshelter le 16/06/2003 04:12:01

c'est juste le flags du multiselect qui m'intéressait, tu m'a rendu service, merci beaucoup.

signaler à un administrateur
Commentaire de nihaoma le 10/08/2005 18:38:53

une ch'tite question....quelqu'un sait s'il existe une boite de dialogue commune (ou bien un flag sur le .ShowSave) qui permet d'enregistrer plusieurs fichiers dans un meme répertoire ?...en fait, que l'utilisateur ne voit pas le champ 'Nom du fichier' et 'Type de fichier' mais qu'il puisse choisir le lecteur et le dossier comme dans le .ShowSave.
(en fait le pourais simplement créer une Form avec un Drive et un FileList et ca marcherait très bien, mais bon si y'a un truc déja fait, pourquoi réinventer la roue ? lol

merci pour vos réponses

signaler à un administrateur
Commentaire de pointbin le 11/10/2007 12:54:34 10/10

ça aide beaucoup le
'Initialisation du commondialog
    CommonDialog1.Flags = &H200 Or &H80000 'Permet le multiselect (200)
    'et la boite de dialogue est de type explorateur (80000)
    CommonDialog1.MaxFileSize = 32767
merci.

signaler à un administrateur
Commentaire de Renfield le 11/10/2007 14:03:02 administrateur CS

&h200 Or &h80000 ...
ou comment rendre du code obscur !

cdlOFNExplorer or cdlOFNAllowMultiselect   est plus lisible, non ?

signaler à un administrateur
Commentaire de pointbin le 11/10/2007 22:30:39

maintenent c'est plus claire, alors ce sont des variable predefini qui d'apres leurs nom donne une idée du fonctionnement.
pour le showSave est ce qu'il y a un moyen de sélectionner seulement le dossier ou je veux sauvegarder sans avoir a donner un nom de fichier.

signaler à un administrateur
Commentaire de Renfield le 12/10/2007 08:06:51 administrateur CS

utilises une autre boite de dialogue standard, pour selectionner un repertoire...

http://www.vbfrance.com/codes/SELECTION-DOSSIER-AVEC-BOUTON-NOUVEAU-DOSSIER_17270.aspx

signaler à un administrateur
Commentaire de Renfield le 12/10/2007 08:07:47 administrateur CS

plein d'autres flags existent pour le ShowSave / ShowOpen

cherches cdlofn dans l'explorateur d'objets de VB (touche F2)

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.