Choisir l'emplacement lors de l'enregistrement [Résolu]

patchap40 29 Messages postés mercredi 5 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 11 mai 2006 à 09:08 - Dernière réponse : mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention
- 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 ?
Afficher la suite 

17 réponses

patchap40 29 Messages postés mercredi 5 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 11 mai 2006 à 14:56
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 11 mai 2006 à 10:15
0
Utile
Salut,

essai de voir avec la propriété FileDialog.

@ ++
Mortalino
patchap40 29 Messages postés mercredi 5 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 11 mai 2006 à 10:34
0
Utile
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"
patchap40 29 Messages postés mercredi 5 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 11 mai 2006 à 10:41
0
Utile
je pense que je n'ai pas rajouter le bonne librairi, quelqu'un sait laquelle il faut rajouter?
merci
patchap40 29 Messages postés mercredi 5 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 11 mai 2006 à 10:47
0
Utile
la librairie que j'ai rajouté
Microsoft Office 9.0 Object Library
,
toujours non défini
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 11 mai 2006 à 10:54
0
Utile
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.
patchap40 29 Messages postés mercredi 5 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 11 mai 2006 à 10:56
0
Utile
mais je suis sous acess 2000, et je crois que file dialog n'existe pas, peut être y'a til un équivalent??
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 11 mai 2006 à 11:14
0
Utile
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)
patchap40 29 Messages postés mercredi 5 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 11 mai 2006 à 11:20
0
Utile
toujours la même erreur "type défini par l'utilisateur non défini", merci qd meme
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 11 mai 2006 à 11:28
0
Utile
coche (dans les cntroles supp.) Microsoft Common Dialog Control

Par contre le code que je t'ai filé fonctionne à moitié, je refais des test
patchap40 29 Messages postés mercredi 5 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 11 mai 2006 à 11:31
0
Utile
ils sont ou les controles supp?
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 11 mai 2006 à 13:06
0
Utile
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
++
patchap40 29 Messages postés mercredi 5 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 11 mai 2006 à 14:04
0
Utile
j'ai une pléïade de choix dans les contrôles supplémentaires, mais pas le Microsoft Common Dialog Control
patchap40 29 Messages postés mercredi 5 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 11 mai 2006 à 14:18
0
Utile
j'abandonne cette solution, j'essaya evec ça
http://access.developpez.com/faq/?page=CheminsRep#AffBoitEnregSs
patchap40 29 Messages postés mercredi 5 avril 2006Date d'inscription 22 mai 2006 Dernière intervention - 11 mai 2006 à 14:18
0
Utile
j'abandonne cette solution, j'essaye evec ça
http://access.developpez.com/faq/?page=CheminsRep#AffBoitEnregSs
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 11 mai 2006 à 14:40
0
Utile
Désolé et bon courage !

Mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 11 mai 2006 à 15:34
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.