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

Signaler
Messages postés
521
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
11 septembre 2008
-
Messages postés
53
Date d'inscription
vendredi 6 octobre 2006
Statut
Membre
Dernière intervention
7 octobre 2009
-
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

Messages postés
53
Date d'inscription
vendredi 6 octobre 2006
Statut
Membre
Dernière intervention
7 octobre 2009

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
Messages postés
10
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
19 juin 2010

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.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
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
Messages postés
10
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
19 juin 2010

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.

;)
Messages postés
10
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
19 juin 2010

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
Messages postés
53
Date d'inscription
vendredi 6 octobre 2006
Statut
Membre
Dernière intervention
7 octobre 2009

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!
Messages postés
4
Date d'inscription
jeudi 20 novembre 2003
Statut
Membre
Dernière intervention
16 avril 2007

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.

@+
Messages postés
53
Date d'inscription
vendredi 6 octobre 2006
Statut
Membre
Dernière intervention
7 octobre 2009

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+
Messages postés
34
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
24 août 2011

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.
Messages postés
8
Date d'inscription
samedi 29 juillet 2006
Statut
Membre
Dernière intervention
9 août 2006

bof mais c pas mal =)

NOTE : 7/10
Messages postés
17
Date d'inscription
jeudi 11 septembre 2003
Statut
Membre
Dernière intervention
10 novembre 2005

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:\...\....)
Messages postés
2
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
27 avril 2006

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!
Messages postés
17
Date d'inscription
jeudi 11 septembre 2003
Statut
Membre
Dernière intervention
10 novembre 2005

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.
Messages postés
441
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
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!!!!
Messages postés
17
Date d'inscription
jeudi 11 septembre 2003
Statut
Membre
Dernière intervention
10 novembre 2005

Mika1000, merci d'avoir essayé.
Effectivement, GetAttr et SetAttr marchent avec les fichiers, mais pas avec les dossiers ??
Messages postés
4
Date d'inscription
jeudi 20 novembre 2003
Statut
Membre
Dernière intervention
16 avril 2007

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...
Messages postés
6
Date d'inscription
samedi 18 janvier 2003
Statut
Membre
Dernière intervention
21 février 2006

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
Messages postés
17
Date d'inscription
jeudi 11 septembre 2003
Statut
Membre
Dernière intervention
10 novembre 2005

Ben, fichier cachée, lecture seule, archive et éventuellement date de création.
Enfin ceux qui apparaissent quand on fait "Propriétés"
Messages postés
441
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
k'est ce que tu entend par attribut??????????
Messages postés
17
Date d'inscription
jeudi 11 septembre 2003
Statut
Membre
Dernière intervention
10 novembre 2005

Juste une question,après je mets 10/10.
Comment fait-on pour conserver les attributs d'un dossier que l'on veut copier?
Messages postés
1
Date d'inscription
mercredi 10 août 2005
Statut
Membre
Dernière intervention
12 août 2005

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:
Messages postés
32
Date d'inscription
lundi 6 décembre 2004
Statut
Membre
Dernière intervention
9 novembre 2006

ouai merci sa marche nikel.
Messages postés
441
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
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
Messages postés
32
Date d'inscription
lundi 6 décembre 2004
Statut
Membre
Dernière intervention
9 novembre 2006

slt je début en vb et pourrais tu mettre un exemple d'utilisation des des fonction, au moin pour la premiere merci +
Messages postés
441
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
Superbe ta source j'ai pu l'introduire ds la mienne en VB.net ss pb merci 10/10 pour ca franchement super!!!!!!!!!!!!!!!!!!!!!!
Messages postés
441
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
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
Messages postés
521
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
11 septembre 2008
5
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