Copie de fichiers .exe via des Treeviews [Résolu]

- 22 oct. 2012 à 16:24 - Dernière réponse :  banana32
- 5 nov. 2012 à 19:34
Voilà ce que je veux faire en .Net:

1. Sélectionner un (les) fichier(s) .exe ou .msi dans un Treeview.
2. Cliquer sur le bouton Add.
3. Faire un FileCopy du (des) fichier(s) sélectionné(s) vers le dossier temporaire du PC.

A priori, rien de bien compliqué. Seulement, j'ai commencé le VB.Net il y a peu de temps, et ça fait plusieurs jours maintenant que je suis penchée sur ce problème, je piétine.

Voici le code:
    Private Sub btn_Transfert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
        Dim Node As System.Windows.Forms.TreeNode
        Try
            For Each Node In tView_Serveur.SelectedNode
                tView_Temporaire.FileCopy("Z:\Dossier\Sous dossier\Sous sous dossier".fichier récupéré, "%system root%\temp")
            Next
        Catch erreur As Exception
            MessageBox.Show("Copie échoué. " & erreur.GetBaseException.Message)
        End Try
    End Sub


Est-ce qu'il y aurait un moyen d'éviter le For Each aussi?
Merci d'avance.
Afficher la suite 

Votre réponse

31 réponses

Meilleure réponse
Messages postés
5523
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 24 oct. 2012 à 16:02
3
Merci
Je t'ai mis la copie dans un bouton.
Attention à tes chemins source et destination. Evite les espaces et fait les terminé par \
Voici le code, j'ai laissé mes chemin pour mes essais pour que tu comprennes bien:

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


Tu noteras que j'ai fait un Sub pour la treeview destnation pour qu'elle se réinitialise à chaque opération


@+Le Pivert

Merci cs_Le Pivert 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Le Pivert
Meilleure réponse
Messages postés
5523
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 24 oct. 2012 à 16:10
3
Merci
Si tu veux faire la copie en cliquant sur le fichier tu mets cela:

  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



Le Pivert

Merci cs_Le Pivert 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Le Pivert
Meilleure réponse
Messages postés
5523
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 25 oct. 2012 à 11:38
3
Merci
Je viens de m'apercevoir d'une chose ce code n'est valable que si tu n'as pas d'autres noeuds.
Comme je te l'ai dit dans ma 1 ère réponse et comme l'a fait remarqué UCFOUTU, il vaut mieux utiliser ceci:

 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

Et tu ajoutes cela dans les déclarations
Dim cheminfichier As String

Voici un code pour chercher le chemin du dossier à ouvrir si cela peut-être utile!

  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


a mettre comme ceci:

 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 --------------------------------
        '--------------------------------------------------------------------------------------------------------


bone programmation

Merci cs_Le Pivert 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Le Pivert
Meilleure réponse
Messages postés
5523
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 25 oct. 2012 à 16:22
3
Merci
Quand je te dis de neutraliser la constante, il faut la supprimer et la remplacer par :
Dim Source As String
Sinon la modification que j'ai faite ne sert à rien!!!!!!!!!!!!
Remet le "+1"
Pour que tu comprennes fait moi le plaisir de mettre des MsgBox pour voir ce que tu fais

    cheminfichier = tView_Serveur.SelectedNode.FullPath
MsgBox(cheminfichier)        
nomfichier = Mid(cheminfichier, InStrRev(cheminfichier, "") + 1) 'on extrait le dernier nom de la chaine
    MsgBox(nomfichier)


Tu verras qu'il est necessaire d'avoir le nom du fichier à mettre a la suite de ton chemin de destination (Chemin du dossier seulement)pour faire la copie
@+

Merci cs_Le Pivert 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Le Pivert
Messages postés
5523
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 24 oct. 2012 à 12:04
0
Merci
Pour pouvoir t'aider il faut savoir le chemin que tu as quand tu cliques sur ton fichier.
Tout d'abord
Tu cliques sur ta treeview pour obtenir l'evenement: _AfterSelect
et tu mets une msgBox
Ce qui donne ceci:

Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
        MsgBox(e.Node.FullPath)
End Sub

Tu cliques sur ton fichier.
En fonction de ce que tu vas obtenir tu mettras une variable à la place de la msgBox nommé par exemple cheminfichier.
Il faudra ensuite extraire de cette chaine le nom du fichier avec son extension pour pouvoir le copier avec un variable nommé fichier.
Il ne te restera plus qu'a faire ta copie
Avec la chemin de la source et le chemin de la destination
@+Le Pivert
Commenter la réponse de cs_Le Pivert
0
Merci
Merci pour ta réponse Le Pivert

