COPIER, DÉPLACER, SUPPRIMER DES FICHIERS, DOSSIERS VIA MODULE

thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 - 13 nov. 2004 à 22:45
cs_sergiooi Messages postés 53 Date d'inscription vendredi 6 octobre 2006 Statut Membre Dernière intervention 7 octobre 2009 - 17 avril 2007 à 17:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27514-copier-deplacer-supprimer-des-fichiers-dossiers-via-module

cs_sergiooi Messages postés 53 Date d'inscription vendredi 6 octobre 2006 Statut Membre Dernière intervention 7 octobre 2009
17 avril 2007 à 17:52
tu met dans ton module:
public sub CopierDossier (Origine as string, Destination as string)
dim fs
set fs = createObject("Scripting,FileSystemObject")
fs.copyFolder Origine, Destination
set fs = nohing
end sub

et tu appel la fonction sur ta feuille:
fs.copierDossier "C:\NVIDIA", "D:\NVIDIA"

Tu n'as pas besoin de modifier(dim fs as new fs)

Moi en tout cas ca marche #1
sebkill25 Messages postés 10 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 19 juin 2010
17 avril 2007 à 13:47
Je suis pas arrivé a le faire fonctionné... et la syntaxe n'est pas la même
Si le résultat est le même je préfère une sytaxe plus propre...
Et je l'execute pas depuis un module, j'en vois pas l'intérêt.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 avril 2007 à 13:44
pas compris ton commentaire...

c'est EXACTEMENT ce qui est fait là :


Public Sub CopierDossier(Origine As String, Destination As String)
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFolder Origine, Destination
Set fs = Nothing
End Sub
sebkill25 Messages postés 10 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 19 juin 2010
17 avril 2007 à 13:33
Beaucoup plus simple pour copier un répertoire :
Dim fso As FileSystemObject
Set fso = New FileSystemObject
fso.CopyFolder "c:\sources", "c:\oldsources", True
Set fso = Nothing

Où "c:\sources" et "c:\oldsources" peuvent être remplacés par des variables qui contienent un chemin sélectionné par exemple.

;)
sebkill25 Messages postés 10 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 19 juin 2010
17 avril 2007 à 12:34
Salut,
Voilà c'est exactement le code que je cherché mais j'arrive pas à le faire fonctionné.
J'ai créer le module et j'ai copier tout le code source dedans. (Il se nomme "FS" comme dans la source).
Ensuite le le clik d'un bouton j'ai inscrit :
Dim FS As New FS
FS.CopierDossier(c:\NVIDIA, d:\NVIDIA)
---------------------------------------
Erreur de compilation :
Attendu : Séparateur de liste ou )
---------------------------------------
J'ai donc modifié :
Dim FS As New FS
FS.CopierDossier("c:\NVIDIA", "d:\NVIDIA")
---------------------------------------
Erreur de compilation :
Attendu : =
---------------------------------------
Alors là je comprend pas ....
J'espère avoir été clair.
Merçi de votre aide
cs_sergiooi Messages postés 53 Date d'inscription vendredi 6 octobre 2006 Statut Membre Dernière intervention 7 octobre 2009
16 avril 2007 à 05:30
Salut Mika1000, je me suis dit exactement la meme chose et j'avais deja essayé et sans succes (désolé de ne pas l'avoir mentionné avant). Il semblerais que c'est le dossier lui meme (???) car j'ai pu faire supprimer tout les fichiers et applic. avec ton module et ca a marché mais pas pour ce dossier vide. Mais quand j'ai supprimé le dossier qui contenais mon dossier problématique, ca a marché nickel... bizzard...
Mais merci bien d'avoir pris le temps de me répondre et aplus!
cs_Mika1000 Messages postés 4 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 16 avril 2007
16 avril 2007 à 00:18
Salut Sergiooi.

Je pense qu'un fichier se trouvant dans le dossier "PsxFin" est en cours d'utilisation au moment où tu veux supprimer le dossier. D'où l'accès refusé ! Essaye tout simplement de supprimer ce dossier toi même pour vérifier.

@+
cs_sergiooi Messages postés 53 Date d'inscription vendredi 6 octobre 2006 Statut Membre Dernière intervention 7 octobre 2009
14 avril 2007 à 22:31
Salut Mika1000! merci pour cette source tres utile. Tout fonctionne mais à part un. celui là:

fs.SupprimerDossier ("C:\Program Files\ÉmulInstall v1.0\psOne\PsxFin")

J'ai mis ton module dans mon projet qui copie et supprime des fichiers mais celui là m'envoie l'erreur #70
acces denied... Tout les autres se suppriment mais pas lui POURQUOOOOIII???

Voilà et encore merci. j'espère que tu sauras me répondre.
a+
Sepi62500 Messages postés 34 Date d'inscription lundi 13 février 2006 Statut Membre Dernière intervention 24 août 2011
27 févr. 2007 à 09:21
Salut,

je trouve ta source bien utile.
La dernière fois j'ai dû créer un prog pour supprimer un fichier.
ta source aurait bien été utile.
difooltball Messages postés 8 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 9 août 2006
8 août 2006 à 17:51
bof mais c pas mal =)

NOTE : 7/10
mareluc Messages postés 17 Date d'inscription jeudi 11 septembre 2003 Statut Membre Dernière intervention 10 novembre 2005
27 avril 2006 à 10:20
Dans ta "form_load" il suffit de faire appel aux subroutines avec par exemple:

Private Sub Form_Load()
Dim Origine As String
Dim Dest As String
Call CopierDossier(Origine, Dest)

