Imports System.IO Imports System Imports System.Net Imports System.Windows Imports System.Collections Imports System.Object Imports System.MarshalByRefObject Imports System.Windows.Forms.TreeNode Public Class Form1 Const Source As String = "C:\Documents and Settings\Propriétaire\Mes documents\Mes images\Chambre" Const Destination As String = "C:\Documents and Settings\Propriétaire\Mes documents\Mes images\Nouveau dossier" Dim nomfichier As String Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '-------------------------------------------------------------------------------------------------------- '------------------------------ TRAITEMENT TREEVIEW POUR LE COTE SERVEUR -------------------------------- '-------------------------------------------------------------------------------------------------------- 'Définit le premier noeud Me.tView_Serveur.TopNode = Me.tView_Serveur.Nodes.Add(Source, Source) 'Arborescence du premier noeud For Each Dossier As String In Directory.GetDirectories(Source) Me.tView_Serveur.TopNode.Nodes.Add(Dossier, Path.GetFileName(Dossier)) 'Récursif ListeArborescenceDossier(Dossier, Me.tView_Serveur.TopNode) Next 'Fichiers du premier noeud For Each Fichier As String In Directory.GetFiles(Source) Me.tView_Serveur.TopNode.Nodes.Add(Path.GetFileName(Fichier)) Next '-------------------------------------------------------------------------------------------------------- '--------------------------- TRAITEMENT TREEVIEW POUR LE COTE DOSSIER TEMPORAIRE ------------------------ '-------------------------------------------------------------------------------------------------------- reset() 'on affiche la treeview destination End Sub Sub ListeArborescenceDossier(ByVal DossierActuel As String, ByVal NodeActuel As TreeNode) 'Recupère le node dans lequel on est Dim Node As TreeNode = NodeActuel.Nodes(DossierActuel) 'Répertoires de ce noeud For Each Dossier As String In Directory.GetDirectories(DossierActuel) Node.Nodes.Add(Dossier, Path.GetFileName(Dossier)) 'Récursive ListeArborescenceDossier(Dossier, Node) Next 'Fichiers de ce noeud For Each Fichier As String In Directory.GetFiles(DossierActuel) Node.Nodes.Add(Path.GetFileName(Fichier)) Next End Sub Private Sub tView_Serveur_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tView_Serveur.AfterSelect nomfichier = tView_Serveur.SelectedNode.ToString nomfichier = nomfichier.Replace("TreeNode: ", "") 'supprime TreeNode: End Sub 'on copie Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try If File.Exists(Destination & nomfichier) Then MessageBox.Show("Un fichier du même nom existe déjà!", "Copie fichier") Exit Sub Else FileCopy(Source & nomfichier, Destination & nomfichier) MessageBox.Show("Copie éffectuée", "Copie fichier") reset()'on réinitialise la treeview End If Catch erreur As Exception MessageBox.Show("Copie échouée. " & erreur.GetBaseException.Message) End Try End Sub ' TRAITEMENT TREEVIEW POUR LE COTE DOSSIER TEMPORAIRE Private Sub reset() 'on réinitialise la treeview à chaque copie Me.tView_Temporaire.Nodes.Clear() 'Définit le premier noeud Me.tView_Temporaire.TopNode = Me.tView_Temporaire.Nodes.Add(Destination, Destination) 'Arborescence du premier noeud For Each Dossier As String In Directory.GetDirectories(Destination) Me.tView_Temporaire.TopNode.Nodes.Add(Dossier, Path.GetFileName(Dossier)) 'Récursif ListeArborescenceDossier(Dossier, Me.tView_Temporaire.TopNode) Next 'Fichiers du premier noeud For Each Fichier As String In Directory.GetFiles(Destination) Me.tView_Temporaire.TopNode.Nodes.Add(Path.GetFileName(Fichier)) Next End Sub End Class
Private Sub tView_Serveur_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tView_Serveur.AfterSelect nomfichier = tView_Serveur.SelectedNode.ToString nomfichier = nomfichier.Replace("TreeNode: ", "") 'supprime TreeNode: Try If File.Exists(Destination & nomfichier) Then MessageBox.Show("Un fichier du même nom existe déjà!", "Copie fichier") Exit Sub Else FileCopy(Source & nomfichier, Destination & nomfichier) MessageBox.Show("Copie éffectuée", "Copie fichier") reset() End If Catch erreur As Exception MessageBox.Show("Copie échouée. " & erreur.GetBaseException.Message) End Try End Sub
Private Sub tView_Serveur_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tView_Serveur.AfterSelect cheminfichier = tView_Serveur.SelectedNode.FullPath nomfichier = Mid(cheminfichier, InStrRev(cheminfichier, "") + 1) 'on extrait le dernier nom de la chaine Try If File.Exists(Destination & nomfichier) Then MessageBox.Show("Un fichier du même nom existe déjà!", "Copie fichier") Exit Sub Else FileCopy(cheminfichier, Destination & nomfichier) MessageBox.Show("Copie éffectuée", "Copie fichier") reset() End If Catch erreur As Exception MessageBox.Show("Copie échouée. " & erreur.GetBaseException.Message) End Try End Sub
Private Sub ouvrir_serveur() 'boite dialogue de choix dossier source Dim opendir As New FolderBrowserDialog With opendir .ShowNewFolderButton = False If .ShowDialog = Windows.Forms.DialogResult.OK Then Source = "" & .SelectedPath & "" Else MessageBox.Show("Opération annulée par l'utilisateur!", "Ouverture dossier", MessageBoxButtons.OK, MessageBoxIcon.Information) Exit Sub End If .Dispose() End With End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ouvrir_serveur() '-------------------------------------------------------------------------------------------------------- '------------------------------ TRAITEMENT TREEVIEW POUR LE COTE SERVEUR -------------------------------- '--------------------------------------------------------------------------------------------------------
cheminfichier = tView_Serveur.SelectedNode.FullPath MsgBox(cheminfichier) nomfichier = Mid(cheminfichier, InStrRev(cheminfichier, "") + 1) 'on extrait le dernier nom de la chaine MsgBox(nomfichier)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect MsgBox(e.Node.FullPath) End Sub
Imports System.IO Imports System Imports System.Net Imports System.Windows Imports System.Collections Imports System.Object Imports System.MarshalByRefObject Imports System.Windows.Forms.TreeNode Public Class Form_Principale Const Source As String = "Z:\tech\! Softhèque\! PackSofts" Const Destination As String = "C:\WINDOWS\Temp" Private Sub Form_Principale_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '-------------------------------------------------------------------------------------------------------- '------------------------------ TRAITEMENT TREEVIEW POUR LE COTE SERVEUR -------------------------------- '-------------------------------------------------------------------------------------------------------- 'Définit le premier noeud Me.tView_Serveur.TopNode = Me.tView_Serveur.Nodes.Add(Source, Source) 'Arborescence du premier noeud For Each Dossier As String In Directory.GetDirectories(Source) Me.tView_Serveur.TopNode.Nodes.Add(Dossier, Path.GetFileName(Dossier)) 'Récursif ListeArborescenceDossier(Dossier, Me.tView_Serveur.TopNode) Next 'Fichiers du premier noeud For Each Fichier As String In Directory.GetFiles(Source) Me.tView_Serveur.TopNode.Nodes.Add(Path.GetFileName(Fichier)) Next '-------------------------------------------------------------------------------------------------------- '--------------------------- TRAITEMENT TREEVIEW POUR LE COTE DOSSIER TEMPORAIRE ------------------------ '-------------------------------------------------------------------------------------------------------- 'Définit le premier noeud Me.tView_Temporaire.TopNode = Me.tView_Temporaire.Nodes.Add(Destination, Destination) 'Arborescence du premier noeud For Each Dossier As String In Directory.GetDirectories(Destination) Me.tView_Temporaire.TopNode.Nodes.Add(Dossier, Path.GetFileName(Dossier)) 'Récursif ListeArborescenceDossier(Dossier, Me.tView_Temporaire.TopNode) Next 'Fichiers du premier noeud For Each Fichier As String In Directory.GetFiles(Destination) Me.tView_Temporaire.TopNode.Nodes.Add(Path.GetFileName(Fichier)) Next '-------------------------------------------------------------------------------------------------------- '----------------------------------- TRAITEMENT FICHIERS .EXE ET .MSI ----------------------------------- '-------------------------------------------------------------------------------------------------------- ' /!\ Partie modifié /!\ Try Dim node As TreeNode node.SelectAction = TreeNodeSelectAction.Select If File.Exists("Fichier .exe") Then tView_Serveur.SelectedNode.Text CopierFichier() End If Catch erreur As Exception MessageBox.Show("Copie échoué. " & erreur.GetBaseException.Message) End Try End Sub 'Private Sub btn_ClickAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_ClickAdd.Click 'Dim Node As System.Windows.Forms.TreeNode ' Try ' If File.Exists("Fichier .exe") Then ' For Each Node In tView_Serveur.SelectedNode ' FileCopy(Node."Z:\tech\! Softhèque\! PackSofts", "%system root%\temp") ' Next ' End If ' Catch erreur As Exception ' MessageBox.Show("Copie échoué. " & erreur.GetBaseException.Message) ' End Try 'End Sub Sub ListeArborescenceDossier(ByVal DossierActuel As String, ByVal NodeActuel As TreeNode) 'Recupère le node dans lequel on est Dim Node As TreeNode = NodeActuel.Nodes(DossierActuel) 'Répertoires de ce noeud For Each Dossier As String In Directory.GetDirectories(DossierActuel) Node.Nodes.Add(Dossier, Path.GetFileName(Dossier)) 'Récursive ListeArborescenceDossier(Dossier, Node) Next 'Fichiers de ce noeud For Each Fichier As String In Directory.GetFiles(DossierActuel) Node.Nodes.Add(Path.GetFileName(Fichier)) Next End Sub Sub CopierFichier() Dim Node As System.Windows.Forms.TreeNode FileCopy(Node."Z:\tech\! Softhèque\! PackSofts", "%system root%\temp") End Sub End Class
* Quand tu ouvres le programme, tu tombes directement sur l'interface avec mes 2 Treeviews:
- Le Treeview (tView_Serveur) qui pointera directement sur un dossier du serveur dans
lequel il y aura des
fichiers .exe et .msi.
- Et le Treeview (tView_Temporaire) qui pointera directement sur le dossier temporaire du
Pc (%system root%\temp), dans lequel je vais vouloir copier les fichiers .exe au choix.
* Et là, on oublis les boutons Add et Remove!
* Lorsque que clique sur un fichier, on vérifie qu'il existe bien (File.Exists) avant même qu'il déclenche un évènement.
- Si Oui: On déclenche un évènement.
- Sinon : Message d'Erreur.
* Si le fichier existe, alors on déclenche l'évènement (SelectAction je crois):
- On copie le fichier sélectionné du dossier serveur au dossier temporaire (FileCopy (Path source, Path destination).
* Puis une fois tous les fichiers copiés, je clique sur un bouton "Installé" pour une installe automatique des .exe (mais ça c'est une autre histoire).
Try Dim node As TreeNode node.SelectAction = TreeNodeSelectAction.Select If File.Exists("Fichier .exe") Then tView_Serveur.SelectedNode.Text CopierFichier() End If Catch erreur As Exception MessageBox.Show("Copie échoué. " & erreur.GetBaseException.Message) End Try
Dim node As TreeNodealors?
nomfichier = nomfichier.Replace("TreeNode: ", "")
nomfichier.Replaceparce qu'on a pas le droit d'attribuer le même nom à la source et à la destination? C'est bien ça?
("TreeNode: ", "") 'supprime TreeNode:dans
nomfichier = nomfichier.Replace("TreeNode: ", "") 'supprime TreeNode:
MonString = MonString.Replace("test", "test2")
MsgBox(tView_Serveur.SelectedNode.ToString)
Tu obtiens : TreeNode: nom du fichier.
Donc pour avoir le nom seul du fichier tu utilises Replace pour éliminer TreeNode:
Car pour le chemin de destination il te faut le nom du fichier.
Comme je te l'ai fait cela fonctionne correctementJ'en ai aucun doute et d'ailleurs tout fonctionne. J'espère qu'un jour ça sera moi qui serait en mesure d'aider les autres!
Const Source As String = "Z:\web\TEST_PROGRAMME\TEST_CONNEXION" Const Destination As String = "Z:\web\TEST_PROGRAMME\TEST_RECEPTION" Dim nomfichier As String Dim cheminfichier As String
cheminfichier = tView_Serveur.SelectedNode.FullPath nomfichier = Mid(cheminfichier, InStrRev(cheminfichier, "") + 1) 'on extrait le dernier nom de la chaine
"") + 1) 'on extrait le dernier nom de la chaine?
nomfichier = Mid(cheminfichier, InStrRev(cheminfichier, "") + 1) 'on extrait le dernier nom de la chaine
Const Destination As String = "Z:\web\TEST_PROGRAMME\TEST_RECEPTION"
cheminfichier = tView_Serveur.SelectedNode.FullPath
My.Computer.FileSystem.RenameFile("C:\Fichier.exe", "Fichier2.exe")