Dossier

drpsico Messages postés 208 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 15 août 2005 - 25 sept. 2004 à 14:38
damdam04 Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 20 novembre 2006 - 21 mai 2005 à 23:18
salut a tous
commen on fai pour copier un dossier plein ou vide
merci
==drpsico==

14 réponses

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
25 sept. 2004 à 14:42
Salut,

Déjà il faut que tu sache si le répertoire est vide ou plein, pour cela utilise une FileListBox pour voir le contenu d'un répertoire, ensuite s'il est plein tu doit copier un à un les fichiers pour cela utilise l'Index du FileListBox dans un boucle pour déplacer le curseur.
S'il est vide il suffit juste de créer un nouveau répertoire.

Chris...
0
drpsico Messages postés 208 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 15 août 2005
25 sept. 2004 à 14:46
merci mes je c pas commen utilisé FileListBox
==drpsico==
0
drpsico Messages postés 208 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 15 août 2005
25 sept. 2004 à 14:49
alors si tu poura&i me dire commen lutiliser pour savoir si il et plein ou vide le dossier et pour faire une boucle avec
pour verifier il fo faire teste je pence mes commen je formule
merci
==drpsico==
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
25 sept. 2004 à 14:56
Alors, place une FileListBox, puis paramètre la propriété PATH
Exemple : FileListBox1.path="c:"

Pour obtenir le nombre de fichiers de ce répertoire utilise :
TotalFiles=FileListBox1.ListCount

Test si le directory est plein ou vide et fait la copie :

if totalfiles=0 then
MkDir NouveauRépertoire
else
MkDir NouveauRépertoire
i=0
do until i = TotalFiles
FileListBox1.ListIndex = i
filecopy FileListBox1.FileName, Chemindistant & "" & FileListBox1.FileName
i=i+1
loop
end if
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
drpsico Messages postés 208 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 15 août 2005
25 sept. 2004 à 15:30
pk sa sa marche pas

Private Sub File1_Click()
FileListBox1.Path = "c:\d"
TotalFiles = FileListBox1.ListCount
If TotalFiles = 0 Then
MkDir c
Else
MkDir c
i = 0
Do Until i = TotalFiles
FileListBox1.ListIndex = i
FileCopy FileListBox1.FileName, Chemindistant & "" & FileListBox1.FileName
i = i + 1
Loop
End If

End Sub
==drpsico==
0
drpsico Messages postés 208 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 15 août 2005
25 sept. 2004 à 15:38
c pluto sa mes g toujour 2 erreur je voudrai savoir pk

Private Sub Command1_Click()
FileListBox1.Path = "c:\d"
TotalFiles = FileListBox1.ListCount
If TotalFiles = 0 Then
MkDir "c:\c"
Else
MkDir "c:\c"
i = 0
Do Until i = TotalFiles
FileListBox1.ListIndex = i
FileCopy FileListBox1.FileName, Chemindistant & "" & FileListBox1.FileName
i = i + 1
Loop
End If
End Sub
==drpsico==
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
25 sept. 2004 à 17:02
Sorry du retard de la réponse, j'ai été faire 2-3 courses, j'ai vérifier et voici le script final qui fonctionne :

============================================
File1.Path = "c:\Lotus"
TotalFiles = File1.ListCount

On Error Resume Next
MkDir "c:\D"
On Error GoTo 0

If TotalFiles <> 0 Then
i = 0
Do Until i = TotalFiles
File1.ListIndex = i
FileCopy File1.Path & "" & File1.FileName, "c:\D" & File1.FileName
i = i + 1
Loop
End If
============================================
0
drpsico Messages postés 208 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 15 août 2005
25 sept. 2004 à 17:05
sa c le dossier de destination On Error Resume Next
MkDir "c:\D"

==drpsico==
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
25 sept. 2004 à 17:17
En fait la partie "On Error Resume Next" permet de passer au l'instruction suivante si le répertoire "c:\D" éxiste déjà. En Gros cela passe à la suite lorsqu'il y a une erreur, et comme si le directory existe déjà cela retourne une erreur alors voilà.

Ensuite "On Error Goto 0" annule cette gestion d'erreur

MKDir sert à créer un répertoire, en l'occurence : 'c:\D'

Chris
0
drpsico Messages postés 208 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 15 août 2005
25 sept. 2004 à 17:25
FileCopy File1.Path & "" & File1.FileName, "c:\D" & File1.FileName
c la destination
==drpsico==
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
25 sept. 2004 à 18:52
Pourquoi se casser le chou avec ça alors que le filesystemobject en VB6 fait ça très bien ?

Voilà un exemple, presque clé en main, seules contraintes, dans Origine, il vaut mieux pas mettre c:\* ou c:\windows\* sinon, ça risque de prendre du temps. Et le dossier Arrivee ne doit pas se trouver dans le dossier Origine.

' Dans Projet/Références... "Microsoft Scripting Runtime"

Dim fso As FileSystemObject

Private Sub Command1_Click()
Copier_Dossier "c:\Temp\*", "c:\truc"
End Sub

Sub Copier_Dossier(Origine As String, Arrivee As String)

  Set fso = CreateObject("Scripting.FileSystemObject")
  
  If fso.FolderExists(Arrivee) Then
    If Right$(Arrivee, 1) <> "" Then Arrivee = Arrivee & ""
    Changer_Attribut Arrivee
  Else
    fso.CreateFolder Arrivee
  End If
  
  fso.CopyFolder Origine, Arrivee

End Sub

Private Sub Changer_Attribut(Dossier As String)
Dim fld0 As Folder
Dim fld1 As Folder
Dim subfld As Folder
Dim f As File

Set fld0 = fso.GetFolder(Dossier)

'Parcourir les sous-dossiers du répertoire
For Each subfld In fld0.SubFolders

  ' Changer l'attribut du sous-dossier si readonly  If subfld.Attributes ReadOnly Then subfld.Attributes subfld.Attributes - 1
  ' Parcourir les fichiers du sous-dossier et changer l'attribut ReadOnly
  Set fld1 = fso.GetFolder(Dossier & subfld.Name & "")
  For Each f In fld1.Files    If f.Attributes ReadOnly Then f.Attributes f.Attributes - 1
  Next
  ' Recherche récursive
  Changer_Attribut Dossier & subfld.Name & ""
  
Next

End Sub


Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
damdam04 Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 20 novembre 2006
16 mai 2005 à 18:24
canislupus c'est terrible ta source.... je cherchais ça depuis oula ça fait un baille...



merci encore



damdam04
0
drpsico Messages postés 208 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 15 août 2005
16 mai 2005 à 19:42
slt tu pourrai me dire pk il me mes une erreur sur
Dim fso As FileSystemObject

il me dit type no defined

merci

psicofox6@hotmail.com==
0
damdam04 Messages postés 27 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 20 novembre 2006
21 mai 2005 à 23:18
tu déclares ça dans ta source : "Set fso =
CreateObject("Scripting.FileSystemObject")" n'oublies pas de déclarer
dans projet/préférence l'option "Microsoft Scripting Runtime"

déclare aussi "Windows Script Object Model"

voila et normalement ça doit rouler....
0
Rejoignez-nous