Choisir l'emplacement lors de l'enregistrement

Résolu
patchap40 Messages postés 29 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 22 mai 2006 - 11 mai 2006 à 09:08
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 11 mai 2006 à 15:34
Private Sub BoutArchivage_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim NomArchiv As String
Dim MyYear, MyMonth, MyDate
Dim str As String
MyDate = Now() ' Attribue une date.
MyMonth = Month(MyDate) ' MyMonth contient le mois.
If MyMonth < 10 Then
MyMonth = "0" & MyMonth
End If
MyYear = Year(MyDate) ' MyYear contient l'année
str = MyMonth & MyYear
NomArchiv = "pâtes" & str


On Error GoTo non
NomArchiv = InputBox("Nom du fichier de sauvegarde:", "Sauvegarde sur disque", NomArchiv)

If NomArchiv = "" Then GoTo non
On Error GoTo pb


DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "pate", "c:" & NomArchiv, True

GoTo fin
pb:
MsgBox "Problème à l'écriture de c:" & NomArchiv
non:

fin:
End Sub

Bonjour, j'aimerai savoir si il était possible d'enregistrer un fichier sans avoir à écrire son chemin complet dans le code (voir ligne en gras), en l'occurence ici un fichier excel nommé pâtesMMAA, en fait ma question est peut on choisir l'emplacement de son fichier, qu'une fenêtre apparaisse comme sous word ou sous excel, merci

ps : rien à voir mais y'a til une balise code ?

17 réponses

patchap40 Messages postés 29 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 22 mai 2006
11 mai 2006 à 14:56
c'est bon j'ai réussi avec ma nouvelle solution
je met le code si ça peut en aider certains
merci de ton aide mortalino ;)

'Déclaration de l API
Private Declare Function GetSaveFileName Lib "comdlg32.dll" _
Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) _
As Long


'Structure du fichier
Private Type OPENFILENAME
lStructSize As Long
hWndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Private Sub BoutArchivage_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim NomArchiv As String
Dim MyYear, MyMonth, MyDate
Dim str As String
MyDate = Now() ' Attribue une date.
MyMonth = Month(MyDate) ' MyMonth contient le mois.
If MyMonth < 10 Then
MyMonth = "0" & MyMonth
End If
MyYear = Year(MyDate) ' MyYear contient l'année
str = MyMonth & MyYear
NomArchiv = "liqueurs" & str



On Error GoTo non
'NomArchiv = InputBox("Nom du fichier de sauvegarde:", "Sauvegarde sur disque", NomArchiv)


' NomArchiv = InputBox("Nom du fichier de sauvegarde:", "Sauvegarde d'un fichier sur disquette")
If NomArchiv = "" Then GoTo non
On Error GoTo pb



Chemin = EnregistrerUnFichier(Me.Hwnd, "Enregistrer", NomArchiv, "C:")




DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "pate", Chemin, True
' DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "pate", "a:\patesave2", True

GoTo fin
pb:
MsgBox "Problème à l'écriture de " & Chemin & NomArchiv
non:

' NomArchiv = ""
' BoutRelNon_MouseDown (i), (j), (X), (Y)
fin:
[Forms]![Formulaire]![Vue] = 4

End Sub
Function EnregistrerUnFichier(Handle As Long, Titre As String, _
NomFichier As String, Chemin As String) As String


'EnregistrerUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir _
la boîte de dialogue d'enregistrement d'un fichier.
'Explication des paramètres
'Handle = le handle de la fenêtre (Me.Hwnd)
'Titre = Titre de la boîte de dialogue
'NomFichier = Nom par défaut du fichier à enregistrer
'Chemin = Chemin par défaut du fichier à enregistrer

Dim structSave As OPENFILENAME


With structSave
.lStructSize = Len(structSave)
.hWndOwner = Handle
.nMaxFile = 255
.lpstrFile = NomFichier & String$(255 - Len(NomFichier), 0)
.lpstrInitialDir = Chemin
.lpstrFilter = "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0) 'Définition du filtre (aucun)
.Flags = &H4 'Option de la boite de dialogue
End With