Pour que tu es plus de précision, voilà le code aujourd'hui:

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


Il y a eu des modifications depuis:
- J'ai supprimé les 2 boutons add et remove, la tâche sera plus simple, y compris pour les futurs utilisateurs.
- J'ai supprimé par la même occasion le For Each, pour remplacer ça avec un traitement par SelectAction.

l'Algo, le voilà:

* 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).


Et pour chaque fichier cliqué, le traitement vérifiera qu'il existe puis si c'est bon, il le copie dans le temporaire de suite.


Seulement, il me met: Erreur 1 'SelectAction' n'est pas un membre de 'System.Windows.Forms.TreeNode'.
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


Par quoi je dois remplacer
Dim node As TreeNode
alors?
Commenter la réponse de swohard
0
Merci
Et bah merci beaucoup Le Pivert!

Mais attends, si j'ai bien compris,
nomfichier = nomfichier.Replace("TreeNode: ", "")

On utilise
nomfichier.Replace
parce qu'on a pas le droit d'attribuer le même nom à la source et à la destination? C'est bien ça?



Et après, je comprend pas vraiment le reste
("TreeNode: ", "") 'supprime TreeNode:
dans
nomfichier = nomfichier.Replace("TreeNode: ", "") 'supprime TreeNode:

... C'est là qu'on remplace les caractères non? Ca équivaux à ça non:
MonString = MonString.Replace("test", "test2")


Cela n'empêche que je comprend mal comment fonctionne SelectAction, ainsi que TreeNodeSelectAction.Select et toute la clique ...

Excuses moi pour ces questions, mais j'essaye de bien comprendre. Ca fait une semaine que je suis sur ce problème qui est censé être facile (censé), donc j'essaye d'éviter de faire les mêmes erreurs.
Commenter la réponse de swohard
0
Merci
Je vais voir ça, et je te dis si c'est bon.
Commenter la réponse de swohard
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 24 oct. 2012 à 17:42
0
Merci
Bonjour,
Etes-vous certain de ce que n'existe pas, comme sous VB6, la propriété FullPath de l'objet selectedItem ? ===>> et que par exemple ===>>>
TreeView1.SelectedItem.FullPath ne retournerait pas tout seul comme un grand une chaine de caractères représentant le chemin complet de l'élément sélectionné dans la TreeView ?
Bien sur (si marche, comme je veux le croire) : pas le selectedItem mais pour chaque machin dans les items sélectionnés : machin.Fullpath est un chemin complet de l'item machin.
Et dès lors que l'on a ce chemin, le reste devrait être simple (selecteditem retournant quant à lui, le nom seul du fichier ou dossier) : contrôler si fichier ou dossier et agir en conséquence.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
5523
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 24 oct. 2012 à 18:01
0
Merci
C'est tout à fait exact UCFOUTU il y a un code pour récupérer le chemin complet:

tView_Serveur.SelectedNode.FullPath

Mais vu que les chemin sont en durs j'ai pensé qu'il valait mieux extraire le nom du fichier pour le chemin de destination.

Pour showhard quand tu mets ceci dans l'evenement AfterSelect
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.
Pour ce qui est de cela
"Cela n'empêche que je comprend mal comment fonctionne SelectAction, ainsi que TreeNodeSelectAction.Select et toute la clique ..."

Je ne sais pas. Mais en le mettant dans l'evenement Form1_Load cela ne risque pas de fonctionner

Il faut que tu saches que Form1_Load est l'evenement qui se produit à l'ouverture de l'application et AfterSelect comme son nom l'indique cela se produit après avoie sélectionné un noeud

Comme je te l'ai fait cela fonctionne correctement

@+Le Pivert
Commenter la réponse de cs_Le Pivert
0
Merci
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.

D'accord! Merci pour la précision Le Pivert Et merci beaucoup pour toutes ces réponses apportés et d'y avoir consacré du temps dessus!

Comme je te l'ai fait cela fonctionne correctement
J'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!

D'après ce que tu me dis, il faudrait en faite mettre SelectAction en méthode alors, et l'appeler ensuite (en dehors du Form_Load bien entendu). Je vais étudier cette piste là pour une prochaine fois!

Maintenant, je dois voir comment appeler l'interface de connexion au NAS avant de lancer ces instructions... Je vais me marrer!

Merci à vous pour vos interventions et passez une bonne journée.
Commenter la réponse de swohard
Messages postés
5523
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 25 oct. 2012 à 11:43
0
Merci
Il faut que tu neutralises ta constante:
'Const Source As String = ""
si tu choisis ce mode d'ouverture bien entendu
Commenter la réponse de cs_Le Pivert
0
Merci
Oui, il le faut, car quand je lance le programme, le message suivant m'est envoyé:
" Copie échoué. L'accès au chemin d'accès 'Z:\...\...\...' est refusé. "

