Affichage d'un Word ou d'un PDF à partir d'un bouton (de commande ?) sous Access

dfarnier Messages postés 1 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 20 mars 2009 - 20 mars 2009 à 10:31
falstuff Messages postés 40 Date d'inscription jeudi 23 septembre 2004 Statut Membre Dernière intervention 26 avril 2012 - 21 mars 2009 à 00:14
Bonjour,

Je travaille sur Access 2003 sous XP.
J'ai créé une base d'environ 1500 produits.
Les fabriquants nous envoient des descriptifs techniques sous format Word (je les convertie en 2003) et PDF

Je souhaite pouvoir afficher ces descriptifs techniques en un simple clic, c'est à dire ouvrir le fichier sous Word ou Acrobat.
Je ne souhaite pas les intégrer pour des problèmes de mises à jour régulières de ces fiches

Les descriptifs techniques sont tous enregistrés sous le même type de référence (même longueur de chiffres/lettres) dans la même directory G:\Produits\descriptifs.
Cette référence est aussi la clef unique de la base, sans doublon possible...
La base est sur la directory G:\Produits

La base est consultable sur un réseau à partire de plusieurs postes qui possèdent un runtime

J'ai cherché dans toutes les questions posées sur le forum, mais n'ai pas pu trouver comment faire...

Si quelqu'un peut m'apporter la solution, je le remercie d'avance.

Précision : je ne suis pas un pro de la programmation, mes cours remontent au Basic il y a presque 30 ans...

Enfin, un grand merci à tous ceux qui s'impliquent à aider les autres

L'intelligence est la chose la mieux partagée au monde : Tout le monde pense en avoir assez, voir plus que les autres....

2 réponses

NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
20 mars 2009 à 22:14
Bonjour,

Code sous Access, donc c'est du VBA ? Si oui, pourquoi posté en .NET ?

En VBA :
Regardes l'API ShellExecute, je pense que c'est ce que tu demande.

http://nhen0039.chez-alice.fr/index.php
0
falstuff Messages postés 40 Date d'inscription jeudi 23 septembre 2004 Statut Membre Dernière intervention 26 avril 2012 2
21 mars 2009 à 00:14
Bonjour,
Ci joint le code que j'utilise pour ouvrir n'importe quel type de fichier (PDF, Word, ect...). du moment ou un logiciel adéquat est installé sur le poste.

Dans Access, crée un module et coller le code ci dessous :


Public Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, _
ByVal lpDirectory As String, _
ByVal lpResult As String) As Long

Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
ByVal dwMilliseconds As Long) As Long

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public Const SYNCHRONIZE = &H100000
Public Const INFINITE = &HFFFFFFFF


Public Function OuvrirFichier(Fichier As String, Optional attenteFermeture As Boolean = False) As Boolean
Dim fileappli As String * 250
Dim result As Integer
Dim temp As String
Dim fichAOuvrir As String
Dim i As Integer
Dim pid As Double
Dim phnd As Long

'On Error GoTo OuvrirFichier_Error

temp = Dir$(Fichier) 'recherche si le fichier existe
If temp <> "" Then
' Le fichier existe

' Recherche l'exécutable associé
result = FindExecutable(Fichier, vbNullString, fileappli)
If result > 32 Then
' Association trouvée
i = InStr(1, fileappli, Chr(0), vbBinaryCompare) - 1
If fileappli = "C:\WINDOWS\System32\shimgvw.dll" Then
fichAOuvrir = "rundll32.exe C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen " & Fichier
Else
fichAOuvrir = """" & Left$(fileappli, i) & """ """ & Fichier & """"""
'fichAOuvrir = """" & Left$(fileappli, i) & """ " & fichier
End If
Else
' Aucune association de trouvée
OuvrirFichier = False
Exit Function
End If
Else
' Le fichier n'existe pas
OuvrirFichier = False
Exit Function
End If
'MsgBox fichAOuvrir
' Ouverture du fichier
pid = Shell("" & fichAOuvrir & "", vbMaximizedFocus)

If pid <> 0 Then
' Si attente fermeture demandé, on suspend le process jusqu'à que le logiciel soit fermé.
If attenteFermeture = True Then
phnd = OpenProcess(SYNCHRONIZE, 0, pid)
If phnd <> 0 Then
Call WaitForSingleObject(phnd, INFINITE)
Call CloseHandle(phnd)
End If
End If

OuvrirFichier = True
Else
OuvrirFichier = False
End If

End Function


----------------------------------------------------------------------
Pour l'utilisation de ce code, il suffit plus que sur clic d'un bouton dans un formulaire (ou autre evenement) de lancer la fonction suivant :

Private Sub CmdOuvrirCNR_Click()

Call OuvrirFichier("G:\Produits\descriptifs\TonFichier.pdf", False)

end sub


Bonne programmation
@++
0
Rejoignez-nous