en définissant Origine et Destination (C:\...\....)
Nyouki Messages postés 2 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 27 avril 2006
27 avril 2006 à 09:43
Salut a tous je suis débutant VB et je n'arrive pas à utiliser ce module, je l'ai copier/coller dans un nouveau modules que j'ai choisi d'appeler : options.

Ensuite dans ma form je rentre :
options.CopierDossier("C:\files", "C:\Documents and Settings\mon dossier\Desktop\projet Bis").
au moment ou je clique pour visualiser mon projet, ca me mets "erreur de synataxe"
Quelqu'un peut m'aider?

Merci!
mareluc Messages postés 17 Date d'inscription jeudi 11 septembre 2003 Statut Membre Dernière intervention 10 novembre 2005
22 févr. 2006 à 10:58
Tu dis ça pour cdrique?
Car je travaille en vb6, et tous ces codes marchent, sauf que je n'ai pas celui qui traite les attributs des dossiers.
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
21 févr. 2006 à 22:47
mais ce que vous êtes en train de faire c du vb????????????
car le code ki est sur cette page c'est du vb.net c pô pareil!!!!
mareluc Messages postés 17 Date d'inscription jeudi 11 septembre 2003 Statut Membre Dernière intervention 10 novembre 2005
21 févr. 2006 à 20:14
Mika1000, merci d'avoir essayé.
Effectivement, GetAttr et SetAttr marchent avec les fichiers, mais pas avec les dossiers ??
cs_Mika1000 Messages postés 4 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 16 avril 2007
21 févr. 2006 à 19:15
Mareluc, j'ai fait des essais avec GetAttr et SetAttr pour les attributs mais c'est pas très concluant (erreur quand le dossier est vide, etc...) A approfondir...
cdrique Messages postés 6 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 21 février 2006
21 févr. 2006 à 18:03
Bonjours à tous!
J'interviens dans votre discut mais ce code m'interresse beaucoup.
Je suis novice en VB et j'essaie d'employer ce module mais ça ne marche pas.

Je veux copier un dossier dans un autre, avec l'aide d'un bouton.
J'ai donc utilisé dans un module :

Public Sub CopierDossier(Origine As String, Destination As String)
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFolder Origine, Destination
Set fs = Nothing
End Sub

et dans mon projet, j'ai inscrit :

Public Sub Command1_Click()
Call CopierDossier("C:\TOTO" As String, "D:\TOTO" As String)
End Sub

Ca ne marche pas et ça indique erreur de syntaxe.
Pkoi??

Une petite réponse serai la bienvenue...
Cdrique
mareluc Messages postés 17 Date d'inscription jeudi 11 septembre 2003 Statut Membre Dernière intervention 10 novembre 2005
21 févr. 2006 à 17:42
Ben, fichier cachée, lecture seule, archive et éventuellement date de création.
Enfin ceux qui apparaissent quand on fait "Propriétés"
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
21 févr. 2006 à 11:58
k'est ce que tu entend par attribut??????????
mareluc Messages postés 17 Date d'inscription jeudi 11 septembre 2003 Statut Membre Dernière intervention 10 novembre 2005
21 févr. 2006 à 10:02
Juste une question,après je mets 10/10.
Comment fait-on pour conserver les attributs d'un dossier que l'on veut copier?
got3 Messages postés 1 Date d'inscription mercredi 10 août 2005 Statut Membre Dernière intervention 12 août 2005
12 août 2005 à 19:55
Merci
J'ai un peu modifié le code :
fs.CopyFile App.Path & "\7za.exe", "c:\7za.exe"
ce qui permet de copier un fichier spécifique, ici 7zip en ligne de commande du dossier source vers la racine du c:
Utilisateur anonyme
7 avril 2005 à 10:03
ouai merci sa marche nikel.
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
6 avril 2005 à 17:26
en fait c un truc simple tu a juste a placer ce module ds ton projet vb et d'appeler ce module en faisant par exemple :
dim MyModule as new Mymodule
myModule.CopierDossier(c:\Dossier d'origine, d:\Dossier de destination)

etc.... pour toute les procédure du module
ex:
- CopierDossier
- CopierFichier
- CréerDossier
- DéplacerDossier
- DéplacerFichier
- DéplacerFichier
- SupprimerFicher

ou alors tu pe très bien te passer du module et inclure direct le code ss le bouton de ton choix
Utilisateur anonyme
6 avril 2005 à 16:25
slt je début en vb et pourrais tu mettre un exemple d'utilisation des des fonction, au moin pour la premiere merci +
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
4 févr. 2005 à 04:05
Superbe ta source j'ai pu l'introduire ds la mienne en VB.net ss pb merci 10/10 pour ca franchement super!!!!!!!!!!!!!!!!!!!!!!
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
4 févr. 2005 à 03:57
dis moi ke ve dire MKDir & RMDir en fait je n'ai jamais touché o vb
je suis juste en vb.net mai etant donné ke la fonction kill fonctionne pe etre que ces 2 là foonctionne ossi.
dis moi tu pourrai donner un exemple d'utilisation de chaque fonction stp!!!!!!!!!
merci
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
13 nov. 2004 à 22:45
ton code a un gros gros gros probleme.

tu cree des objets et tu ne les detruis jamais.
donc si j'utilise tes fonctions dans un programmes qui fait plein de manip de fichiers pendant des jours, j'explose la memoire windows et donc crash machine.

si tu fais un :
Set fs = CreateObject("Scripting.FileSystemObject")
il faut toujours faire un :
Set fs = nothing pour finir.

en plus il existe deja des fonctions toutes faites sous VB simple d'utilisations et optimisés:
MKDIR,RMDIR,KILL

l'utilisation d'objets Scripting.FileSystemObject incombe une version IE5.0 minimum d'installé sur le PC