Ce qui n'empêche pas cependant de lancer le programme.

Mais il y a un comportement étrange...
J'ai créé des dossiers de test:
    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 


Il me copie bien les fichiers .exe qui se trouvent dans TEST_CONNEXION, mais il me les copie à côté de la plaque!
Càd au même niveau que le dossier de réception (TEST_RECEPTION)et en appliquant le nom du dossier devant chaque nom de fichier:

Voici ce que ça donne sur mon interface:


Et voilà ce que ça donne derrière les coulisses:


Est-ce que ça viendrait pas de cette partie là?
cheminfichier = tView_Serveur.SelectedNode.FullPath
nomfichier = Mid(cheminfichier, InStrRev(cheminfichier, "") + 1) 'on extrait le dernier nom de la chaine
Commenter la réponse de swohard
0
Merci
Bah évidemment! Bien sur que oui, question bête, réponse bête! j'ai mal regardé.
Mais du coup, peut-on mettre autre chose que
"") + 1) 'on extrait le dernier nom de la chaine
?
Commenter la réponse de swohard
0
Merci
C'est bon. J'ai enlevé le "+1"
nomfichier = Mid(cheminfichier, InStrRev(cheminfichier, "") + 1) 'on extrait le dernier nom de la chaine

Maintenant, les fichiers sont copiés directement à l'intérieur du dossier TEST_RECEPTION, et le nom du dossier n'apparaît pu devant chaque nom de fichier.
Commenter la réponse de swohard
0
Merci
D'accord. Alors inévitablement, si on garde le "+1", le fichier va être copier en dehors du dossier de destination et se retrouver au même niveau que celui ci. Alors comment faire pour qu'il se retrouve dans le dossier de destination?

Désolé pour tout ces dérangements. Crois moi, si je connaissais un peu plus le VB.Net, ça aurait été mieux pour tout le monde. Seulement, je ne connaissais absolument pas ce langage jusqu'à il y a 2 semaines. Je suis en stage en ce moment même, et là j'ai pas eu le choix... Je n'ai pas appris à manipuler des fichiers et les Treeviews à peine, c'est tout nouveau.
Je te dois un grand merci pour ton aide!
Commenter la réponse de swohard
Messages postés
5523
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 25 oct. 2012 à 19:02
0
Merci
Je viens de m'apercevoir sur l'image que tu as envoyée que ta constante Destination ne se termine pas par \ comme je te l'avais recommandé dans un précédent post.
Donc mets ceci:
Const Destination As String = "Z:\web\TEST_PROGRAMME\TEST_RECEPTION"


C'est très important, c'est pour cela que ça ne fonctionne pas.
Voilà ce que doit être ton chemin pour qu'il s'enregistre:
Const Destination As String = "Z:\web\TEST_PROGRAMME\TEST_RECEPTION\tonfichier.exe"

Si tu as d'autres questions je suis à ta disposition. Je sais la difficulté de débuter!
Si tu veux mettre aussi une boite d'ouverture de dossier pour le dossier Destination, je t'indiquerais la marche à suivre.
Bone soirée
Commenter la réponse de cs_Le Pivert
0
Merci
Merci bien Le Pivert, c'est très gentil de ta part
Commenter la réponse de swohard
0
Merci
Bonjour Le Pivert.

Je me retourne vers toi car il y a un point que je ne comprend pas trop.

Ce code marche lorsque je sélectionne un fichier normalement (avec un click gauche)
cheminfichier = tView_Serveur.SelectedNode.FullPath

Il me renvoie le chemin complet avec le nom du fichier sélectionné.

Mais quand j'essaye de l'adapter avec un click droit pour pouvoir renommer le fichier dans une norme proposé dans les ToolStripMenu(à cause des nouvelles versions de noms de fichier.exe) via ContextStripMenu "Renommer" et ToolStripMenu , il me retourne que le chemin sans le nom du fichier.
On dirait que le click droit ne reconnait pas et ne sélectionne pas le fichier...

J'en aurai besoin pour ça:
My.Computer.FileSystem.RenameFile("C:\Fichier.exe", "Fichier2.exe")

mais faut d'abord que je définisse le nom du fichier sélectionné par click droit.

Merci par avance
Commenter la réponse de swohard
0
Merci
Je vais explorer les évènements click mouse right, je pense que ça sera bon :)
Commenter la réponse de swohard

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.