Urgent problème de variables dans mon programme

arween76 Messages postés 9 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 31 mai 2011 - 31 mai 2011 à 18:48
arween76 Messages postés 9 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 31 mai 2011 - 31 mai 2011 à 22:46
Bonsoir,

Je débute en VB.Net. J'ai créé un programme de création de répertoire. Il fonctionne bien ... sauf que si je crée un répertoire puis que je l'efface , si je veux le recréer il me dit qu'il existe déjà :-(

Je pense que c'est par ce que je n'ai pas remis ma variable à zero à la fin de la création, mais je ne sais pas comment faire. j'ai bien essayer avec MaVariable=nothing mais cela ne fonctionne pas.

Pourriez-vous m'aider svp?

Voici mon code:
Imports System.IO

Public Class Form1

Dim source As String
Dim destination As String
Dim DestPath As String

Private Property DestDir As Object


' Ouvre la boîte de dialogue de selection du dossier source à copier
Private Sub copieClick(ByVal sender As System.Object, ByVal ByVale As System.EventArgs) Handles copie.Click
Using fbd As New FolderBrowserDialog
If (fbd.ShowDialog = DialogResult.OK) Then
TextBox1.Text = fbd.SelectedPath
source = TextBox1.Text
End If
End Using
End Sub

' Ouvre la boîte de dialogue de selection de destination de la copie
Private Sub colleClick(ByVal sender As System.Object, ByVal ByVale As System.EventArgs) Handles colle.Click
Using fbd1 As New FolderBrowserDialog
If (fbd1.ShowDialog = DialogResult.OK) Then
TextBox2.Text = fbd1.SelectedPath
destination = TextBox2.Text
End If
End Using
End Sub
'Creation de repertoire vide avec le nom choisit
Private Sub saisie_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles saisie.Click
Dim saisie

' Permet de saisir le nom du nouveau dossier à créé
saisie = InputBox("Saisir le nom du répertoire")

' Remplace le "/" par un"-"
saisie = Replace(saisie, "/", "-")

'vérifie que le nouveau dossier n'existe pas
If Directory.Exists(saisie) Then
MessageBox.Show("Ce répertoire existe déjà! Veuillez saisir un nouveau nom.")
Return
End If
TextBox3.Text = saisie

'Met en varible le chemin de l'emplacement vers lequel on fait la copie
DestPath = (destination + "" + saisie)

'Créé le répertoire vide avec le nom donné à l'emplacement choisi
MkDir(saisie)
saisie = Nothing
End Sub

Private Sub crea_Click(ByVal snender As System.Object, ByVal e As System.EventArgs) Handles crea.Click
CopyDirectory(New String(source), New String(DestPath))
' Message de création de réussite de la création
MessageBox.Show("Copie terminée avec succès", "Opération terminée")
End Sub

'Copie du répertoire source
Private Shared Sub CopyDirectory(ByVal SourcePath As String, ByVal DestPath As String, Optional ByVal Overwrite As Boolean = False)
Dim SourceDir As DirectoryInfo = New DirectoryInfo(SourcePath)
Dim DestDir As DirectoryInfo = New DirectoryInfo(DestPath)

If Not DestDir.Exists Then
DestDir.Create()
End If

' Copie le répertoire et sous-dossiers
Dim ChildFile As FileInfo
For Each ChildFile In SourceDir.GetFiles()
If Overwrite Then
ChildFile.CopyTo(Path.Combine(DestDir.FullName, ChildFile.Name), True)
Else
If Not File.Exists(Path.Combine(DestDir.FullName, ChildFile.Name)) Then
ChildFile.CopyTo(Path.Combine(DestDir.FullName, ChildFile.Name), False)
End If
End If
Next

' copie tous les sous répertoires
Dim SubDir As DirectoryInfo
For Each SubDir In SourceDir.GetDirectories()
CopyDirectory(SubDir.FullName, Path.Combine(DestDir.FullName, _
SubDir.Name), Overwrite)
Next
DestDir = Nothing
End Sub

'ouvre le dossier créé
Private Sub open_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles open.Click
Process.Start("explorer.exe", DestPath)
End Sub

End Class

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
31 mai 2011 à 21:06
Salut

Urgent, tous tes messages sont urgents.
C'est agaçant. De toute façon, on va pas mobiliser une équipe parce "c'est urgent". Tes réponses arriveront aussi vite sans cette précision.

La prochaine fois, pense à utiliser la coloration syntaxique (3eme icone à droite) = plus facile à lire et conserve les indentations de tête de lignes.

Combien de temps s'écoulent entre la suppression et la re-création ?
Y a t-il au moins un Application.DoEvents entre ?
Existe t-il une méthode .Refresh à l'objet ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
arween76 Messages postés 9 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 31 mai 2011
31 mai 2011 à 21:34
Bonsoir Jack

Je suis désolée si je t'ai agacé en mettant "urgent" dans mon entête de message.
Je n'ai du poster que deux ou trois messages sur ce forum.
Je n'ai jamais fais de programmation avant ce projet qui m'a été imposé, donc je n'y connais pas grand chose. Je dois le rendre milieu de semaine prochaine. Je ne me suis aperçue de l'erreur que ce matin. J'ai essayé de le résoudre par moi même toute la journée.

Combien de temps s'écoulent entre la suppression et la re-création ? une journée
Y a t-il au moins un Application.DoEvents entre ? non
Existe t-il une méthode .Refresh à l'objet ? non

Je te remercie pour ta réponse et vais explorer les pistes que tu m'as donné.

Bonne soirée
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
31 mai 2011 à 21:51
Bonsoir, Hélène,
Il n'y a pas que Jack, que cet adjectif dans un titre agace considérablement.
Je puis t'assurer de ce qu'en ce qui me concerne, la seule vue de cet adjectif dsans le titre fait que je n'ouvre en principe même pas le sujet ! Je n'ai regardé celui-ci que par-ce-que j'ai vu marqué "2" dans le nombres de réponses reçues et que j'en étais étonné.
Je serais tekllement content (et espère que d'autres liront mon message) que tu comprennes une chose essentielle :
- la vocation fondamentale d'un forum technique (informatique ou autre) n'est pas de faire face aux situations "urgentes" dans lesquelles un forumeur pourrait se trouver !
- elle est toute autre et notamment, face à un problème, de préférence "nouveau", de mettre à contribution plusieurs compétences pour le résoudre et, au besoin, en faire un "cas d'école" répertorié et dont de futurs forumeurs bénéficieront peut-être un jour.
Aucune urgence, dans une telle approche, bien au contraire !
Voilà
Amitiés.


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
arween76 Messages postés 9 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 31 mai 2011
31 mai 2011 à 22:46
Bonsoir Ucfoutu,

J'ai pris bonne note de vos remarques concernant le terme "urgent".

J'ai cherché sur le site si d'autres avaient rencontré ce problème et je n'ai pas trouvé.

Je tiendrais compte à l'avenir de vos remarques.

Bonne soirée
0
Rejoignez-nous