recherche dossier cible

sev

XLDnaute Nouveau
Bonsoir le foum,

Après plusieurs recherches, je ne trouve pas.
En fait, j'ai défini un chemin cible lorsque je fais un 'enregistrer sous'.
si le chemin cible n'existe pas, je voudrais vérifier si le répertoire parent existe et ainsi de suite...

Si le noms de mon fichier est par exemple : "1-2-3-4-5.xlsm"

l'enregistrement doit se faire sous
chemin cible : D:/1/2/3/4/5

si le dossier 6 n'existe pas, voir si le répertoire précédent existe (4) ...

Ci-joint un exemple

J'ai essayé avec le code, mais je n'rrive pas faire autre chose, je suis un peu perdue :
Code:
Sub Tst()

Dim chemin1 As String
Dim chemin2 As String

Dim i As Integer


chemin1 = Sheets("F1").Range("A2")
chemin2 = Sheets("F1").Range("A3")

Fichier = Dir(chemin1)
           
            If chemin1 = "" Then
            i = chemin2 'And Fichier = ""
       Else: i = chemin1
             
            Application.GetSaveAsFilename (i)


End If
End Sub
 

Pièces jointes

  • test plusieurs chemin.xlsm
    15.9 KB · Affichages: 49
  • test plusieurs chemin.xlsm
    15.9 KB · Affichages: 51
  • test plusieurs chemin.xlsm
    15.9 KB · Affichages: 53

eriiic

XLDnaute Barbatruc
Re : recherche dossier cible

Bonsoir,

Proposition :
Code:
Sub test()
    Dim chemin As String, i As Long, fini As Boolean
    chemin = Replace([B8], "-", "\")
    While Not fini
        If Dir(chemin, vbDirectory) = "" Then
            i = InStrRev(chemin, "\")
            If i > 1 Then chemin = Left(chemin, i - 1)
        Else
            fini = True
        End If
    Wend
    If Len(chemin) = 2 Then chemin = "Aucun"
    MsgBox ("Chemin existant : " & chemin)
End Sub

J'utilise B8, j'y ai changé le / en \

eric
 

Pièces jointes

  • Copie de test plusieurs chemin.xlsm
    19.1 KB · Affichages: 44

sev

XLDnaute Nouveau
Re : recherche dossier cible

Bonjour et merci pour ta réponse,

Ce code fonctionne visiblement très bien !! Mais je n'arrive pas à l'appliquer à mon cas, je n'arrive pas a remplacer les messages par l'affichage de la boite de dialogue 'enregistrer sous'... Peux-tu m'aider stp ?
 

eriiic

XLDnaute Barbatruc
Re : recherche dossier cible

Bonjour,

Déjà avec *.xslm en B7 au lieu de *.xlsm ça ne devait pas aider, la dyslexie pardonne rarement sur excel... ;-)

Voir proposition dans fichier joint.
Reste un pb que je ne m'explique pas : le nom du fichier n'est pas pré-rempli dans la boite de dialogue sur 2010, alors qu'il l'est bien sur 2003 (?)
Si quelqu'un d'autre a une idée du pourquoi...

eric
 

Pièces jointes

  • Test plusieurs chemin.xlsm
    20.7 KB · Affichages: 57
  • Test plusieurs chemin.xlsm
    20.7 KB · Affichages: 65
  • Test plusieurs chemin.xlsm
    20.7 KB · Affichages: 65

eriiic

XLDnaute Barbatruc
Re : recherche dossier cible

Bonjour,

Problème du nom de fichier n'étant pas pré-rempli sur 2010 : j'ai posé la question ici.
Si on utilise un caractère générique dans l'extension de FilterIndex alors il ne faut pas mettre l'extension du fichier dans FileFilter.
La ligne devient donc :
Code:
Sauvegarde = Application.GetSaveAsFilename(chemin & [B7], FileFilter:="Fichiers Excel (*.xlsm), *.xlsm")
eric
 
Dernière édition:

sev

XLDnaute Nouveau
Re : recherche dossier cible

Re, petite question, j'ai modifier les noms des variables (i, j, n) en (zz,yy,xx) parce que ces lettres étaient déjà utilisée, et depuis le code ne marche plus... Ce n'est pas possible de faire ça ?

PI, Je les ai aussi déplacées en début de code (avant sub...)
 

eriiic

XLDnaute Barbatruc
Re : recherche dossier cible

Bonjour,

Tu parles de choses qui ne sont pas dans le fichier déposé.

Oui, tu as le droit, à condition de bien la changer partout évidemment.
Par contre si elle est déclarée hors module elle ne sera plus locale mais globale. Ca influe fortement sur le fonctionnement.

Une variable locale n'est vue que de la procédure où elle est crée, et disparait lorsque tu quittes cette procédure.
A l'intérieure de cette procédure tu peux appeler une autre procédure qui a un nom de variable qui se retrouve : elles seront indépendantes l'une de l'autre.

Une variable globale sera vue par toutes les procédures et leur sera commune.
Ce n'est à faire que si c'est vraiment nécessaire, et en toute connaissance de cause.
Aucun intérêt autrement...

eric
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 336
Messages
2 087 387
Membres
103 534
dernier inscrit
Kalamymustapha