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.