Copier fichier si présent ...

dwit Messages postés 3 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 27 janvier 2005 - 13 janv. 2005 à 13:34
jef_b Messages postés 28 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 2 juin 2005 - 13 janv. 2005 à 15:14
Bonjour à tous

Je souhaiterais faire la choses suivantes :

J'ai deux dossier sur mon disque , rep 1 et rep2

Je dois copier les élément de rep 1 vers rep 2 , si et seulement si un fichier du meme nom existe déja dans rep 2

Voic ce que j'ai commencé a faire ( et vous remarquerez bien vite que c'est ma premiere expérience en vb :) )



Dim chemin1
As
String



Dim chemin2
As
String



Dim element



Dim nomFichier
As
String



Dim i
As
Integer



Dim element2
As
String



Dim strFichier
As
String





chemin1 = TextBox1.Text


chemin2 = TextBox2.Text


strFichier = Dir$(chemin1 + "*.*")



Dim Fichier
As
String


Fichier = Dir$(chemin1 & "*.*")
'chemin se termine par ""



While Fichier <> ""


Fichier = Dir$()



If Dir(chemin2 + Fichier) <> vbNullString
Then


MsgBox("found : " + chemin2 + Fichier)


Dim fso, r



fso = CreateObject("Scripting.FileSystemObject")



r = fso.CopyFile(chemin1 + element, chemin2 + element)


End
If



End
While

Merci de votre aide

3 réponses

jef_b Messages postés 28 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 2 juin 2005
13 janv. 2005 à 13:47
Bonjour !



Pour faire plus simple... utilise le FileSystemObject !



if fso.fileExists (chemin2+element) then

fso.CopyFile(chemin1 + element, chemin2 + element)

end if

Jef
0
dwit Messages postés 3 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 27 janvier 2005
13 janv. 2005 à 14:18
Super ca marche ...

maintenant si je peux pousser un peu plus loin , je souhaiterai aussi que cette copie inclue les sous-folder

Voila mon code pour le moment :


Dim chemin1
As
String



Dim chemin2
As
String



Dim nomFichier
As
String



Dim i
As
Integer

Dim strFichier
As
String



Dim fso, r


fso = CreateObject("Scripting.FileSystemObject")





chemin1 = TextBox1.Text


chemin2 = TextBox2.Text



Dim Fichier
As
String


Fichier = Dir$(chemin1 & "*.*")
'chemin se termine par ""



While Fichier <> ""


Fichier = Dir$()



'MsgBox("Affichage : " + chemin1 + element + " Element 2" + chemin2 + element)



If fso.fileExists(chemin2 + Fichier)
Then


fso.CopyFile(chemin1 + Fichier, chemin2 + Fichier)


Label1.Text = Label1.Text + " " + Fichier



End
If



End
While

Est-ce compliqué a mettre en oeuvre ?
0
jef_b Messages postés 28 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 2 juin 2005
13 janv. 2005 à 15:14
Re !



Pas particulièrement...



Tu crées une routine qui sera récursive...



private sub maRoutine (repSource as String, repDest as String)

Dim fso as new FileSystemObject

Dim lesFichiers as Files

dim fichier as File



lesFichiers = fso.getFolder(repSource).files ' récupération des fichiers du répertoire source

' là on fait la copie de tous les fichiers

For Each fichier In lesFichiers

' vérification de son existance et copie

If
fso.fileExists(
repDest + Fichier)
Then


fso.CopyFile(
repSource + Fichier, repDest + Fichier)


Label1.Text = Label1.Text + " " + Fichier


End

If



next



dim lesRepertoires as Folders

Dim repertoire as Folder

' récupération des répertoires, et appel récursif de la méthode pour chaque répertoire trouvé

lesRepertoires = fso.getFolder(repSource).subFolders

for each repertoire In lesRepertoires

' test de l'existance du répertoire dans le répertoire destination...

' si existant alors appel à maRoutine, sinon on passe au suivant

' (par rapport ce que tu avais posé comme problème...)

if fso.folderExists(rep) then

maRoutine (repertoire.path, repDest & nouveau répertoire destination)

end if

next

end sub



Ca devrait marcher... Désolé mais je fais ça à chaud alors ya pi etre des erreurs...
L'idée générale est là en tous cas...


Jef
0
Rejoignez-nous