Commondialog, les limites

Forgefeu Messages postés 1 Date d'inscription vendredi 4 octobre 2002 Statut Membre Dernière intervention 7 octobre 2002 - 7 oct. 2002 à 09:35
cs_Buzleclair Messages postés 8 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 5 octobre 2005 - 30 sept. 2005 à 02:01
Bonjour, je suis un petit nouveau et je voudrais vous demandez vos lumière sur un problème que je rencontre actuellement avec de la programmation sous VB6.0
j'ai crée un bouton qui avec l'aide d'un commondialog me permet d'ouvrir une fenêtre de dialogue pour aller chercher des fichiers. pour le commondialogue au niveau de la propriété "flag" je lui ai adjoint des propriétés:
(mon code est ci-dessous)
____________________________________________________________________________________________________________________
With boite
.CancelError = True
.Flags = &H200 Or &H4 Or &H2 Or &H80000 'propiétés d'aspect de la fenêtre, avec possibilité de choix multiple soit l'élément &H200
'On Error GoTo ErrHandler
.Filter = "Fichiers Word (*.doc)|*.doc|Fichiers Works (*.wps)|*.wps|Fichiers Enrichis (*.rtf)|*.rtf|Tous les fichiers (*.*)|*.*" 'permet d'afficher différent choix dans le combo Type de la fenêtre ouvrir
.DialogTitle = "Ouvrir" 'donne un nom à la fenêtre
.FileName = "" 'evite que lors d'ouverture on ne concerve que le premier chemin
.ShowOpen 'permet de créer la fenêtre ouvrir
End With

' --------------------------------------------
' renvoie la taille du fichier, dans le label 2
'et determine sa taille en fonction de valeur de
' grandeur comme GO ou MO OU KO etc..
'---------------------------------------------
If FileLen(boite.FileName) > 1024 ^ 3 Then
Label2 = FormatNumber((FileLen(boite.FileName) / 1024 ^ 3), -1) & "Go"
Else
If FileLen(boite.FileName) > 1024 ^ 2 Then
Label2 = FormatNumber((FileLen(boite.FileName) / 1024 ^ 2), -1) & "Mo"
Else
If FileLen(boite.FileName) > 1024 Then
Label2 = FormatNumber((FileLen(boite.FileName) / 1024), -1) & "Ko"
Else
Label2 = FileLen(boite.FileName) & "Octets"
End If
End If
End If
Label1 = boite.FileTitle 'renvoie le nom du fichier selectionné dans le label avec procedure d'ouverture grâce au commdialog
_________________________________________________________________________________________________________________

Mon problème est que si je selectionne un seul fichier mes labels sont renseignés tant au niveau du nom de fichier que de la taille du fichier.
Ok, c'est cool, mais si je fais une selection multiple de fichier comme me le permet "&H200" du Flag, je n'ai ni le boms des fichiers, ni la taille des deux 2. Comment dois-je faire pour que je puisse avoir dans le label l'ensemble des noms des fichiers et la taille globale de ceux-ci, sachant que par la suite je veux pouvoir demander à mon prog d'ouvrir chaque ficchier et copuier son contenu dans une variable qui sera incrementé à chaque ouverture et lecture et donc copie des differents fichiers pour à la fin copier le tout dans un fichier texte
Merci d'avance pour vos reponses
Forgefeu

3 réponses

PatDeLaYaute Messages postés 133 Date d'inscription dimanche 28 avril 2002 Statut Membre Dernière intervention 15 janvier 2009 3
7 oct. 2002 à 11:13
Salut,
je suis pas sûr de ce que je vais dire,
mais lorsque l'ont sélectionnent plusieurs fichiers dans un commondialog la propriété filename renvoie un valeur avec tous les nom de fichiers.

Je pense que tu devrais faire une boucle.
Extraire chaque nom de fichier puis déterminer la taille et l'additionnée à une variable somme.

Voilà
@+
0
NanouZozo Messages postés 11 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 11 juin 2003
2 juin 2003 à 16:49
Salut,
J'aimerai de meme executer une boite de dialogue permettant de choisir un fichier.
Comment déclare t-on la boite de dialogue?
Merci bcp
Nanou
0
cs_Buzleclair Messages postés 8 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 5 octobre 2005
30 sept. 2005 à 02:01
En sélection multiple, la boite de dialogue ouvrir revoie une chaine contenant
tous les fichiers sélectionnées mais sous une "forme" particulière.. En effet entre
chaque fichiers, un caractere null est placé chr(0).
Il faut donc formater la chaine de retour pour retrouver ses petits (commondialog.filename)

Exemple pour traiter la chaine en retour :

Dim MesFichiers() As String
Dim i as integer

MesFichiers= Split(CommonDialog.filename, Chr(0))


If UBound(fichiers()) > 1 Then 'il y a plusieurs fichiers..
'Dans MesFichiers(0) tu devrais avoir le répertoire source donc,
'pour retrouver ta sélection :
For i = 1 To UBound(MesFichiers())
MsgBox MesFichiers(0) & "" & MesFichiers(i)
Next i
Else
'Traitement classique puisqu'il n'y a qu'un fichier...
End If

Et là normalement c'est ok ...
Tchô
0
Rejoignez-nous