CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 2018
-
27 avril 2011 à 22:25
CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 2018
-
20 févr. 2012 à 12:02
Bonjour à tous,
Avec une chaîne de caractère SANS ESPACE comme "D:\AEROLEAK\Sauve\FRANCE_TELECOM\HARDOY",dans la form ExportFichier.NomTxt.Text, CreateObjet plante...(Erreur d'exécution N°76 : Chemin d'accès introuvable)
En fait, dans cet exemple, Une partie des dossiers existe déjà (D:\AEROLEAK\Sauve\), mais d'autres sont absents et sont donc à créer (FRANCE_TELECOM\HARDOY\)
Au début j'avais un nom de dossier avec un espace, et j'ai pensé que c'était la source du problème, mais non, cela n'a rien changé quand je l'ai supprimé.
Je ne vois pas où ça "coince".
Voila la Sub complète
Private Sub ButtonOK_Click()
'= Réponse OK : Enregistrer le Fichier avec les Chemin et Nom proposés ou saisis
Application.ScreenUpdating = False 'Figer l'affichage
If ExportFichier.CheminTxt.Text "" Or ExportFichier.NomTxt.Text "" Then 'Si les Nom ou Chemin du Fichier sont nuls
Exit Sub 'Quitte
' ========
Else 'Sinon...
CheminFichier = ExportFichier.CheminTxt.Text 'Reprend le Chemin
Dim fs As Scripting.FileSystemObject
Set fs = New Scripting.FileSystemObject
If Not fs.FolderExists(CheminFichier) Then 'Teste si le répertoire existe
'!!!!!!!
fs.CreateFolder (CheminFichier) 'Création du répertoire si absent
'!!!!!!!
End If
Set fs = Nothing
NomFichier = ExportFichier.NomTxt.Text 'Reprend le Nom
'Vérifie l'existence d'un fichier du même nom et propose une action ...
FichierExistant = Dir(CheminFichier & NomFichier & ".xls", vbDirectory) 'Recherche si le fichier existe
'si Existe pas :
If FichierExistant "" Or FichierExistant "." Then 'si le fichier n'existe pas...
Range("C100").Value = ExportFichier.CheminTxt.Text 'Affecte le Chemin
Range("C101").Value = ExportFichier.NomTxt.Text 'Affecte le Nom
ExportFichier.Hide 'Ferme la Box ExportFichier
Sauvegarder 'Appelle la macro Sauvegarder
'si Existe :
Else 'Charge les données dans la Box SaveMsg
SaveMsg.Caption = "Destination..." 'Titre
SaveMsg.MsgTxt = "Enregistrer sous " & CheminFichier & NomFichier 'Texte Messsage
SaveMsg.ButtonYes.Caption = "Ecraser le Fichier existant." 'Texte Bouton OUI
SaveMsg.ButtonNo.Caption = "Modifier la Destination." 'Texte Bouton NON
SaveMsg.Show 'Affiche la Box SaveMsg
End If
End If
End Sub
Ce qui fait qu'après ta plus qu'a faire un parcours de ton tableau avec vérification d'existence..(Concaténation des éléments du tableaux pour le chemin complet)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 27 avril 2011 à 22:37
Salut
Ce doit être parce que CreateFolder (et pas CreateObject) ne sait créer que le dernier répertoire, pas une arborescence entière.
Il te faut donc décomposer le chemin à créer (avec Split par exemple) puis, à partir de la racine, tester si les répertoires existent progressivement.
En faisant une recherche de 30 sec avec "vba createfolder" il y a des exemples tout fait, appuyés par des commentaires constructifs.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate) [img]http://allproj
CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 20181 28 avril 2011 à 11:49
Merci Jack de tes réponses,
J'ai cherché (bien plus que 20 secondes) et je n'ai pas réussi à trouver les exemples évoqués (l'aide VBA est plus que mince sur le sujet).
Je n'ai pas réussi non plus à transposer le code du lien de VB6 (Merci RenField) en VBA et exploiter cette fonction
J'avais bien remarqué que CreateFolder me marchait que pour UN SEUL répertoire ajouté à un chemin existant.
Mais, c'est un chemin COMPLET (d'un nombre de sous répertoires inconnu à l'avance) que je dois exploiter.
Merci de bien vouloir éventuellement me guider pour l'utilisation de la fonction "Split", sachant que je peux aussi avoir des noms de sous répertoire comprenant un espace, comme dans mon exemple :
"D:\AEROLEAK\Sauve\FRANCE TELECOM\HARDOY", où en l'espèce seul le chemin "D:\AEROLEAK\Sauve" existe, et qu'il faut donc créer la suite.
Bien cordialement
Rataxes64
Vous n’avez pas trouvé la réponse que vous recherchez ?