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 :

créer une constante chemin de la base de donnée


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Juillet 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut créer une constante chemin de la base de donnée
    Bonjour
    Je suis nouveau sur le forum et sur l'utilisation de VBA
    Je souhaite récupérer dans un champ de formulaire la valeur d'une constante qui serait le chemin de la la base de données.
    Tout cela dans le but de générer un lien hypertexte composé par concaténation de plusieurs champ du formulaire

    chemin base de donnée &"\Archives\"&[Année]&"\"&[Journal]&"\"&[Pièce]

    j'ai trouver sur le forum plusieurs choses et j'ai essayé dans un module de déclarer ma variable mais je n'y arrive pas

    MsgBox ParentDir(Application.CurrentDB.Name)
    En fait, Application.CurrentDB.Name fournit le chemin complet avec le nom de la base. La fonction ParentDir() sert en fait à soustraire le nom de la base du chemin d'accès.

    Autre possibilité :

    CurrentProject.Path
    donc j'ai créer un module dans lequel j'ai ecrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Compare Database
    Option Explicit
     
     
    Public Const Adresse_Base As String = CurrentProject.Path
     
    Public Function repbase() As String
    repbase = Adresse_Base
    End Function
    il ya une erreur sur .Path
    merci de m'éclairer

  2. #2
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bonjour simjoubert

    Une constante doit être déclarée et ne peut être modifié.

    tu pourrais à la rigueur écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Const Adresse_Base As String = "C:\mon_repertoire\mon_projet"
    mais en aucun cas instancier ta constante

    La seule solution est d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Dim Adresse_Base As String
    Adresse_Base = CurrentProject.Path

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Juillet 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci ça marche !
    Nouvelle étape et nouveau problème
    une fois que j'ai généré mon lien hypertexte :

    sur clic d'un bouton "Créer PDF"
    en procédure evenementielle :
    1-je fais un copier de la valeur du lien hypertexte
    2- j'ouvre l'application pour créer des fichiers PDF

    une fois le fichier PDF près à enregistré je fais un coller (du lien hypertexte).

    Je souhaite avant m'assurer que les répertoire existent donc entre 1 et 2 j'ai ecrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim repertoire As String
    repertoire = Me.repertoire
    MakeSureDirectoryPathExists repertoire
    ou Me.repertoire est le lien hypertexte sans le nom du fichier

    et dans un module j'ai ecrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option Compare Database
     
    Public Declare Function MakeSureDirectoryPathExists _
    Lib "imagehlp.dll" (ByVal lpPath As String) As Long
    je n'ai pas d'erreur de compilation mais cela ne me créer pas mes répertoires

    Voici l'ensemble de mon code sur clic du bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Commande14_Click()
    Dim repertoire As String
    repertoire = Me.repertoire
    MakeSureDirectoryPathExists repertoire
     
    Me.URL_Fichier.SetFocus
    Me.URL_Fichier.SelStart = 0
    Me.URL_Fichier.SelLength = Len(URL_Fichier.Text)
     'le texte est sélectionné, il nous reste qu'à le copier.
    DoCmd.RunCommand acCmdCopy
    Id = Shell("C:\Program Files\PDF24\pdf24-Editor.exe", vbMaximizedFocus)
    End Sub
    Merci de m'éclairer à nouveau

  4. #4
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Je vois que tu es familiarisé avec les API windows !

    Cependant, ces procédures existes nativement sur Access, tant le makedir (commande MKDIR) que l'export PDF de certaines données Access (docmd.outputTO)
    Que cherches-tu à faire exactement ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Juillet 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci de me répondre
    Contrairement à ce que tu penses je ne suis pas familiarisé avec les API Windows j'ai juste fait de longues recherches sur les forums.
    Une fois cliqué sur le bouton créer PDF cela m'ouvre mon application pour faire des scan to PDF. le scan fait et la mise en page du PDF réalisée je le sauvegarde avec en nom de fichier le coller du lien hypertexte réaliser précédemment dans Access. comme cela mon lien pointe bien sur mon fichier nouvellement créer.
    cependant pour enregistrer mon fichier PDF il faut que les répertoires qui composent le lien hypertexte existent et sinon les créer avant d'enregistrer le fichier PDF
    Voila pour le principe
    Le problème c'est le code je veux bien un coup de pouce.

    Pour la réponse voici les noms de champ de mon formulaire
    URL_Fichier = lien hypertexte(concaténation du chemin de la base de donnée &"\"&[Année]&"\"&[Journal]&"\"&[Pièces]&".PDF" )
    Repertoire= lien hypertexte sans le nom du fichier et sans l'extension concaténation du chemin de la base de donnée &"\"&[Année]&"\"&[Journal])
    Scan2Pdf=Bouton

  6. #6
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Je ne suis pas sur de comprendre.
    C'est bien des objets access que tu souhaite sauvegarder en PDF (table, requete, formulaire, état ...) ? Où alors Access ne te sert que de table de pilotage pour convertir des fichiers externes à Access en PDF ?

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Juillet 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour
    Ma base Access est une base de gestion de ma copropriété, je suis le syndic bénévole. J'y enregistre tout les mouvements comptables appels de fond, facture fournisseurs, règlements...
    et à l'occasion de la saisie de ses enregistrements j'archives les pièces comptables (papier) en les scannant et je fais un lien hypertexte sur les fichiers PDF de ces scans pour pouvoir avoir une trace numérique de ces documents papier. comme cela une fois que le documents disparaît( règlement par chèque) j'en garde une trace ou bien cela m'évite de ressortir et de fouiller dans les classeur pour retrouver le détail d'un enregistrement. un clic sur le lien et le PDF apparaît.
    J’espère que tu as compris le but de ma question précédente.
    Je souhaite avoir une organisation des PDF générés via les scans et ceux directement créer par Access (type appel de fond que j'envoi aux copropriétaires).
    Les PDF sont classés dans le répertoire Archives puis par années puis par type d'entrée journal (appels, banques, répartition, achats, ...)
    C'est pour cela que quand je clique sur le bouton scan2PDF je fais un Shell vers une application externe de scan2PDF. Avec en mémoire dans le presse papier le lien hypertexte de l'archives et quand je l'enregistre dans l'application externe je fais un Ctrl+V dans la fenêtre d'enregistrement. en revenant dans Access le lien hypertexte de ma base Access pointe bien sur l'archive nouvellement scannée en PDF.
    Je reviens donc à ma question comment s'assurer que les différents répertoire qui composent ce lien hypertexte généré par Access existent réellement sur mon disque dur avant que je n'enregistre les fichiers PDF issues de scan dans mon application tierce et les créer dans la négative.( nouvel exercice comptable = nouvelle année , évolution du classement des pièces...)

  8. #8
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bonjour,

    Pour t'assurer de l'existence de tes répertoire, ainsi que de la création de ceux-ci, les commandes dir et mkdir te suffiront amplement


    pour la création/suppression/modifcation, regarde les FAQ ici

    Pour connaitre les informations sur un fichier/répertoire, regarde ici

    Pour la création de PDF directement à partir d'access, la méthode OutputTo devrait convenir à tes besoins

    Par contre, je ne connais pas de visionneuse interne de fichier PDF sous Access (j'en ai une pour les images JPEG), ce qui signifie qu'il te faudra utiliser un shell externe avec Acrobat reader (ou une autre appli) pour pouvoir les visualiser. Avis aux autres membres du forum s'ils en connaissent une

  9. #9
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Juillet 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour tes réponses éclairées. je vais regarder les liens que tu m'as donné.
    Si j'y arrive je clôturerai la discussion pas le tag "résolu sinon je te demanderai des conseils à nouveau merci encore.

  10. #10
    Membre expérimenté Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 118
    Points : 1 614
    Points
    1 614
    Par défaut
    Ma solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        '-----------  Chemin de la base SQL
        Dim i As Integer
        s_CheminBase = CurrentDb.Name
        For i = Len(s_CheminBase) To 1 Step -1
            If Mid(s_CheminBase, i, 1) = "\" Then Exit For
        Next
        s_CheminBase = Left(s_CheminBase, i)
        s_CheminGraphs = s_CheminBase & "Graphs\"
    Je mets mes icones et autres graphs dans un dossier. ça fait plus propre.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/10/2013, 20h31
  2. Comment créer une interface excel sur la base d'un tableau.?
    Par anasleco dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/09/2009, 18h03
  3. [XL-2003] Créer une constante depuis des cellules
    Par MiXinG dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/05/2009, 10h54
  4. Créer une liste d'option sur base d'une db
    Par HwRZxLc4 dans le forum Langage
    Réponses: 10
    Dernier message: 24/04/2008, 15h26
  5. [debutant] créer une constante tableau
    Par Emcy dans le forum C
    Réponses: 86
    Dernier message: 22/09/2006, 08h39

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