Besoin AIDE pour listbox en VB ??

Fermé
Hunzimmer Messages postés 63 Date d'inscription vendredi 18 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 - 23 juin 2010 à 08:34
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 - 24 juin 2010 à 16:24
Bonjour,

donc voila sa fait 3 jours que je suis dessus , j'arrive pas a trouver
je suis sur visual basic 2008

Enfaite j'ai un bouton parcourir , et tout les fichiers que je parcours se mettent dans une listbox .
et ces fichiers je dois les envoyer sur d'autres pc en local
et dans ma fonction FileCopy , il faut donc que je fasse varier mon chemin source selon le fichier a envoyer
mon maitre de stage veut que tout les fichiers s'envoient en 1 fois donc il faut que je fasse une boucle qui me permet de mettre le chemin du 1e fichier de la liste en chemin source et l'envoyer , le 2e .. etc etc
mais je sais vraiment pas , je suis bloquer

Merci



A voir également:

6 réponses

commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
23 juin 2010 à 08:45
Bonjour,

Il parait logique qu'il faut faire une boucle qui envoi les fichiers un par un jusqu'au dernier. La boucle doit se faire sur les éléments de la liste ( = 0 to ListBox1.Items.Count -1).
Si tu mets le code qui te permet de copier un seul fichier on pourra essayer ensemble de trouver une solution pour envoyer tous les fichiers au même temps.

Salutations!
0
Hunzimmer Messages postés 63 Date d'inscription vendredi 18 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 1
23 juin 2010 à 08:48
Voila mon code qui me permet de copier

'chemin d'origine des fichiers
Dim sourceDir As String = "C:\Documents and Settings\Mes documents\test"
'chemin où sont copier les fichiers
Dim backupDir As String = "\\Poste1\ia"

Try

Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

For Each f As String In txtList
Dim fName As String = f.Substring(sourceDir.Length + 1)
Try
File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))
MsgBox("Votre fichier s'est correctement envoyé ! ")


Catch copyError As IOException
MessageBox.Show("Erreur pour la copie des fichiers ! " & copyError.Message)

End Try
Next

Catch dirNotFound As DirectoryNotFoundException
MessageBox.Show(" Erreur de copie ! " & dirNotFound.Message)
End Try
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
23 juin 2010 à 09:07
Bonjour,

Dans le code que tu utilises, on ne dispose que d'une seule information sur le dossier source. Or, les fichiers peuvent parvenir de plusieurs dossiers. Il est indispensable d'avoir une liste comportant tous les chemins des répertoires concernés.
Il est possible dans ce cas d'utiliser une liste

Dim sourceDirs as String() ' = Liste des chemins concernés
For Each sourceDir as String In sourceDirs
   .... ' Le code que tu met pour un seul chemin (que tu as présenté ci-haut )
Next

Avec sourceDirs une liste que tu dois avoir informé au préalable.
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
23 juin 2010 à 09:09
Je ne sais pas si c'est possible à l'utilisateur de connaitre au préalable les chemins à copier au réseau local.
0
Hunzimmer Messages postés 63 Date d'inscription vendredi 18 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 1
23 juin 2010 à 09:10
je comprend pas trop l'histoire de la liste des chemin concerné :/
0
Hunzimmer Messages postés 63 Date d'inscription vendredi 18 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 1
23 juin 2010 à 09:12
je viens d'en parler avec mon maitre de stage et oui mes chemins sont connu d'avance
0
Hunzimmer Messages postés 63 Date d'inscription vendredi 18 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 1
23 juin 2010 à 09:15
les fichiers quil faudra copier seront toujours au meme endroit
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
23 juin 2010 à 09:26
On peut écrire le code de cette manière :

'chemin d'origine des fichiers
Dim sourceDirS As String( [Nombre de chemins concernés] )
'chemin où sont copier les fichiers
Dim backupDir As String = "\\Poste1\ia"

'information des chemins concernés
sourceDirS(0) = "chemin1"
sourceDirS(1) = "chemin2"
...
sourceDirS( [Nombre de chemins concernés] -1) = "chemin [Nombre de chemins concernés]"

Try

For Each sourceDir As String In sourceDirs

    Try

    Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

    For Each f As String In txtList
        Dim fName As String = f.Substring(sourceDir.Length + 1)
        Try
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))
        MsgBox("Votre fichier s'est correctement envoyé ! ")
    
        Catch copyError As IOException
        MessageBox.Show("Erreur pour la copie des fichiers ! " & copyError.Message)
    
        End Try

    Next
    
    Catch dirNotFound As DirectoryNotFoundException
    MessageBox.Show(" Erreur de copie ! " & dirNotFound.Message)
    End Try

End Try


