Création de dossier

ahhhh en voilà une bonne nouvelle...

Fred

On avance doucement ...

Sub VerifierCreerDossierPDF()

        Dim CheminComplet As String

                CheminComplet = Range("Repert").Value
                CheminComplet = Left(CheminComplet, Len(CheminComplet) - 1)

                MsgBox CheminComplet

    ' Vérifie si le dossier existe

                If Dir(CheminComplet, vbDirectory) = "" Then
                        MsgBox "Le dossier n'existe pas..."
                        GoTo CreerDossierPDF
                Else
                        MsgBox "Le dossier existe..."
                        Exit Sub
                End If

CreerDossierPDF:
                '       MsgBox "Créer le dossier .."
                MkDir MacScript("return POSIX path of (" & Chr(34) & CheminComplet & Chr(34) & ")")

End Sub

Cette fois la création du dossier fonctionne bien ...

Mais plus la vérification préalable de l'existence du dossier à créer !

(avec ou sans la 4e ligne de code)

Mais je ne désespère pas

Bonjour

Il faut faire la création du dossier à la place ou tu as mis le goto CreationdossierPdf.. et enlevéer le goto..

je suis sur téléphone je ne peux pas corriger facilement ton code

fred

Bonjour,

Désolé du retour tardif mais j'étais absent hier.
Mais je vois que plusieurs personnes vous ont déjà répondu. Je ne voudrais pas vous faire recommencer des tests
Déjà au vu d'un de vos posts dans lequel vous dites

J'ai aussi constaté que le séparateur est / et non : comme sur la commande qui crée bien un dossier sur le bureau (voir plus haut)

: --> ce séparateur était utilisé précédemment et notamment avec excel 2011
/ --> c'est le séparateur à utiliser aujourd'hui.
Ce qui est interpellant c'est que vos msgbox vous renvoient deux adresses différentes.

Vous avez bien raison, les caractères accentués ne sont guère appréciés

A ne jamais faire avec VBA, c'est la porte ouverte aux soucis. Je ne compte pas le nombre de fois où je l'ai écrit et où j'ai constaté des problèmes.
Donc pas d'accents, ni d'espaces ! Pensez toujours Anglais

Pour votre souci, si encore intérêt, je vous posterai ce que j'avais préparé hier

Crdlt

Bonjour voici une correction du code

Sub VerifierCreerDossierPDF()

        Dim CheminComplet As String

                CheminComplet = Range("Repert").Value
                CheminComplet = Left(CheminComplet, Len(CheminComplet) - 1)

                MsgBox CheminComplet

    ' Vérifie si le dossier existe
                If Dir(CheminComplet, vbDirectory) = "" Then
                        MsgBox "Le dossier n'existe pas... creation"
  MkDir MacScript("return POSIX path of (" & Chr(34) & CheminComplet & Chr(34) & ")")
                End If
End Sub

Fred

Merci Fred, effectivement votre version est plus courte.

Mais comme je disais dans mon précédant message, le test ne fonctionne pas.

Partant d'un dossier inexistant, si j'exécute la commande il est reconnu comme absent et créé. Si dans la foulée je relance la commande, le dossier n'est pas reconnu et la tentative de création aboutit à une erreur "75" Erreur d'accès chemin/fichier.

Par contre, si le dossier en question contient quelque chose, il est bien reconnu comme existant et la macro se termine sans erreur.

Je continue donc mes recherches

Si dans la foulée je relance la commande, le dossier n'est pas reconnu et la tentative de création aboutit à une erreur "75" Erreur d'accès chemin/fichier

Pouvez-vous expliquer ?
A ce moment là range("Repert").value contient quoi. Toujours la valeur Thisworkbook.path ?

La valeur Range ('Repert") ne bouge pas, elle est attribuée en dur dans une cellule par Private Sub Workbook_Open()

                CheminComplet = Range("Repert").Value
                CheminComplet = Left(CheminComplet, Len(CheminComplet) - 1)

Que je laisse la deuxième ligne ci-dessus active ou que ja la passe en commentaire, le résultat est identique

Le répertoire absent ou non vide est reconnu correctement

Le repertoire présent mais vide n'est pas reconnu, donc tentative de création et message d'erreur ...

Pourriez-vous tester comme ceci :

Je n'ai pas tenu compte du range("repert")

Sub VerifierCreerDossier()
Dim dossierStr As String
Dim TestStr As String
Dim chemin As String

chemin = ThisWorkbook.Path & Application.PathSeparator & "DossierPDF"
dossierStr = MacScript("return POSIX path of (" & Chr(34) & chemin & Chr(34) & ")")
On Error Resume Next
TestStr = Dir(dossierStr & "*", vbDirectory)
On Error GoTo 0
If TestStr = vbNullString Then
    MsgBox "Le dossier n'existe pas"
    MkDir dossierStr
    MsgBox "dossier créé"
End If
End Sub

C'est ce que je vous avais préparé hier et que je n'ai pas eu le temps de poster
Si vous relancez pour un autre dossier pensez à modifier dossierPdf par autre chose

Le repertoire présent mais vide n'est pas reconnu,

Je me pose la question du pourquoi. Il s'agit d'un sous sous dossier ou d'un nouveau dossier à ajouter au dossier dans lequel se trouve votre fichier contenant le code (donc un sous dossier) ?

Merci Dan, et tous les autres ayant participés à cet échange.

Cette fois ça fonctionne comme il faut.

Quand je déplace mon fichier Excel, DossierPDF est créé dans le même répertoire, c'est ce que je voulais, parfait.

Encore une fois merci à tous

Je me pose la question du pourquoi. Il s'agit d'un sous sous dossier ou d'un nouveau dossier à ajouter au dossier dans lequel se trouve votre fichier contenant le code (donc un sous dossier) ?

Je souhaite simplement, que quel que soit l'emplacement de mon fichier xlsm, le répertoire "DossierPDF" soit au même endroit.

Pour ce faire, j'inclue dans "Private Sub Workbook_Open()" (et non dan "Sub Auto_Open) la commande

Range("Repert").Value = ThisWorkbook.Path & "/DossierPDF/"

(La macro qui crée les rapports PDF ira les ranger à cet endroit).

A la suite de la déclaration de "Repert" j'ai donc besoin de vérifier si "DossierPDF" existe et/ou de le créer le cas échéant, sinon mes fichiers PDF seraient créés et "enregistrés" dans un repertoire inexistant, donc pas enregistrés ... perdus en fait.

J'admets que ma formulation est un peu tarabiscotée, mais j'espère néanmoins compréhensible.

Rechercher des sujets similaires à "creation dossier"