Boîte de dialogue pour copie d'un fichier - VB/VBA/VBS - Programmation
Marsh Posté le 13-03-2008 à 15:09:15
salut,
J'utilise souvent GetOpenfileName comme méthode issu d'excel.
Marsh Posté le 13-03-2008 à 16:01:32
jpcheck a écrit : salut, |
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
Marsh Posté le 13-03-2008 à 16:01:44
Jour Bon, à adapter à ton contexte
|
Marsh Posté le 13-03-2008 à 16:15:59
kiki29 a écrit : Jour Bon, à adapter à ton contexte
|
"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
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) |
Marsh Posté le 13-03-2008 à 16:54:30
ok, et pour remplacer thisworkbook.path?
à quoi ça correspond?
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 |
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.
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)
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...
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...
Marsh Posté le 14-03-2008 à 15:56:17
je ne suis pas callé en formulaires. C'est quoi comme type de bouton?
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.
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.