Save As sous VBA

@

@Christophe@

Guest
Bonsoir a tous,

J'utilise la macro suivante pour enregistré mon document, cela marche tres bien, mais maintenant j'aimerai que si je sauve et que le nom est déjà présent dans le répertoire qu'il ajoute "1" derriere.

Sub SauverSous()
Dim DocName as String
DocName = "Avis d'absence" & " " & TxtNom & " " & TxtPrenom
ThisWorkbook.SaveAs FileName:=DocName
End Sub

Exemple:

Le document suivant "Avis d'absence Christophe Home.xls" se trouve dans mon répertoire, au moment ou je vais activé ma macro, j'aimerai que comme le doc existe qu'il le sauve sur : "Avis d'absence Christophe Home1.xls"
Ainsi de suite, la prochaine fois il devra sauver sous:"Avis d'absence Christophe Home2.xls", ainsi de suite,...

Merci de votre aide.

@Christophe@
 
@

@Christophe@

Guest
Bonsoir Jacques

Je vois ou tu veux en venir

Sub SauverSous()
Dim DocName as String
Dim Num as Byte

Num = 1
DocName = "Avis d'absence" & " " & TxtNom & " " & TxtPrenom & Num
ThisWorkbook.SaveAs FileName:=DocName
on error goto Num +1
End Sub


Style comme cela, mais je ne connais pas cette fonction, et dans l'aide j'ai pas trouvé grand choses, pourrais tu peux être m'aider un peu plus.

Merci

@Christophe@
 
J

Jacques

Guest
Re bonsoir Christophe,
Tu peux essayer ceci:

Sub SauverSous()
Dim DocName as String
Dim Num as Byte

Num = 1
boucle:
DocName = "Avis d'absence" & " " & TxtNom & " " & TxtPrenom & Num
ThisWorkbook.SaveAs FileName:=DocName
On Error GoTo increnum:
Exit Sub
increnum:
num = num +1
Resume
End Sub
Pour de plus amples (et meilleures) explications vas voir dans l'aide de visual basic au mot Error

@+
 
@

@Christophe@

Guest
Bonsoir Jacques et Thierry

Merci a vous deux

Thierry, pourrais tu jeter un rapide coup d'oeil a mon post

<http://www.excel-downloads.com/html/French/forum/messages/1_20558_20558.htm>

Merci d'avance et bonne nuit

@Christophe@
 
@

@+Thierry

Guest
Bon c'est fait (rapidos, une soluce parmis d'autres).... Va voir ton Fil

Mais bon tu m'as même pas dit pour le Fil 7348 avant de me relancer sur une autre question...

Bon, ce sera pour demain

Bonne Nuit
@+Thierry
 
@

@Christophe@

Guest
Thierry, merci

Je t'ai pas oublié pour ton fil 7348, mais as tu vu le code du fichier, un truc de fou pour un débutant comme moi, il me faut au moins 1h pour analyser cela, rire

Je suis occupé sur ce fichier et sur l'aide trouver sur le fil, mais cela parle plutot de testé l'existence d'un fichier, mais j'y travaille, je te tient au courant

Bonne nuit

@Christophe@
 
B

Baroude

Guest
Salut à tous et toutes,

@Christophe@, j'ai le même module que toi avec un enregistrement de fichier qui ne doit pas écraser le dernier, j'ai résolu le problème en mettant derrière la date et l'heure d'enregistrement : pour un fichier qui s'appellent salaires.xls il devient :

"Salaires_030130-174653.xls" pour le 30/01/2003 à 17h46mn53sec

Format(Date, "yy") & Format(Date, "mm") & Format(Date, "dd-") & _
Format(Time, "hh") & Format(Time, "nn") & Format(Time, "ss")

It's maybe more simple, no ?

Bonne journée

Baroude
 
@

@Christophe@

Guest
Bonjour Baroude

Figure toi que je me suis cassé la tête la decu hier juqu'a 03h00 du matin, et puis je laisser tomber en me dissant le nuit porte conseil.

Ce matin je me lêve avec l'idée genial de mettre la date au lieu d'un numéro, et enfaite cette idée est encore mieux. De plus la date figure dans mon document.

Voila que j'ouvre mon pc et que tu me propose cette solution.

Comme quoi defois on cherche tres compliqué quand il ya facile.

Un grand merci a tous ceux qui m'ont aidé.

Bonne journée a tous

@Christophe@
 
@

@Christophe@

Guest
Bonjour Baroude

J'ai tous de même un petit problème, peux tu me donner un exemple de ton code. Parce que tu m'as donnée la partie pour enlever les / mais je n'arrive pas a l'inclure dans mon code

Sub SauverSous()
Dim DocName as String
DocName = "Avis d'absence" & " " & TxtNom & " " & TxtPrenom & " " & TxtDate
ThisWorkbook.SaveAs FileName:=DocName
End Sub

Ou dois je mettre la partie de ton code, j'ai essaye de crée une Variable Dim DocDate as Byte et de la déclaré avec ton format; Format(Date, "yy") & Format(Date, "mm") & Format(Date, "dd-")

Mais j'y arrive pas trop

Merci D'avance


@Christophe@
 
B

Baroude

Guest
Re-bonjour,

Je ne peut pas te donner mon code en entier (trop long) mais voici comment je l'aurai fait :

Sub Sauve()
ThisWorkbook.SaveAs Filename:="C:\Salaires_" & _
Format(Date, "yy") & _
Format(Date, "mm") & _
Format(Date, "dd-") & _
Format(Time, "hh") & _
Format(Time, "nn") & _
Format(Time, "ss")
End Sub


Je n'utilises pas de variables pour enregistrer le chemin, je le met directement dans Filename:=

J'espère que ça t"éclaircit...

Bon courage
Baroude
 
@

@+Thierry

Guest
coucou... héhéhé

Vu que j'ai coché la case du bas.... et que je recois des mail de ce fil... et donc j'ai recu la soluce très astucieuse de Baroude pour le problème de mon ami @Xtof@

Juste pour le grain de sel....
Format(Now, "YY-MM-DD-HH-MM-SS")

ou dans la foulée => Format(Now, "YYMMDDHHMMSS") (un peu fatiguant à lire mais unique aussi !)

et n'oubliez pas aussi (inutile là dans le cas présent.... mais toujours utile parfois...
Application.WorksheetFunction.Substitute......... je vous laisse la fin .... its more fun (& simple....)

Bonne YYMMDDHHMMSS (lol)
@+Thierry
 

Statistiques des forums

Discussions
312 185
Messages
2 086 010
Membres
103 090
dernier inscrit
Createlier