VBA Excel : Pas moyen d'enregistrer !

Résolu/Fermé
gabier2008 Messages postés 2 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 22 mai 2008 - 22 mai 2008 à 14:40
 Septime - 26 août 2010 à 22:18
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
A voir également:

2 réponses

plubarj Messages postés 101 Date d'inscription jeudi 17 avril 2008 Statut Contributeur Dernière intervention 13 octobre 2008 6
22 mai 2008 à 15:14
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
gabier2008 Messages postés 2 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 22 mai 2008
22 mai 2008 à 15:27
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
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