Déplacer , renommer et utilisez une combo box

Résolu
NarqoArts Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 25 avril 2016 - 18 avril 2016 à 16:12
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 - 19 avril 2016 à 16:11
Bonjour,
J'espère que vous allez bien alors déjà je suis tout nouveau sur ce forum, j'ai hâte de pouvoir faire votre connaissance et aider sur certains sujets.

Je vais vous expliquer mon projet puis mon problème .

Alors ce que je dois faire c'est récupérer à l'aide d'un OpenFileDialog un fichier, le déplacer dans un dossier. Enfin le renommer à l'aide d'une liste éléments contenue dans une Combo Box (ou autre , si y'a d'autre idée je suis preneur).


Mon problème est le suivant. Je suis pas tellement bon en VB.net... Donc toute la partie design je l'ai réaliser, le bouton Parcourir aussi , ainsi que je sais comment renommer un fichier mais pas à l'aide d'une liste d'élément ... Je ne sais pas déplacer un fichier non plus ...

Je vous montre un peu à quoi sa ressemble :



Ici comme vous pouvez le voir il y a deux listes déroulantes... Cependant si pouvoir choisir un élément soit de l'une soit de l'autre est trop compliqué à réaliser je peux en faire une super grande sa me dérange pas :p

Mon code pour cette page est le suivant ( rien de spécial réaliser à l'heure actuelle ) :


Private Sub OriginButton1_Click(sender As Object, e As EventArgs) Handles OriginButton1.Click

Dim file As String
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
For Each file In OpenFileDialog1.FileNames
ListBox1.Items.Add(file)
Next
End If


End Sub


Private Sub OriginButton2_Click(sender As Object, e As EventArgs) Handles OriginButton2.Click
For Each files As String In ListBox1.Items
'FileIO.SearchOption.SearchTopLevelOnly cherche uniquement dans ce dossier en excluant les sous-dossiers
Dim Fi As New System.IO.FileInfo(files) ' Instanciation du fichier trouvé
My.Computer.FileSystem.RenameFile(files, "TEST") ' Renomme le fichier
' files contient le chemin d'accès du fichier à renommer
' Fi.Name contient le nom du fichier (par exemple, C:\test.jpeg >>> Fi.Name retourne test.jpeg)
Next
End Sub


Bouton 1 : Parcourir...
Bouton 2 : Renommer

Merci de votre lecture :)

12 réponses

NarqoArts Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 25 avril 2016
18 avril 2016 à 16:14
EDIT : Mon idée de dévelopement et ma façon de procéder n'est pas fixe , si vous avez des solutions plus simples ou autre proposez moi je suis preneur :)

PS : Désolé de faire un EDIT après mon poste , j'avais tellement de chose à écrire j'ai totalement zappé :/
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
19 avril 2016 à 08:03
Bonjour

pour la manipulation de base des fichiers la classe File contient la plupart des actions de bases:
https://msdn.microsoft.com/fr-fr/library/system.io.file(v=vs.110).aspx

Je te conseille de regarder sa méthode Move, qui permet de déplacer et/ou renommer un fichier.

Plutôt que d'écrire

System.IO.FileInfo...
System.IO.File....

Tu mets Imports System.IO tout en haut de ta classe et tu accèdes directement à File, FileInfo etc...

Quand à renommer en fonction de tes combobox, il faudra être plus précis, qu'est ce qui est contenu dans tes combobox et quel effet cela à sur le fichier.
Ne mets que 3 ou 4 exemples....
0
NarqoArts Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 25 avril 2016
19 avril 2016 à 08:31
Hey , merci pour la classe File je vais me renseigner,
Voici un exemple :
Tout d'abord on sélectionne un fichier avec le bouton "parcourir..."


Ensuite on selectionne parmis la liste d'élément ( je vais en mettre qu'une seul ) un nom comme l'exemple si dessous :



La dans mon exemple, j'ai selectionné "_Local_Repartiteur_Alarmes_Wago"
et j'aimerais bien que mon fichier sapelle :
"DOE_Local_Repartiteur_Alarmes_Wago" et que si il en existe déjà un , créer une variable qui s'incrémente de 1 à chaque fois qui sera comme ça :

"DOE_Local_Repartiteur_Alarmes_Wago_2"
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
19 avril 2016 à 08:35
Pas la peine d'écrire en gras ça donne l'impression de se faire crier dessus
0

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

Posez votre question
NarqoArts Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 25 avril 2016
19 avril 2016 à 08:40
Désolé j'essayais de rendre sa plus lisible autant pour moi :)
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
19 avril 2016 à 08:55
Donc ton besoin est juste de concatener DOE avec le texte de chaque combo?

tu peux faire ça:
         Dim nouveauNom As String = "DOE" + ComboBox1.Text + ComboBox2.Text
 


Pour savoir si un fichier porte déjà ce nom, il faut utiliser la classe Directory et sa méthode GetFiles
Directory.GetFiles("C:")
cet exemple retourne tous les fichiers dans C:
Cette méthode retourne le chemin complet des fichiers, on peut utiliser la classe Path pour en extraire juste le nom de fichier sans l'extension.

