Vérifier qu'un dossier existe, sinon le créer et sauvegarder le fichier

Bonjour à tous,

Je pose une question que j'ai déjà retrouvée plusieurs fois mais je m'y perds dans les formules entre les dir, mkdir...

Etant débutant, voici la problématique de mon fichier. Dans 2 UserForms : Add_DT_in et Add_DT_out, le bouton de validation permet de générer un pdf basé sur un template caché dans l'excel.

Ce que je souhaiterais :

Enregistrer ce PDF avec en nom, le nom du client & le numéro de ticket, dans un dossier. Si le chemin existe, parfait. S'il n'existe pas, il faudrait le créer.

Je suis parvenu à écrire un code me permettant de ranger le PDF au bon endroit. En revanche, je ne sais pas faire le contrôle de l'existence du chemin et in fine la création du dossier.

Dans mon cas et avec le fichier ci-joint, quel code devrais-je écrire dans mon bouton "Valider" ? Dois-je créer un module qui serait relier à ce bouton ?

Merci de m'éclairer sur la question.

En vous souhaitant une très bonne journée.

Bien cordialement,

31delivery-ticket2.xlsm (100.86 Ko)

Bonjour,

Voici votre fichier auquel j'ai rajouté une fonction (dans le module 1) qui permet de tester et le cas échéant créer les sous-dossiers qui n'existent pas dans le chemin entré en argument. Ensuite la fonction renvoie le répertoire :

Function RepValide$(repertoire$)

repertoire = Left(repertoire, Len(repertoire) + (repertoire Like "*\"))

If Dir(repertoire, vbDirectory) = "" Then
    temp = Split(repertoire, "\"): dossier = temp(0)
    For i = 1 To UBound(temp)
        dossier = dossier & "\" & temp(i)
        If Dir(dossier, vbDirectory) = "" Then MkDir dossier
    Next i
End If

RepValide = repertoire

End Function

J'ai donc rajouté cette fonction à vos deux boutons en ajoutant des variables pour rendre les choses plus claires. Je n'ai rien testé donc il est possible qu'il faille déclarer ces variables pour une bonne exécution.

Cdlt,

Merci 3GB,

Le code fonctionne parfaitement et j'ai effectivement dû déclarer trois variables.

J'aurais un dernier point là-dessus :

Ceci fonctionne pour tous les chemins me concernant.

Maintenant, si je partage cet excel avec quelqu'un d'autre, quelle instruction mettre pour que le "user" change en fonction de la personne qui ouvre l'Excel.

En effet, users/deepblue ne fonctionne que sur mon PC. Sur celui d'un autre non. Connaitriez-vous un moyen de changer le nom de l'utilisateur automatiquement en fonction du PC ou même une autre astuce pour contourner ce problème ?

Merci et bon après-midi.

Bien cordialement,

Bonjour,

C'est une découverte récente pour moi donc je n'ai pas de certitude absolue mais essayez en remplaçant le chemin placé en argument de la fonction par :

dossier = RepValide(Environ("USERPROFILE") & "\Deep....")
'ou en 2 temps si jamais
dim stemp$
stemp = Environ("USERPROFILE") & "\Deep...."
dossier = RepValide(stemp)

Cdlt,

Bonsoir,

Cela fonctionne parfaitement avec la deuxième façon de faire, en deux temps.

C'est vraiment super. Je vous remercie pour votre aide et pour cette leçon.

En vous souhaitant une bonne continuation et une bonne soirée.

Bien cordialement,

Rechercher des sujets similaires à "verifier dossier existe sinon creer sauvegarder fichier"