Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/07/2011, 14h48   #1
Invité de passage
 
Homme simon joubert
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme simon joubert
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 0
Points : 0
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

Citation:
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 :
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
simjoubert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 15h50   #2
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour simjoubert

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

tu pourrais à la rigueur écrire
Code :
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 :
1
2
Public Dim Adresse_Base As String
Adresse_Base = CurrentProject.Path
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/07/2011, 16h59   #3
Invité de passage
 
Homme simon joubert
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme simon joubert
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 0
Points : 0
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 :
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 :
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 :
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
simjoubert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 18h32   #4
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
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 ?
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 19h32   #5
Invité de passage
 
Homme simon joubert
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme simon joubert
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 0
Points : 0
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
simjoubert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 22h59   #6
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
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 ?
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2011, 06h50   #7
Invité de passage
 
Homme simon joubert
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme simon joubert
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 0
Points : 0
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...)
simjoubert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2011, 16h23   #8
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
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
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2011, 23h15   #9
Invité de passage
 
Homme simon joubert
Inscription : juillet 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme simon joubert
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : juillet 2011
Messages : 5
Points : 0
Points : 0
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.
simjoubert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 09h57   #10
Membre Expert
 
Avatar de stigma
 
Homme Alain
Développeur informatique
Inscription : octobre 2003
Messages : 846
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 61
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : octobre 2003
Messages : 846
Points : 1 053
Points : 1 053
Envoyer un message via MSN à stigma
Ma solution :
Code :
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.
__________________
Je ne suis pas une adresse IP, je suis un homme libre !
stigma est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h03.


 
 
 
 
Partenaires

Hébergement Web