Quand on en est là, on peut regarder s'il y a des fichiers dont le nom commence par NouveauNom est si oui, si la suite est un nombre est si oui, trouver le dernier nombre et enfin l'incrémenter...

Pour faire tout ca tu peux faire des boucles successives, ça va marcher.

On peut aussi remplacer l'utilisation du Path, du StartWith et la recherche de nombre par une Regex bien pensée, tout ça dans une requête Linq.

Comme tu es débutant, je te laisse d'abord un peu chercher la première option et ensuite je te montrerai la seconde.
0
NarqoArts Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 25 avril 2016
19 avril 2016 à 09:26
Merci pour toute tes explications ! :)
Moi j'ai pensé (en tant que nul ) a utilisé la méthode SelectedItem de la ComboBox et sa a l'air de marcher.
Le seul petit problème c'est que j'ai essayé de faire pareil avec la listbox mais sa marche pas :p ( enfin il faut cliquer dessus et moi je veux récupérer le fichier dans ma listbox sans pour autant cliquer dessus :)

J'ai juste un autre petit problème qui n'est pas de l'ordre de mes connaissance ( pour l'instant ) mais en gros j'ai un formulaire avant celui ci qui récupère le chemin de destination, mais j'arrive pas à retourner la valeur de cette variable...

J'ai fais toutes mes fonctions sur un même fichier de type Class...

Je vous met les fonctions que j'ai fais pour parvenir à ceci :

Public Shared Sub begindoe()

If (String.IsNullOrEmpty(Form2.TextBox1.Text) Or String.IsNullOrEmpty(Form2.TextBox2.Text) Or String.IsNullOrEmpty(Form2.TextBox3.Text)) Then
MsgBox("Remplisser toute les cases pour pouvoir poursuivre la création du DOE", vbCritical)
Else
Dim nomcodefolder As String = Form2.TextBox1.Text
Dim nomdoc As String = "DOE_" + Form2.TextBox1.Text + "_" + Form2.TextBox2.Text
Dim nomcodefile As String = Form2.TextBox3.Text
My.Computer.FileSystem.CreateDirectory("C:\test\" + nomdoc)
MsgBox("Vérification des données entrées :" & vbNewLine & vbNewLine & "Code du dossier : " + nomcodefolder & vbNewLine & "Code des fichiers : " + nomcodefile & vbNewLine & "Nom du DOE : " + nomdoc, vbInformation, "Récapitulatif")
Form3.Show()
Form2.Close()
End If

End Sub

Public Shared Sub deplacer()

Dim namepath As String = "DOE_" + Form2.TextBox1.Text + "_" + Form2.TextBox2.Text
Dim equipname As String = Form3.ComboBox1.SelectedItem
Dim FileToMove As String = Form3.ListBox1.SelectedItem
Dim MoveLocation As String = "C:\test\" + namepath


If System.IO.File.Exists(FileToMove) = True Then
System.IO.File.Move(FileToMove, MoveLocation)
MessageBox.Show("fichier déplacer vers" + MoveLocation)
End If
End Sub


Voilà j'ai essayer de déclarer les variables en haut du fichier pour faire comme en java et les rendre de manière global mais sa fonctionne pas non plus ...
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
19 avril 2016 à 09:45
Une chose à la fois tu veux bien?

La listebox et le passage d'un paramètre récupéré ailleurs c'est un autre problème.

Tu as commencé par la fin, tant pis, soit on règle la fin avec des valeurs en dur dans le code, soit on reprend par le début, dans d'autres sujets: un par question.

Par ailleurs, si tu connais le java, je te déconseille de faire du VB.Net.

Fais plutôt du C#, la syntaxe est plus proche et en plus c'est LE langage .Net, tous les autres ne sont que des "skins".

Choisi ce que tu veux faire.
0
NarqoArts Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 25 avril 2016
19 avril 2016 à 09:49
Le soucis c'est que je connais un peu le VB.net alors que le C# je m'y suis jamais penché dessus ...
J'aimerais poursuivre sur cette lancer comme ça j'aurais un résultat déjà.
En gros en ce moment tout fonctionne sauf la récupération de ma variable ...
0
NarqoArts Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 25 avril 2016
19 avril 2016 à 10:05
De plus cette partie représente 30% du programme que je suis en train de concevoir et les 70% je l'ai est déjà réalisés.
Éventuellement si il y a aucune solution je peux me tourner vers le C# mais bon si je peux éviter j'en serais heureux :D
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
19 avril 2016 à 12:36
Il y a des convertisseurs en ligne, à priori celui fait les projets entier, je ne l'ai jamais essayé
http://www.developerfusion.com/tools/convert/bulk/
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
19 avril 2016 à 12:38
OK, mais comment on traite tes soucis?
On répond à ta question initiale d'abord?
Ou tu ouvres, une part une, dans un ordre logique, tes questions, jusqu'à revenir ici?
0
NarqoArts Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 25 avril 2016
19 avril 2016 à 14:47
Re,
Beh nous pouvons le faire ici et au fur et à mesure je pose mes questions :)

La première question je pense que tu t'en doute... C'est celle que j'ai poster tout à l'heure concernant les variable/constructeurs.
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
19 avril 2016 à 16:11
Non ça c'est contraire à la charte et multi sujet = bordel
0
Rejoignez-nous