0
Hunzimmer Messages postés 63 Date d'inscription vendredi 18 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 1
23 juin 2010 à 09:34
et comment le programme saura que le 1e fichier de la liste correspond a tel ou tel chemin ??
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
Modifié par commentcamarcheeay le 23/06/2010 à 10:13
Directory.GetFiles(sourceDir, "*.txt") remplit la liste avec tous les fichiers "*.txt" qui se trouvent dans le dossier indiqué.
Le code qu'on a mis permet de copier tous les fichiers contenus dans la liste des répertoires.
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
Modifié par commentcamarcheeay le 23/06/2010 à 10:14
Si on a envie de sélectionner un nombre restreint de fichier, il faut le préciser dans les conditions.
Ce qui est possible de faire si on ne veut pas copier tous les fichiers, c'est de créer deux liste parallèles, une qui contient le nom du fichier, et l'autre le chemin où il se trouve.
Tout dépend de la manière avec laquelle les fichiers sont 'parcourus'.
0
Hunzimmer Messages postés 63 Date d'inscription vendredi 18 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 1
23 juin 2010 à 10:19
pk dans mon code il me dit que sourceDirS n'est pas declarer?
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
23 juin 2010 à 10:21
Pour qu'on encadre mieux la problématique, peux tu décrire clairement ce que tu veux que l'algorithme fasse. Répondre surtout aux questions suivantes :
- Sur quel critère les fichiers sont-ils sélectionnés.
- Comment ces fichiers sont-ils sélectionnés (pour savoir comment la liste des fichiers est remplie)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
23 juin 2010 à 10:58
Suite à ta dernière réplique, je peux te proposer de travailler directement avec la liste que l'utilisateur remplit au fur et à mesure.
Supposons que cette liste soit nommée ListBox1 :

'chemin d'origine des fichiers
Dim sourceList As String(ListBox1.ListCount)
'En sachant que la ListBox1 contient tous les fichiers avec leur chemins complets

'chemin où sont copier les fichiers
Dim backupDir As String = "\\Poste1\ia"

Try
	' On copie le contenu de la ListBox dans un tableau
	' On aurait pu travailler directement avec la ListBox, mais celà fait plus propre
	dim i as integer
	For i = 0 to ListBox1.ListCount - 1
		sourceList(LBound(sourceList) + i) = ListBox1(i)
	Next i
End Try

Try
	For Each f As String In sourceDirs
		'Dim fName As String = f.Substring(sourceDir.Length + 1)
		Try
			File.Copy(f, Path.Combine(backupDir, Path.GetFileName(f)))
			MsgBox("Votre fichier s'est correctement envoyé ! ")

		Catch copyError As IOException
			MessageBox.Show("Erreur pour la copie des fichiers ! " & copyError.Message)

		End Try
	Next f

	Catch dirNotFound As DirectoryNotFoundException
	MessageBox.Show(" Erreur de copie ! " & dirNotFound.Message)
	End Try
End Try



J'espère que j'ai bien compris ce qui est demandé!
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
23 juin 2010 à 11:00
Fais quand même attention à la syntaxe de quelques contrôles tels que la liste box car j'utilise une version de VB antérieure à celle que tu utilises.
0
Hunzimmer Messages postés 63 Date d'inscription vendredi 18 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 1
23 juin 2010 à 11:03
oui tu a bien compris ce que je dois faire =)

par contre j'ai mi le code dans mon prog mais il me souligne tjrs " sourceList" en me disant quil n'est pas déclaré .
comment sa se fait ? alors qu'il ya bien " Dim sourceList As String(ListBox1.ListCount) "
0
Hunzimmer Messages postés 63 Date d'inscription vendredi 18 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 1
23 juin 2010 à 11:30
bon j'ai resolu cette erreur

cependant , j'en est d'autre :/

sourceList(LBound(sourceList) + i) = LB_ListeFichier(i)
il me souligne ce que je tes souligné et me dit comme erreur " une valeur de type string ne peut pas etre converti en system.array"
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
23 juin 2010 à 11:55
Cette syntaxe doit être relative aux version antérieures du VB.
Ce que je voulais faire c'est copier l'objet ListBox dans la tableau sourceList()
LBound(sourceList ) est sensée donner l'index de la toute première case (généralement égal à 0). Il faut trouver l'équivalent de LBound dans VB 9.
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
23 juin 2010 à 12:06
Dim sourceList As String(ListBox1.ListCount)
sourceList est bien un tableau de String (de type String()) dont le nombre de cases est égale au nombre d'élément dans la ListBox1. Je ne vois pas pourquoi il la considère comme une String.
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
23 juin 2010 à 16:30
Voici une application écrite en VB qui répond à la problématique contenant :
- Les fichiers du code
- Un exécutable

Pour télécharger
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
23 juin 2010 à 16:35
Tu dois trouver la présentation un peu vielle et barbare. Tel est le vieux VB6.
Je ne pense pas que tu trouvera des difficultés à comprendre le code, il est simple. Il faut tout simplement trouver son équivalent en .net
0
Hunzimmer Messages postés 63 Date d'inscription vendredi 18 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 1
24 juin 2010 à 08:35
salut
je suis en train de regarder ce que tu ma passer
c'est assez compliquer quand meme , surtout que je ne connais pas le moindre truc en vb6 Lol
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
24 juin 2010 à 09:00
J'ai trouvé une conversation concernant la transformation du code vb en vb.net
0
Hunzimmer Messages postés 63 Date d'inscription vendredi 18 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 1
24 juin 2010 à 09:07
ué j'avais vu sa sur le forum
mais jvois pas comment l'ouvrir en Vb.net comme ils disent

si je comprend la ce que tu ma envoyé le form1 je les ouvert avec visual basic 2008
donc la c'est bon c'est converti alors ?
0
commentcamarcheeay Messages postés 666 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
24 juin 2010 à 16:24
S'il a eu la gentillesse de bien vouloir s'exécuter en l'ouvrant avec vb.net alors il a bien été converti. En fait, les syntaxes des deux langages n'est pas éloignée. Il est possible, si on comprends un, de comprendre l'autre.
0