Erreur 70

Signaler
Messages postés
33
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
20 juin 2008
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
re re re re re re bonjour :

ce coup-ci quand je lance mon code j ai une erreur 70 qui apparait et qui me dit que je n ai pas l accees... j ai cherche sur internet et en premier lieu j avais un probleme de \ mais la ne vois vraiement pas pkoi...

merci de m aider

Dim Source1 As String
Dim Source2 As String
Dim Source3 As String




For i = 2 To taille


    Source1 = "K:\Dept LIAISONS\DCLA\PYLONES\13. DOCUMENTATION PYLONES\13.03 PLANS" & Cells(i, 37) & ".Tif"
   
    Const Destin1 = "D:\Documents and Settings\duclouxant\Mes documents\exo tower"
 
    Dim objOFS1 As Variant
   
    Set objOFS1 = CreateObject("Scripting.FileSystemObject")
   
    If (objOFS1.FileExists(Source1)) Then
       
        objOFS1.CopyFile Source1, Destin1
       
    End If
   
    Set objOFS1 = Nothing
   
   
     Source2 = "K:\Dept LIAISONS\DCLA\PYLONES\13. DOCUMENTATION PYLONES\13.03 PLANS" & Cells(i, 37) & ".pdf"
   
    Const Destin2 = "D:\Documents and Settings\duclouxant\Mes documents\exo tower"
 
    Dim objOFS2 As Variant
   
    Set objOFS2 = CreateObject("Scripting.FileSystemObject")
   
    If (objOFS2.FileExists(Source2)) Then
       
        objOFS2.CopyFile Source2, Destin2
       
    End If
       
    Set objOFS2 = Nothing
   
    Source3 = "K:\Dept LIAISONS\DCLA\PYLONES\13. DOCUMENTATION PYLONES\13.03 PLANS" & Cells(i, 37) & ".wmg"
   
    Const Destin3 = "D:\Documents and Settings\duclouxant\Mes documents\exo tower"
 
    Dim objOFS3 As Variant
   
    Set objOFS3 = CreateObject("Scripting.FileSystemObject")
   
    If (objOFS3.FileExists(Source3)) Then
       
        objOFS3.CopyFile Source3, Destin3
       
    End If
   
    Set objOFS3 = Nothing
   
    Next i
   
  
   


End Sub


 




 

7 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
ça t'apprendra à utiliser FSO dans un environnement VBA ou VB6 !

na!

pas compris le tout...
l'utilité de cumuler les Destin1, Destin2, Destin3 ; de créer objOFS1, objOFS2 et objOFS3 ....

a voir si le repertoire destination existe, si tu y a les droits d'accès...
Messages postés
33
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
20 juin 2008

en gros je vais t'expliquer ou vous expliquer ma macro...

alors : je recupere dans une celleule excel un nom de fichier, or celui-ci peut avoir 3 extensions possibles soit .Tif soit .pdf soit .wmg c pourquoi j ai creer Destin1/2/3 et ObjFS1/2/3 c ets pour les 3 extensions differentes...
c'est bete ce qu j ai fais?

et en ce qui concerne le repertoire destination j ai bien verifie j ai effectivement les droits...

donc je ne sais que faire a part tue mon voisin de bureau a coup de clavier ....
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
si tu avais 18 extensions possibles, tu dupliquerais tout aussi inutilement tes variables, ton code, etc ?

fais une fonction, factorise..... (et vires moi ce fichui FSO, qui, comme son nom l'indique est a reserver pour le Scripting)
Messages postés
33
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
20 juin 2008

je suis desole mais je suis novice encore.... si je le suipprime comment vais je alors faire marcher ma commande de copier/coller et comment vais je faire tourner mon test d existence de fichier ?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Option Explicit

Private Declare Function GetFileAttributes Lib "kernel32.dll" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Private Declare Function MkDir Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long
Private Const INVALID_FILE_ATTRIBUTES As Long = &HFFFFFFFF

Public Function DoesExist(ByRef vsPath As String) As Boolean
DoesExist = (GetFileAttributes(vsPath) <> INVALID_FILE_ATTRIBUTES)
End Function

Public Sub FileCopy(ByVal vsFilePath As String, ByVal vsDestination As String, Optional ByVal vbOverwrite As Boolean = False)
Dim nPos As Long
Dim sFileName As String
'# On ajoute le "" final, si besoin (le parametres est en ByVal, donc pas de souci)
If Right$(vsDestination, 1) <> "" Then
vsDestination = vsDestination & ""
End If
'# Si le fichier source existe...
If DoesExist(vsFilePath) Then
'# Et si le repertoire de destination est accessible... (l'arborescence sera créée si besoin)
If MkDir(vsDestination) <> 0 Then
'# On récupère le nom du fichier
nPos = InStrRev(vsFilePath, "")
If nPos Then
sFileName = Mid$(vsFilePath, nPos + 1)
'# Si le fichier cible existe, et que l'on a demandé à ne pas l'ecraser...
If DoesExist(vsDestination & sFileName) And vbOverwrite = False Then
'# On quitte la procédure
Exit Sub
End If
'# Sinon, on copie le fichier.
VBA.FileCopy vsFilePath, vsDestination & sFileName
End If
End If
End If
End Sub

Public Sub Test()
Const SRCFOLDER = "K:\Dept LIAISONS\DCLA\PYLONES\13. DOCUMENTATION PYLONES\13.03 PLANS"
Const DSTFOLDER = "D:\Documents and Settings\duclouxant\Mes documents\exo tower"
Dim i As Long
'# Colonne 37 ; ligne 2 à la fin...
For i = 2 To Cells.SpecialCells(xlCellTypeLastCell).Row
'# On tente la recopie de notre fichier
FileCopy SRCFOLDER & Cells(i, 37) & ".tif", DSTFOLDER
FileCopy SRCFOLDER & Cells(i, 37) & ".pdf", DSTFOLDER
FileCopy SRCFOLDER & Cells(i, 37) & ".wmg", DSTFOLDER
Next i
End Sub
Messages postés
33
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
20 juin 2008

je ne peux que te remercier....
tu viens de me rendre heureux pour mon week end...
merci beaucoup , bon week end, bonne fete de la musique!
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
le tout est que tu en tire quelques lecons...

1- pas de FSO hors fichier VBS
2- factoriser le code dans des fonctions, réutilisables
3- éviter de multiplier inutilement les variables