IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

fonction enregister sous pour un fichier


Sujet :

VBA Access

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut fonction enregister sous pour un fichier
    Bonjour.
    J'ai récupéré sur le site la fonction permettant d'utiliser la boite de dialogue standard 'Enregister sous' (voir http://access.developpez.com/faq/?pa...AffBoitEnregSs

    voila mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
      '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
     
     
    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
     
          NomFichier = NOM_FICHIER_ETAPE_TYPE
           Chemin = CHEMIN_FICHIER_ETAPE_TYPE
    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
     
     
    Private Sub bouton_Click()
    FICHER_OPERATION = EnregistrerUnFichier(Me.hwnd, "Enrégistrer sous", "Test.doc", "C:\")
     
    End Sub
    le champ FICHER_OPERATION prend bien la valeur du chemin + non du fichier par contre je n'arrive pas a copier le fichier dans le dossier comment faire??

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    Le titre de la Q/R dit bien "... récupérer le nom et le chemin du fichier sélectionné"
    Ce n'est pas pour enregistrer.

    Pour enregistrer un fichier, il faut utiliser SaveAs de l'objet Application.

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    ok merci
    moi je souhaiterais que apres avoir recuperai le nom du nouveau chemin avec le nom du fichier grace donc a cette fonction "... récupérer le nom et le chemin du fichier sélectionné" (qui marche bien alors ) que l'on copier le fichier TYPE d'ou on a le chemin + le nom du fichier dans le champ "CHEMIN_FICHIER_ETAPE_TYPE" dans le nouveau chemin et avec le nouveau nom grace au chemin que l'on a trouve avec la fonction récupérer le nom et le chemin donc qui est sotck dans le champ "FICHER_OPERATION"

    comment peux t'on faire cela??

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Pour copier un fichier dans dossier tu peux utiliser FileCopy. Il faut auparavant déclarer la référence FileScriptRuntime (je crois) et une variable de type FileSystemeObjet.

    F1 peux te donner plus d'informations.

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    ok merci pour copier j'ai trouve comment tu ma dis c parfait

    j'ai un probleme avec le code enregistre sous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
     
      '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
     
     
    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
     
          NomFichier = NOM_FICHIER_ETAPE_TYPE
           Chemin = CHEMIN_FICHIER_ETAPE_TYPE
    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
     
     
    Private Sub ouvrir_Click()
     
    FICHER_OPERATION = EnregistrerUnFichier(Me.hwnd, "Enrégistrer sous", "Test.doc", "C:\")
     
    End Sub
    quand je clique sur le bouton "ouvrir" la fenetre s'ouvre mais il me marque "vous ne pouvez pas ouvrir ce dossier avec ce programme essayez un autre emplacement" avec par exemple un fichier PDF
    je joint la base

    c quoi le probléme

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    j'ai essayé le code que tu as posté. Il fonctionne chez moi.
    J'ai juste mis en commentaire ces deux lignes de EnregistrerUnFichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    '      NomFichier = NOM_FICHIER_ETAPE_TYPE
    '       Chemin = CHEMIN_FICHIER_ETAPE_TYPE
    A+

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    je t ai converti la base en forma 2000

    j'ai joint aussi un fichier pdf il faut le mettre c:\

    et apres ouvre le formulaire Logigramme Operation et ouvre le fichier que tu aura en bas apres avoir selectionne dans tous les liste déroulante

    et tu vera que quand tu ouvre il y aura un erreur

  8. #8
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Désolé. J'ai essayé dans tous les sens ... ça ne plante pas.
    Le fichier a été copié de C:\ vers C:\Documents and Settings\... , puis il a été ouvert.
    A chaque fois que je clique sur ouvrir, il s'ouvre.

    J'imagine que la ligne sur laquelle tu as l'erreur est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute Me.hwnd, "open", FICHER_OPERATION, "", CurrentProject.Path, 1
    Essai avec un autre type fichier (.txt ou .doc ou .xls) voir si c'est lié au type de fichier.

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    justement avec un pdf erreur un doc sa marche

    il n'y a pas de solution alors

  10. #10
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Je soupçonne un problème d'association type de fichier <----> programme associé.

    Pour XP :
    Dans l'explorateur de fichiers windows fais Outils->option des dossiers.
    Va dans l'onglet type de fichiers.
    Repère et sélectionne l'extension PDF
    Clique sur modifier pour voir nom de l'application associée, puis clique sur Annuler
    Clique sur Avancé
    Vérifie que l'action open existe.
    Si elle existe clique dessus puis sur Modifier...
    Tu dois voir le programme associé
    Pour moi par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "D:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe" "%1"
    L'idéal est de comparer avec un ordi n'ayant pas de problème pour voir où il y a des différences.

    A+

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    ok merci pour l'info ce sujet res donc résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/02/2008, 18h49
  2. Réponses: 8
    Dernier message: 07/07/2007, 13h39
  3. Réponses: 8
    Dernier message: 06/07/2007, 17h22
  4. Réponses: 18
    Dernier message: 11/05/2007, 20h35
  5. Script pour bloquer la fonction enregistrer sous
    Par zidrouz dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 31/01/2006, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo