Sauvegarder sur un nom deja existant [VB] - Programmation
Marsh Posté le 22-08-2001 à 16:34:19
D'après la doc VBA d'excel, la fonction ne fait que renvoyer le nom prévu par l'utilisateur, voire false si abandon.
Il faudrait sans doute ajouter après le test une recherche de fichier avec le nom absolu OpenSave voir s'il existe déja. Ca doit exister (? suis pas utilisateur, sais pas). A une époque, en prog, on faisait open "nomfich" en lecture. Si erreur, fich existe pas, sinon, il existe.
Marsh Posté le 22-08-2001 à 16:57:21
Merci Carbon_14 mais il me semble qu il y a un truc tt fait
le message qui apparait est un message multilangue de Windows
Mais je sais pas comment l activer
Marsh Posté le 22-08-2001 à 17:03:25
peut etre quand affichant la boite de dialogue saveas dans ta macro ? :
application.dialogs(xldialogsaveas).show
Marsh Posté le 23-08-2001 à 09:07:26
J'ai regardé hier en vitesse pour GetSaveAsFilename, ai pas trouvé en VBA Word, mais si en VBA EXCEL (étonnant que cela soit différent, pas évident à apprendre ce VBA là si y en plusieurs)...
Il ne semble pas y avoir d'options dans ce style. Quand on gère cela en C, on a une option pour l'ouverture de la boîte de dialogue "sauver fichier" pour prévenir si le fichier existe déja.
Et dans le SaveAs, y a pas un "truc" a ajouter pour tester ? Ou un autre Save plus sophistiqué (complet). Manque de temps, je peux pas trop fouiller le VBA.
Marsh Posté le 23-08-2001 à 09:40:39
Je vais essayer de voir
Merci
Marsh Posté le 23-08-2001 à 10:57:18
nur a écrit a écrit : peut etre quand affichant la boite de dialogue saveas dans ta macro ? : application.dialogs(xldialogsaveas).show |
Oui mais si j ouvre cette boite de dialogue j'ai pas le nom du document en memoire
Avec ma methode ds OpenSave j'ai le nom du document mais avec application.dialogs(xldialogsaveas).show je vois pas comment recuperer le nom
Marsh Posté le 23-08-2001 à 11:01:58
je crois qu'on peut faire comme ça :
' ton fichier s'appelle toto.xls
set fs=createobject("scripting.filesystemobject" )
if fs.fileexists("toto.xls" )then 's'ils sont pas dans le m dossier il faut taper le chemin complet
reponse=msgbox("Fichier existe deja Ecraser ?",4)
if reponse =vbyes then
'la tu sauve en ecrasant
else
autrenom=inputbox("tapez un autre nom" )
'la tu sauve sous "autrenom"
endif
else
'la comme le fichier n'existe pas tu peut sauver
endif
Marsh Posté le 23-08-2001 à 11:05:42
Le nom qu'a choisit l'utilisateur, c'est la variable OpenSave.
Si abandon, elle équivaut à FALSE, sinon, ça doit être le nom, path compris (D:\Mes fichiers\Ma compta\Fichier.xls). Sauf erreur.
Marsh Posté le 23-08-2001 à 11:15:56
PArfait
Merci Merci
il me reste plus qu mettre tt ca en multilangue et ce sera bon
Marsh Posté le 23-08-2001 à 11:19:18
navarro a écrit a écrit : PArfait Merci Merci il me reste plus qu mettre tt ca en multilangue et ce sera bon ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
est ce que ça colle avec fileexists ?
Marsh Posté le 23-08-2001 à 11:22:45
bein oui ca marche a la perfection
Merci
Marsh Posté le 04-12-2008 à 11:08:07
pti up de 7 ans je suis interrésser par la commande fileexists de nur
'On créer l'objet Excel
Set xlApp = CreateObject("Excel.Application" )
'On défini le nombre d'onglets
xlApp.SheetsInNewWorkbook = 1
'On ajoute un classeur
Set xlBook = xlApp.Workbooks.Add
'On rend le classeur visible
xlApp.Visible = True
'On créer l'objet onglet dans le nouveau classeur créé
Index = 1
Set xlsheets = xlBook.Worksheets(1)
'On affecte un nom aux l'onglets
xlsheets.Name = NumArticle
'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc
On Error Resume Next ' Permet de ne pas planter si le dossier existe deja
Lecteur = Mid(NomDossier, 1, 2)
ChDrive Lecteur
'On donne un nom au classeur
MkDir NomDossier
If xlApp.fileexists(NomDoc & ".xls" ) Then
'rien
Else
xlBook.SaveAs NomDossier & NomDoc & ".xls"
On Error GoTo 0 ' On rend le control d'erreur à VBA
xlApp.Quit
je l'ai essayer une première fois cela fonctionner
puis j'ais effacer mon répertoire! et lorque je relance ma macro il trouve tjr le fichier existant!
si quelqu'un pouvais m'aider merci
Marsh Posté le 22-08-2001 à 15:32:05
avec une boite de dialogue de windows classique si on ve sauvegarder sur un nom existant il mais un message du style Ce fichier existe deja Reecrire ? oui non
Moi avec ma methode il me demande rien et il ecrase cache le fichier portant le meme nom
Quelque pe me dire pourquoi? Merci
Voici mon code :
Set pro = ThisWorkbook.Sheets("1" )
OpenSave = Application.GetSaveAsFilename(InitialFilename:=SaveCompany + " - " + SaveName + " - " + SaveDate + "." + "xls", filefilter:="Excel projects (*.xls), *.xls", Title:="Save the project as..." )
If OpenSave <> False Then
ThisWorkbook.SaveAs Filename:=OpenSave
End If
---------------
Une ptite aide en VB et jVBien