[VB] problème avec GetSaveAsFilename

Fermé
ciracus - 18 juil. 2008 à 16:26
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 21 juil. 2008 à 15:01
Bonjour,

Je n'arrive pas à faire fonctionner mon code :
Do
fName = Application.GetSaveAsFilename
Loop Until fName <> False
xlBook.SaveAs Filename:=fName


Ce qui pose problème est "GetSaveAsFilename" qui n'est pas reconnu, et comme cette fonction
est dans l'aide d'access, je ne pense pas qu'il s'agisse d'une fonction à implémenter soi meme,
mais impossible de trouver quelle librairie installée pour l'avoir...

Auriez vous une idée sur la question??????

Merci beaucoup de votre aide car ça fait déjà plusieurs heures que je bloque sur cette application
A voir également:

15 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
19 juil. 2008 à 09:08
Bonjour,
tu doit d'abord assigner la variable

dim fName
set fName = Application.GetSaveAsFilename

A+
0
Bonjour,

Merci beaucoup pour ce conseil, malheureusement le bug n'est pas là car j'ai toujours le même message d'erreur :
"Erreur de compilation : Membre de méthode ou de données introuvable" ...........
Auriez vous une autre idée?

Encore merci!
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
21 juil. 2008 à 08:26
Bonjour,
Effectivement l'exemple donné est pas bon
Voir si tu a la référence...
Microsoft Office 9.0 Object librairy
Microsoft Excel 9.0 Object librairy
Ole automation
Regarde s'il ne t'en manque pas..
Et ton code est le bon, j'ai confondu avec CreateObjet
Si ca va vraiment pas il y a une autre piste pour choisir un fichier.
Tu dit...
A+
0
Actuellement, j'ai entre autre les librairies (je suis en version 2003):
*OLE Automation
*Microsoft Excel 11.0 Object Librairy
*Microsoft Office 12.0 Object Librairy

Je ne pense pas qu'avoir une version plus récente de la librairie peut poser problème, mais je n'ai pas le choix avec des plus anciennes ;-)

Je suis donc interessé par l'alternative car mon bug persiste... Merci!
0

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

Posez votre question
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
21 juil. 2008 à 10:04
Non, c'est parce que je travail avec le 2000, mais je ne sait pas si c'est encore d'application avec le 2007/8

Tu met un UF, clic droit sur les outils et voir si tu a l'OCX..
Microsoft Common Dialog
dans l'ocx COMMDLL32.OCX

0
Euh.... Désolé, mais je débute dans VB et je ne comprends pas très bien ce que tu me conseilles d'essayer... (c'est quoi UF? et comment je dis d'enregistrer le fichier xlBook?....)
Pourrais stp, me donner un peu plus de détails? Merci beaucoup.
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
21 juil. 2008 à 10:28
UF = UserForm
dans l'IDE (Editeur VB) >> Insertion >> Userform
Pour enrégistrer faut d'abord avoir les moyens..
Regarde déjà cà
Tu a pas Visual Basic 6 par hazard
Mais tu dit que tu est débutant,... Met la macro complète, l'erreur est peut-être ailleur.
0
Ahh.... Je suis vraiment désolé, mais je suis largué...

Je n'utilise Microsoft Visual Basic qu'en demandant "générateur de code" depuis une combox dans access... Et dans ce cas, en fait, j'ai une "Private Sub Extraire_Click()", dedans je créé un fichier excel de toute part à partir de requêtes et ce que je voudrais, c'est remplacer la ligne xlBook.SaveAs "C:\..." par une demande enregistrer sous.

D'accord pour IDE>Insertion mais je n'ai pas userform!
Que veux-tu que je fasse? Que je créé une nouvelle fonction et que je mette dedans la cmd COMMDLL32.OCX ?
Et ensuite que je fasse appel à cette nouvelle fonstion dans ma sub?

:S
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
21 juil. 2008 à 11:18
Wouaaah, tu m'a pas dit que tu travail avec Access ?
Ca m'étonne plus que ca marche pas.
Si tu travail en appelant Excell tu a créer un oblet Excel application. Donc quand tu appel
fName = Application.GetSaveAsFilename
C'est pas application que tu doit mettre mais la variable que tu a assigné à l'objet du type

Dim MyExcel
Set MyExcel= CreateObject("excel.application")
fName = MyExcel.GetSaveAsFilename
Tu dit...
0
GENIAL!!!!

Par contre, juste un petit détail, comment je peux faire pour que ce soit un fichier excel qui soit créé? Car là il me met un fichier de type fichier et non pas de type excel... ?

En tout cas merci beaucoup je n'aurai pas essayé car je pensais que application était une méthode du meme genre que Docmd!
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
21 juil. 2008 à 12:03
Pas compris ta dernière question
a moins que....

MyExcel.Workbooks.open (fName )
0
En fait, ça fonctionne presque parfaitement: il y a juste un petit bug, c'est que la fenetre windows enregistrer sous n'apparait pas en premier plan mais derrière ma base access et vu que la base est ouverte et en attente de réponse de la fenetre enregistrer sous, je ne peux pas la déplacer et donc je suis coincé et obligé de faire ctrl+alt+suppr pour interrompre le tout...

Donc ma dernière question sur cette fenetre "enregistrer sous" est comment l'obliger à apparaitre au premier plan?

Merci beaucoup!
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
21 juil. 2008 à 14:14
Je connais pas beaucoup le VBA access, mais tu à pas la possibilité de mettre la fenêtre en icône ou de la mettre en arrière-plan avec Zordre 2 par exemple.
C'est un formulaire access ?
0
Non, il ne s'agit pas d'un formulaire mais de la fenetre windows "enregistrer sous" appelée par SaveAs dans le code mais en pratique par un clic sur un bouton d'un formulaire access, qui apparait en arrière plan, soit derrière le formulaire qui l'a appelée ce qui bloque car ça fait une boucle. Suis-je assez clair?

En bref, il faudrait que la fenetre windows "enregistrer sous" apparaisse au premier plan. Je pense qu'il doit falloir rajouter une ligne à :
Do
fName = xlApp.GetSaveAsFilename
Loop Until fName <> False
'ouvrir au premier plan la fenetre "enregistrer sous"
xlBook.SaveAs Filename:=fName
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
21 juil. 2008 à 14:42
J'ai l'impression (peut-être fausse) mais que tu fait des noeux avec xlApp et xlBook
le nom xlApp que j'ai donner c'est pour l'exemple, tu ne doit pas employé ce mot mais toujours xlBook
Et tu doit pas créer une 2ém instance de Excel
T'en fait pas, je comprend bien que ce n'est pas facile au début.
0
xlApp = Excel Application
xlBook = feuille de xlApp
(cf mon code dans le sujet "mettre un cartouche")

Il est fort possible qu'il y est des noeuds, mais le programme fait enfin ce que j'attendais de lui! J'ai mis un Docmd.maximize juste après la ligne "xlBook.SaveAs Filename:=fName" et ainsi la fenetre enregister sous apparait en premier plan (ça ne doit pas etre la méthode idéale mais ça fonctionne!)

Je te remercie infiniment de m'avoir aidé! J'ai vu que tu aides beaucoup de monde et c'est vraiment génial! (surtout quand on s'arrache les cheveux depuis plusieurs heures sur un bug...)

Bon courage!
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
21 juil. 2008 à 15:01
:DDD
Comme disait ma grand mère,
Le courrage est bon... mais l'ouvrage est fort :DD
0