Enregistrer un .xls en specifiant un chemin d'acces

cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004 - 1 juin 2004 à 13:27
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004 - 1 juin 2004 à 16:49
bonjour,
voila en gros la structure de mon programme.
1. l'utilisateur tape un chemin d'acces nous amenant au fichier à traiter. ex: c:\VB\profile.prf
2. Ce fichier est traité par le programme qui va trier ces données sous excel.
3. il faut enregistrer le fichier TRAITE, l'utilisateur specifiant bien lui meme l'endroit du dur ou il souhaite effectuer sa sauvegarde.
c'est cette troisieme partie qui me pose probleme...
merci!

Valer

10 réponses

Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005
1 juin 2004 à 14:08
Pour ma part je ferais ca en 2 étapes :

1- instancier un composant commondialog en mode saveas
2- faire appel à la méthode saveas sur ton objet excel

pour l'étape 1, il faut que tu ajoutes un composant commondialog à ton projet. Pour disposer des composants commondialog, il doit falloir ajouter une réference à un ocx (comdlg32 d'après ce que j'ai vu sur le forum). Cependant, si tu travailles en VBA sous excel, je ne sais pas s'il est disponible (chez moi yapa)... si tu en a besoin, on peut essayer de trouver autre chose pour cette étape.

Bon enfin, dans le cas, ou tu as ta boite de dialogue, le retour du commondialog est une chaine qui indique le nom du fichier dans lequel tu veux faire la sauvegarde :
monFichier = commondialog.showsave()

ensuite, il n'y a plus qu'a passer cette chaine à la procedure saveas :
monObjetExcel.saveas(monFichier)

Et bingo
0
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004
1 juin 2004 à 14:38
salut,
en fait je vais te montrer mon code pour qu"on arrivfe bien a adapter ta solution...
dim sans_titre as string
dim filepath as object

with cmd:
.dialoguetitle="enregistrer sous..."
.cancelerror=true
.fichier="excel|*.xls|*.xls
.filter index=1
.initdir="c:\windows"
.showsave

sans_titre=cmd.filename
set filepath=worksheets(1) 'worksheets(1) est le .xls a save
open sans_titre for output as #256
filepath.saveas(sans_titre) ' la il me dit qu'il ne peut pas acceder a sans titre...


alors si tu as une idee , quitte a remanier totalement le projet je m'en fou, l'important c'est que ca tourne.
merci
Valer
0
Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005
1 juin 2004 à 15:11
Je te propose :

dim sans_titre as string

with cmd:
.dialoguetitle="enregistrer sous..."
.cancelerror=true
.fichier="excel|*.xls|*.xls
.filter index=1
.initdir="c:\windows"
.showsave
endwith

sans_titre=cmd.filename
worksheets(1).saveas(sans_titre) 


oui c'est ton code légèrement remanié. En fait, la deuxième partie était incorrecte il me semble : la méthode open ne sert pas dans ton cas et je me demande d'ailleurs si ce n'est pas elle qui fait planter la méthode saveas.
En fait open va te reserver l'ecriture sur le fichier sans_titre via le canal #256 (étant donné la manière dont tu l'a appelée). Ensuite pour ecrire dans le fichier sans_titre, il faut faire
write #256, les_trucs_a_ecrire

La méthode saveas, quant à elle, propose de faire tout ca de manière transparente : pas la peine de faire un open, c'est dans la méthode saveas. Voila

j'espere ca marche maintenant (j'ai pas testé... mais normalement, y a pas de pb)

PS : pour l'autre problème, celui avec les chartspace, je vais essayer une solution :
charts(i).copy 'avec i l'indice du graphique à copier
chartspace.paste

la non plus pas testé, j'ai pas trouvé le contrôle chartspace dans excel... sorry
0
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004
1 juin 2004 à 15:28
je comprend vraiment pas, ton truc fonctionne je pense, mais il me marque inlassablement, fichier inaccessible...
j'ai tout essayer, lecture seule desactivee...
ca marche po
Valer
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005
1 juin 2004 à 15:40
j'ai peut être une idée : essaye :

soit de redemarrer ton pc (bof, la 2e sol est plus rapide...)
soit de mettre l'instruction "close" avant le worksheets
(1).saveas(sans_titre) -> c'est plus rapide

Si ca se trouve, quand tu as executé ton code avec le open, le prog n'a pas refermé le canal de communication (c'est même probable). Du coup, ton fichier est toujours ouvert en ecriture, donc protégé et inaccessible. Donc en refermant le canal de comm, ca devrait marcher. Pour ca, tu as les 2 solutions que j'ai décrit (y en a surement d'autres auquelle je ne pense pas... mais celles la devraient marcher)

attention tout de même : si tu choisi la deuxième solution ,il faudra penser à enlever l'instruction close après avoir executé ton prog une fois. Normalement ca devrait pas gener si tu la laisse (si je me souviens bien) mais ca ne servirais à rien non plus

Bon tiens moi au courant, savoir si je dis n'imp ou si je suis encore capable de coder
0
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004
1 juin 2004 à 15:53
g redemarré mon pc, le pb est le meme... ca me depasse un peu la!

Valer
0
Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005
1 juin 2004 à 16:10
a tout hasard essaye de regarder ce qu'il y a dans sans_titre avant de sauver :

soit tu met la ligne :
msgbox(sans_titre)
après la ligne sans_titre=cmd.filename

soit tu mets un espion (c'est vous qui voyez ... ;)

ce qu'il faut regarder c'est si il n'y a pas de caractères bizarres (genre des espaces mal placés). Si c'est le cas, il doit y avoir un paramètre qui ne va pas dans le commondialog (je pense au tag...)
Si c'est ca, tant mieux je peux continuer à t'aider. Sinon, j'ai pas d'autre idée tout de suite, mis à part une question de privilèges mais ca m'etonnerait (à tout hasard, tu travailles sur ton PC ou sur un PC au travail ?)

a tout de suite je pense ... ;-)
0
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004
1 juin 2004 à 16:22
je travail sur mon portable a moi, mais au taf!
sinon ca marche tjrs pas donc j'ai trouve des lignes sur le net
que je comprends pas trop mais ki marche:
japel une procedure qd je clik :
procedure:

with application
.sendkeys"(tab) down(2)-tab(6)", true
.dialogs(xldialogsaveas).show""
end with
end sub
Valer
0
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004
1 juin 2004 à 16:23
mais j'aimerais qd meme pouvoir m'en sortir avec ma commandbox, car je peux choisir mon directory d'origine etc...
Valer
0
cs_valer Messages postés 140 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 26 juillet 2004
1 juin 2004 à 16:49
je debauche dans 5 min si tu veux continuer a ce que l'on cherche fais moi signe

Valer
0
Rejoignez-nous