[VBA] - Erreur "Path does not exists" - Chemin pour enregistrement

Bonjour,

Lorsque je souhaite définir un dossier de destination depuis VBA, en utilisant ce code :

Private Sub CommandButton14_Click()
x = ""
If Sheets("Options").Cells(54, 1) = "" Then
    x = ThisWorkbook.path & "\DEVIS"
Else
    x = Sheets("Options").Cells(54, 1)
End If
    Call choix_dossier          'Me
    Sheets("Options").Cells(54, 1) = x
End Sub
Public Sub choix_dossier()
Dim dossier$

dossier = ""
With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = x
    .Show
        If .SelectedItems.Count > 0 Then
           dossier = .SelectedItems(1)
        Else
           dossier = x
        End If
End With
x = ""
If dossier <> "" Then x = dossier
End Sub

> Lorsque le chemin est déjà renseigné, alors je veux qu'il affiche le chemin enregistré automatiquement ; sinon, je veux qu'il ouvre le chemin qui pointe vers "DEVIS".

Mais, si je ne procède à aucune modification et valide directement après l'ouverture, je me retrouve avec l'erreur "Path does not exist. Check the path and try again".

Si je ne sélectionne pas de dossier, Excel considère que le chemin n'existe pas (alors qu'il existe bel et bien). Savez-vous s'il y a moyen d'éviter cette erreur ?

Actuellement tout fonctionne bien, mais j'aimerais simplement qu'Excel vérifie correctement si le chemin existe ou pas.

J'ai essayé de désactiver les évènements : Application.EnableEvents = False, sans succès.

Bonne journée !

Bonjour,

je ne suis pas sûr d'avoir bien saisi ce que vous voulez faire

Pour résumer :
Si en A54 la cellule est vide, vous voulez vous positionner sur le répertoire Devis et/ou ajouter devis en A54 ?
Si en A54 vous avez un nom, vous voulez ouvrir le répertoire sur ce nom et/ou compléter la case A54 du répertoire choisi ?

Sinon vous avez essayé en mettant On error resume next au début de votre procédure choix_dossier ?

Bonjour,

Merci de votre réponse.

Si en A54 la cellule est vide, vous voulez vous positionner sur le répertoire Devis et/ou ajouter devis en A54 ?

Si en A54 vous avez un nom, vous voulez ouvrir le répertoire sur ce nom et/ou compléter la case A54 du répertoire choisi ?

C'est effectivement ce que mon code fait, et cette partie fonctionne bien.
En fait tout fonctionne, mais lorsque j'ouvre la fenêtre de sélection de dossier via :

Application.FileDialog(msoFileDialogFolderPicker)

Si le dossier affiché est déjà le bon (dans mon cas "DEVIS") et que, par conséquent, je clique simplement sur "OK" pour valider, je me retrouve avec l'erreur "Path does not exist". (J'ai effacé volontairement le nom du dossier qui se trouve dans le dossier "DEVIS").

sans titre sans titre2

Si je clique sur cancel, je peux traiter l'action dans le code, mais si je clique sur OK, j'ai un message d'erreur de Windows qui m'empêche toute gestion. Et cette erreur n'est pas "vrai" en plus.

Pour que ça fonctionne, il faut que je clique sur le chemin d'accès, puis, que je valide, ou alors que je clique sur Cancel.

Est-ce qu'il existe un moyen d'éviter cette erreur ?

Ou bien d'enregistrer le chemin d'accès initial et que lors de la vérification (clic sur OK), Windows recherche le chemin qui a été fourni pour l'ouverture de la fenêtre de sélection (au lieu de considérer que le chemin est vide).

Bonne journée.

Je peux fournir un document exemple un peu plus tard.

Salut si ce n'est que le chemin qui t'intéresse alors ceci devrais faire l'affaire.

Pour ma part je n'ai pas bien compris ce que contient Sheets("Options").Cells(54, 1). (qui serait d'ailleur plus lisible avec un champ nommé)

Private Sub CommandButton14_Click()
    Dim InitialPath
    With Sheets("Options").Cells(54, 1)
        If Dir(.Value) = "" Or .Value = vbNullString Then
            InitialPath = ThisWorkbook.Path & "\Devis"
        Else
            InitialPath = .Value
        End If
        .Value = choix_dossier(InitialPath)
    End With
End Sub

J'ai passé la sub choix_dossier en Fonction, si elle est dans le même module que le Formulaire passe là en privée.

Public Function choix_dossier(InitialPath)

With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = InitialPath
    .Show
        If .SelectedItems.Count > 0 Then
           choix_dossier = .SelectedItems(1)
        Else
           choix_dossier = InitialPath
        End If
End With
End Function

J'espère que c'est ce que tu recherche, sinon nous fournir de meilleures explications.

Re,

Avez-vous essayé ce que je vous ai écrit au sujet de l'instruction On error resume next à rajouter ?

Je peux fournir un document exemple un peu plus tard.

Voir si Jean Paul le veut vu qu'il vous a répondu

Crdlt

Bonsoir,

Merci pour ces réponses.

L'utilisation de On error resume nextn'a pas résolu la situation

Le code proposé par Jean-Paul fonctionne de la même manière que mon code et génère la même erreur lorsque je clique sur "OK" si je n'ai pas choisis de dossier.

Je n'ai pas toujours le réflexe d'utiliser des fonctions, et j'aime bien la manière dont vous avez présenté le code, alors je pense que je vais m'en servir !

Savez-vous si l'utilisation de fonctions rend le fonctionnement du code plus rapide ? J'avais opté pour une macro que j'appelais au besoin.

Mon problème initial persiste. Je pense qu'à l'ouverture de la fenêtre de sélection du dossier, Excel considère que le chemin d'accès est vide ; si je clique directement sur OK, alors Excel considère qu'un chemin d'accès vide n'est pas valide. Et pourtant le chemin d'accès affiché est correct, je souhaite simplement ne pas le modifier et sauter l'erreur si je clique sur OK.

Salut le fil,

Peux-tu nous dire sur quelle ligne tu as l'erreur, et quel type d'erreur, car sans infos supplémentaires cela va être difficile de t'aider

Bonsoir,

Voici un fichier test qui exécute la macro présentée dans ce fil.

En cliquant sur "CommandButton1", il apparaîtra une fenêtre pour sélectionner le dossier qui nous intéresse.

Mais en l'occurrence, le dossier "DEVIS" est déjà affiché, alors, pas besoin de sélectionner et nous cliquons sur "OK".

C'est là que l'erreur apparaît, car le dossier n'a pas été trouvé par Excel.

8fichier-test.zip (19.02 Ko)

Salut le fil

Je demande aux gens de ne pas copier les codes bêtement, et c'est justement ce que j'ai fais sans trop regarder.

Tu dois ajouter un "\" à la fin du chemin sinon plantage.

Private Function choix_dossier(inpth)
With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = inpth & IIf(Right(inpth, 1) = "\", "", "\")
    .Show
'...
'...

Bonjour,

En effet ! C'était juste une histoire de séparateur...

Avec le "\" à la fin du chemin d'accès, je n'ai plus l'erreur.

Merci du coup de main, il fallait le repérer !

Rechercher des sujets similaires à "vba erreur path does exists chemin enregistrement"