If (GetSaveFileName(structSave)) Then
EnregistrerUnFichier = Mid$(structSave.lpstrFile, 1, InStr(1, structSave.lpstrFile, vbNullChar) - 1)
End If


End Function
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 mai 2006 à 10:15
Salut,

essai de voir avec la propriété FileDialog.

@ ++
Mortalino
0
patchap40 Messages postés 29 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 22 mai 2006
11 mai 2006 à 10:34
merci mais j'ai un soucis
quand j'écris ça
Dim fileDialog As Dlg
Application.fileDialog(msoFileDialogFolderPicker).Show

il me met une erreur
"type défini par l'utilisateur non défini"
0
patchap40 Messages postés 29 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 22 mai 2006
11 mai 2006 à 10:41
je pense que je n'ai pas rajouter le bonne librairi, quelqu'un sait laquelle il faut rajouter?
merci
0

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

Posez votre question
patchap40 Messages postés 29 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 22 mai 2006
11 mai 2006 à 10:47
la librairie que j'ai rajouté
Microsoft Office 9.0 Object Library
,
toujours non défini
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 mai 2006 à 10:54
T'es sous word ou excel ?
Normalement il n'y a pas besoin de rajouter un composant, dans l'aide du logiciel, il te le propose.
Au pire, il y a le composant Common dialog (Cdlg).
En attendant je regarde et je fais des test.
0
patchap40 Messages postés 29 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 22 mai 2006
11 mai 2006 à 10:56
mais je suis sous acess 2000, et je crois que file dialog n'existe pas, peut être y'a til un équivalent??
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 mai 2006 à 11:14
tiens essai un truc comme ça :

Sub Enregistrer()
Dim FdNico As FileDialog
Set FdNico = Application.FileDialog(msoFileDialogSaveAs)

With FdNico
If .Show = -1 Then

Else
End If
End With

Set FdNico = Nothing
End Sub

Par contre j'arrive pas à placer le "InitDir" (choix du dossier par défaut)
0
patchap40 Messages postés 29 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 22 mai 2006
11 mai 2006 à 11:20
toujours la même erreur "type défini par l'utilisateur non défini", merci qd meme
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 mai 2006 à 11:28
coche (dans les cntroles supp.) Microsoft Common Dialog Control

Par contre le code que je t'ai filé fonctionne à moitié, je refais des test
0
patchap40 Messages postés 29 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 22 mai 2006
11 mai 2006 à 11:31
ils sont ou les controles supp?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 mai 2006 à 13:06
désolé pour retard, bcoup de taf d'un coup...

Bref, insère un UserForm, tu devrais avoir un cadre avec qui s'affiche, contenant les contrôle habituels (TextBox, CommandButton...) ; en faisant un click droit dessus, il te propose "controles supplémentaires" :

coche "Microsoft Common Dialog Control" et valide. Il s'insère dans le cadre des controles.

Ensuite place le sur le UserForm
puis
Private Sub UserForm_Initialize()
With CommonDialog1
.InitDir = "C:"
.ShowSave
End With
End Sub

Tiens moi au courant
++
0
patchap40 Messages postés 29 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 22 mai 2006
11 mai 2006 à 14:04
j'ai une pléïade de choix dans les contrôles supplémentaires, mais pas le Microsoft Common Dialog Control
0
patchap40 Messages postés 29 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 22 mai 2006
11 mai 2006 à 14:18
j'abandonne cette solution, j'essaya evec ça
http://access.developpez.com/faq/?page=CheminsRep#AffBoitEnregSs
0
patchap40 Messages postés 29 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 22 mai 2006
11 mai 2006 à 14:18
j'abandonne cette solution, j'essaye evec ça
http://access.developpez.com/faq/?page=CheminsRep#AffBoitEnregSs
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 mai 2006 à 14:40
Désolé et bon courage !

Mortalino
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
11 mai 2006 à 15:34
De rien et bien vu l'appel d'API.

Merci à toi pour le code, ça peut effectivement être très précieux.

Bonne Aprem.

@ ++
Mortalino
0
Rejoignez-nous