VB Copie Mes Document win7

Bonjour, cela fait 5 jours que j'hère sur le net afin de trouver comment copier mes documents sous Windows 7.

j'ai utiliser :

Private Sub BD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BD.Click
       
        If System.IO.Directory.Exists(TB3.Text) = False Then
            System.IO.Directory.CreateDirectory(TB3.Text)
        End If
        If TB3.Text.Contains("Documents") Then
            TB3.Text.Replace("C:\Users\", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments))
           TB3.Text.Replace(Environment.UserName, "")
        End If
        My.Computer.FileSystem.CopyDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), TB3.Text, True)
        MsgBox("La copie s'est exécutée correctement", vbInformation, "Etat de la sauvegarde")

    End Sub


explication :

tb3 = textbox relier a un bouton recherche des dossier (choisie la ou j'enrejistre le dossier "Mes Document')

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) = "Mes Document" de l'utilisateur courant

Problème rencontrer :

L'accès au chemin d'accès 'C:\Users\Julien\Documents\Ma musique\' est refusé.

Merci de vos réponse future.

4 réponses

  1. Contributeur
    Bonjour,
    Après quelque cheveux gris supplémentaires... :=)))
    Effectivement, semblerait qu'il y ai un bug dans VB !!
    Quand tu veux copier MyDocuments l'erreur sur Ma musique est normale vu que ce répertoire n'est pas dans "Mes documents"
    Alors que si tu copie MyMusiq ça fonctionne parfaitement.
    Autre constatation, si ton répertoire source contient le mot "Documents" tes conditions font en sorte que tu copie "Documents" sur le même répertoire, d'où l'erreur.
    Quel sont les répertoires que tu veux sauver ?
    A+

    1. je souhaite sauvegarder juste ce chemin : C:\Users\"utilisateur courant"\Documents

      j'ai déjà les ligne pour sauvegarder Desktop et Favorites
      1. on ma donner une solution qui marche très bien ici : https://www.developpez.net/forums/d1400865/dotnet/langages/vb-net/vb-copie-document-win7/

        je met le code complet et rectifier pour mes documents, je donnerais le script une foi fini, on ne sais jamais sa peut servir.

        Private Sub BD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BD.Click

        If System.IO.Directory.Exists(TB3.Text) = False Then
        System.IO.Directory.CreateDirectory(TB3.Text)
        End If

        If TB3.Text.Contains("Documents") Then
        TB3.Text = TB3.Text.Replace("C:\Users\", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments))
        TB3.Text = TB3.Text.Replace(Environment.UserName, "")

        End If
        My.Computer.FileSystem.CopyDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), TB3.Text, FileIO.UIOption.AllDialogs) ' Marche

        MsgBox("La copie s'est exécutée correctement", vbInformation, "Etat de la sauvegarde")
        End Sub

        Private Sub TB3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TB3.TextChanged

        End Sub

        Private Sub BP2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BP2.Click

        TB3.Text = "choisissez le repertoire ou enregistrer!"
        FolderBrowserDialog3.ShowDialog()
        TB3.Text = FolderBrowserDialog3.SelectedPath
        End Sub

        bd = bouton copie document
        tb3 = textbox 3
        bp2 = bouton parcourir 2
        1. Contributeur
          Re,
          Comme dis sur DVP, ce n'est pas une solution mais une façon détournée de résoudre ton problème et il est évident que ton correspondant est de mon avis.
          Jai encore fait des recherches et il semblerait que contrairement à ce que l'ont pourraient croire les arguments "Environment.SpecialFolder.MyDocuments" renvoient un string et bien non, c'est un integer. D'où ma réflexion.. doit y avoir une confusion entre un Integer 32bits et un integer 64 bits qui est en réalité un long.
          Comme apparement tu ne voulais pas la fenêtre de suivi remplace la ligne par...
          My.Computer.FileSystem.CopyDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), TB3.Text, FileIO.UIOption.OnlyErrorDialogs)


          Ça fonctionne aussi.
          A+
          PS: tu peu faire part de ma réflexion sur DVP.
          Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
          Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .