Boîte de dialogue pour copie d'un fichier

Boîte de dialogue pour copie d'un fichier - VB/VBA/VBS - Programmation

Marsh Posté le 12-03-2008 à 15:48:13    

Bonjour,
 
Avant tout, je suis débutant sur vb donc je fais appel à vos compétences!
 
Sous access, j'ai créé un module vb qui m'execute plusieurs requetes et les enregistre dans un fichier excel modèle, une feuille par requete (appelé par la suite fichier1).
 
A l'heure actuelle, j'utilise une input box pour demander un nom, et ensuite, je recopie mon fichier1 avec ce nouveau nom.
Le probleme, c'est que le répertoire de destination de la copie est en dur dans le code.Je voudrais donc, à la fin de l'execution des requetes, ouvrir une boite de dialogue (type enregistrer sous) dans laquelle l'utilisateur pourra choisir le répertoire de destination et le nom à donner au nouveau fichier.
 
Je vous remercie par avance.

Reply

Marsh Posté le 12-03-2008 à 15:48:13   

Reply

Marsh Posté le 13-03-2008 à 11:01:03    

Personne n'aurait une petite idée?

Reply

Marsh Posté le 13-03-2008 à 15:09:15    

salut,
J'utilise souvent GetOpenfileName comme méthode issu d'excel.


---------------
Les fautes d'orthographe coûtent des millions d'euros aux entreprises, marre des fau
Reply

Marsh Posté le 13-03-2008 à 16:01:32    

jpcheck a écrit :

salut,
J'utilise souvent GetOpenfileName comme méthode issu d'excel.


 
Le problème, c'est que mon fichier excel model n'est pas ouvert. Il est juste rempli lors de l'execution du module VB dans access

Reply

Marsh Posté le 13-03-2008 à 16:01:44    

Jour Bon, à adapter à ton contexte


Option Explicit
 
Sub Tst()
Dim Fichier As Variant
Dim sChemin As String
    sChemin = ThisWorkbook.Path
     
    ChDrive sChemin
    ChDir sChemin
    Fichier = Application.GetSaveAsFilename(FileFilter:="Fichiers Excel (*.xls), *.xls" )
    If Fichier <> False Then ThisWorkbook.SaveAs Filename:=Fichier
End Sub

Reply

Marsh Posté le 13-03-2008 à 16:15:59    

kiki29 a écrit :

Jour Bon, à adapter à ton contexte


Option Explicit
 
Sub Tst()
Dim Fichier As Variant
Dim sChemin As String
    sChemin = ThisWorkbook.Path
     
    ChDrive sChemin
    ChDir sChemin
    Fichier = Application.GetSaveAsFilename(FileFilter:="Fichiers Excel (*.xls), *.xls" )
    If Fichier <> False Then ThisWorkbook.SaveAs Filename:=Fichier
End Sub



 
"Thisworkbook.path" et "getsaveasfilename" ne fonctionnent pas. Je ne sais pas si ça vient de là, mais j'utilise vb6.3
Je suis completement paumé, je n'y connais pas grand chose et j'ai une petit appli à faire pour le boulot

Reply

Marsh Posté le 13-03-2008 à 16:37:44    

Oops, effectivement c'est du code VBA Excel et tu es sous VBA Access ?
Inutile de reprendre dans ton post mon code cela n'apporte rien et encombre le paysage

Fichier = Application.FileDialog(msoFileDialogSaveAs)


Message édité par kiki29 le 13-03-2008 à 16:41:23
Reply

Marsh Posté le 13-03-2008 à 16:54:30    

ok, et pour remplacer thisworkbook.path?
à quoi ça correspond?

Reply

Marsh Posté le 13-03-2008 à 17:14:57    

Une autre approche
Sous Excel cela donne le chemin sous lequel a été sauvé le classeur
peut etre à remplacer par ton chemin codé en hard, sinon

DoCmd.OutputTo acOutputQuery, "xxx", acFormatXLS

Reply

Marsh Posté le 13-03-2008 à 23:06:43    

