VBA Excel : Pas moyen d'enregistrer !

Résolu
gabier2008 Messages postés 2 Statut Membre -  
 Septime -
Bonjour à tous,

Je butte sur un problème qui doit être tout bête :

Je crée un classeur, puis je veux l'enregistrer sous le nom de mon choix, en donnant le chemin complet du fichier à créer, sous la forme d'un String nommé Path.

Workbooks.add
Path="C:\Nom"
ActiveWorkbook.SaveAs(Path)

Ci-dessus la variable Path est donnée par un String explicite, ça marche impeccable
Mais ci-dessous la variable est fabriquée avec un String revenant d'une fonction Dir, et là rien n'est enregistré (Je fais ça parce que je veux enregistrer une version modifiée du fichier d'origine, dans un autre répertoire mais sous le même nom)

Path1="c:\Repert\*.xls"
Fichier=Dir(Path1)
Workbooks.Add
Path2="c:\Repert2"
MkDir(Path2)
ActiveWorkbook.SaveAs(Path2 & "\" & Fichier)

J'ai bien vérifié que ci-dessus, si je remplace Fichier par "Nom", ça marche. C'est donc le fait que Fichier ne doit pas être tout à fait un String, mais qu'est-ce que c'est ? Si j'insère un MsgBox(Fichier), l'affichage est correct ! Alors je ne comprends pas...

:) Gabier2008
Configuration: Windows XP
Internet Explorer 7.0

2 réponses

  1. plubarj Messages postés 103 Statut Contributeur 6
     
    Hello Gabier
    Le problème ne viendrait pas de ton MkDir qui provoque une erreur si le répertoire existe déjà?
    Peut-être l'exemple ci-dessous peut t'aider:
    Private Sub Workbook_Activate()
      On Error GoTo errWbActivate
      Dim strBackupPath as String
      Dim strFileName as String
      strBackupPath = "c:\Backup\"
      strFileName = "monFichier_" & Replace(Now, "/", "_") & ".xls"
      strFileName = Replace(strFileName, ":", "-")
      ActiveWorkbook.SaveCopyAs strBackupPath & strFileName
      Exit Sub
    errWbActivate:
      If Err.Number = 1004 Then
        ' Creates the destination folder if inexistant
        MkDir strBackupPath
        Resume
      Else
        MsgBox "ERROR: " & Err.Number & Chr(13) & Chr(10) & _
        "Error when saving backup file."
      End If
    End Sub
    Cheers
    0
    1. gabier2008 Messages postés 2 Statut Membre
       
      Bonjour plubarj

      Non, ça ne vient pas de ce que le MkDir est en erreur car j'ai bien pris soin de supprimer le répertoire créé après chaque essai.
      Néanmoins ton exemple m'a servi, car j'ai remplacé ActiveWorkBook.SaveAs par ActiveWorkBook.SaveCopyAs, comme dans ton exemple, et maintenant ça marche. Subtil, subtil ...

      Merci

      :) Gabier2008
      0
  2. Septime
     
    Merci, je n'avais pas de dossier existant !

    J'ai codé comme çà :

    ' Teste si le dossier existe
    ' si non, le crée
    If Dir(ActiveWorkbook.Path & NomDossier) = "" Then
    MkDir NomDossier
    End If
    0