VBA Excel : Pas moyen d'enregistrer !
Résolu
gabier2008
Messages postés
2
Statut
Membre
-
Septime -
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
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:
- VBA Excel : Pas moyen d'enregistrer !
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
2 réponses
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:
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 SubCheers
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