Les boites de dialogues pour l'ouverture de fichiers et répertoires qui fonctionnent sous Excel et Word ne marche pas avec Access, du moins avec la version 97, peut être aussi avec les versions supérieures.
Essaye avec ça.


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 13-03-2008 à 23:06:43   

Reply

Marsh Posté le 14-03-2008 à 10:39:09    

Bouh ça marche pas...
Pourtant, ça n'a pas l'air compliqué comme ça: j'aimerais afficher une boite de dialogue dans laquelle je pourrais explorer le disque, rentrer un nom et récupérer le chemin avec le nom
Ce qui est chiant c'est que mon code est sous access (2003)

Reply

Marsh Posté le 14-03-2008 à 12:07:58    

j'ai peut etre ça pour toi : j'utilise un formulaire pour lancer des rattachements de table, ces tables sont stockés à différents endroits de mon réseau, pour choisir le chemin d'accès, je fait choisir le chemin VIA  un formulaire et je stock ensuite le chemin dans un controle que j'utilise après pour faire ma sauce.
voici le code pour le bouton (RepProd) du formulaire qui donne accès au choix du chemin :
 
Private Sub SelRepProd_Click()
Me.RepProd = GetDirectory("Veuillez choisir le répertoire 'RACINE RÉELLES' : " )
If Me.RepProd = "" Then
Msgbox "Vous devez choix un répertoire RACINE RÉELLES", vbCritical
SelRepProd_Click
End If
End Sub

 
ET Voici le code correspondant à la fonction "GetDirectory" :
 
Option Compare Database
 
' ouvre une boite treeview
'Attribute VB_Name = "BrowseForFolderOrFile"
Option Explicit
'J. Walkenbach
Public Type BROWSEINFO
    hOwner As Long
    pidlRoot As Long
    pszDisplayName As String
    lpszTitle As String
    ulFlags As Long
    lpfn As Long
    lParam As Long
    iImage As Long
End Type
 
'32-bit API declarations
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
    Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
 
Declare Function SHBrowseForFolder Lib "shell32.dll" _
    Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
 
 
 
Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO
Dim path As String
Dim r As Long, x As Long, pos As Integer
 
    'Définit le Bureau comme dossier racine
    bInfo.pidlRoot = 0&
 
    'Invite de la boite de dialogue
    If IsMissing(Msg) Then
        bInfo.lpszTitle = "Répertoire cible : "
    Else
        bInfo.lpszTitle = Msg
    End If
     
    'Type de renvoi : dossier
'    bInfo.ulFlags = &H1
    'Type de renvoi : fichier
    bInfo.ulFlags = &H4000
 
 
    'Affiche la boite de dialogue
    x = SHBrowseForFolder(bInfo)
                         
    'Traite le résultat
    path = Space$(512)
    r = SHGetPathFromIDList(ByVal x, ByVal path)
    If r Then
        pos = InStr(path, Chr$(0))
        GetDirectory = Left(path, pos - 1)
    Else
        GetDirectory = ""
    End If
End Function

 
 
 
c'est un code trop compliqué pour moi que j'ai récupéré sur internet, je ne pourrais pas t'expliquer la signification des fonctions utilisées, mais en tout cas ça marche super bien pour choisir un chemin et le stocker dans un controle ensuite...

Reply

Marsh Posté le 14-03-2008 à 13:13:26    

AU Fait, tu auras sans doute activée certaine référence bibliothèque si ce n'est pas fait...

Reply

Marsh Posté le 14-03-2008 à 15:56:17    

je ne suis pas callé en formulaires. C'est quoi comme type de bouton?

Reply

Marsh Posté le 14-03-2008 à 16:58:17    

C'est un bouton de commande simple, tu y accède quand tu es en mode création sur le formulaire avec la boite d'outil et tu colles la première partie du code en procédure évennementielle "sur click", la deuxième partie du code est un module.

Reply

Marsh Posté le 14-03-2008 à 17:29:51    

Super, ça marche.
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed