faire une zone cliquable dans un formulaire vers un fichier

Le
Alfred WALLACE
Bonjour !!
çà faisait un moment que je ne suis pas venu
par ici, et j'espère que tous les gurus sont
en pleine forme !

dans des cellules excel j'ai des chemins complets
qui pointent vers des fichiers. "c:blablablatotoicipaul.xls"

je peut faire dans excel un lien pour cliquer dessus
et ouvrir paul.xls.

J'aimerai importer dans une table access ce chemin
complet. mais, mon soucis est que .çà n'a pas l'air
de marcher.
le champ de la table est de format "texte", mais
ensuite, je ne peux pas l'insérer dans un formulaire
pour aller ouvrir le lien.

heu, est ce que, quelqu'un a une idée ? une suggestion ?
une aspirine ?

Merci pour votre aide !


José
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
pascal58
Le #24350201
On 26 mar, 10:37, Alfred WALLACE
Bonjour !!
çà faisait un moment que je ne suis pas venu
par ici, et j'espère que tous les gurus sont
en pleine forme !

dans des cellules excel j'ai des chemins complets
qui pointent vers des fichiers. "c:blablablatotoicipaul.xls"

je peut faire dans excel un lien pour cliquer dessus
et ouvrir paul.xls.

J'aimerai importer dans une table access ce chemin
complet. mais, mon soucis est que ....çà n'a pas l'air
de marcher.
le champ de la table est de format "texte", mais
ensuite, je ne peux pas l'insérer dans un formulaire
pour aller ouvrir le lien.

heu,  est ce que, quelqu'un a une idée ? une suggestion ?
une aspirine ?

Merci pour votre aide !

José



Bonjour,

Si je comprends bien, c'est un lien hypertexte qui ouvre le document ?
À mon sens, c'est pas l'idéal. Mais il faut programmer un peu.
D'abord une table qui contient dans un champ texte le chemin et nom
complet du fichier. (dans l'exemple, le champ s'appele "Doc_Chemin")

Un formulaire basé sur cette table.
L'événement double-clic sur la zone de texte de ce champ et le code
suivant:


Option Compare Database
Option Explicit

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

Private Sub Doc_Chemin_DblClick(Cancel As Integer)
ShellExecute Me.hwnd, "open", Me.Doc_Chemin.Text, "",
CurrentProject.Path, 1
End Sub


Cdt,
Pascal
db
Le #24351101
Le 26/03/2012 10:37, Alfred WALLACE a écrit :
Bonjour !!
çà faisait un moment que je ne suis pas venu
par ici, et j'espère que tous les gurus sont
en pleine forme !

dans des cellules excel j'ai des chemins complets
qui pointent vers des fichiers. "c:blablablatotoicipaul.xls"

je peut faire dans excel un lien pour cliquer dessus
et ouvrir paul.xls.

J'aimerai importer dans une table access ce chemin
complet. mais, mon soucis est que ....çà n'a pas l'air
de marcher.
le champ de la table est de format "texte", mais
ensuite, je ne peux pas l'insérer dans un formulaire
pour aller ouvrir le lien.

heu, est ce que, quelqu'un a une idée ? une suggestion ?
une aspirine ?



Quelle version d'Access ?
pascal58
Le #24352621
On 26 mar, 18:52, db
Le 26/03/2012 10:37, Alfred WALLACE a écrit :





> Bonjour !!
> çà faisait un moment que je ne suis pas venu
> par ici, et j'espère que tous les gurus sont
> en pleine forme !

> dans des cellules excel j'ai des chemins complets
> qui pointent vers des fichiers. "c:blablablatotoicipaul.xls"

> je peut faire dans excel un lien pour cliquer dessus
> et ouvrir paul.xls.

> J'aimerai importer dans une table access ce chemin
> complet. mais, mon soucis est que ....çà n'a pas l'air
> de marcher.
> le champ de la table est de format "texte", mais
> ensuite, je ne peux pas l'insérer dans un formulaire
> pour aller ouvrir le lien.

> heu,  est ce que, quelqu'un a une idée ? une suggestion ?
> une aspirine ?

Quelle version d'Access ?- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Toutes. En fait on utilise une API
db
Le #24353521
Le 27/03/2012 08:59, pascal58 a écrit :
On 26 mar, 18:52, db
Le 26/03/2012 10:37, Alfred WALLACE a écrit :

J'aimerai importer dans une table access ce chemin
complet. mais, mon soucis est que ....çà n'a pas l'air
de marcher.





Quelle version d'Access ?





Toutes. En fait on utilise une API




La question s'adressait au demandeur initial.

db
Gloops
Le #24353561
db a écrit, le 27/03/2012 13:36 :
Quelle version d'Access ?




La question s'adressait au demandeur initial.



Oui mais il faut aller sur le groupe Excel pour comprendre pourquoi tu
poses la question.

Dans certaines versions existe un contrôle lien hypertexte. Quand il es t
à disposition, certes, il vaut autant s'en servir, sauf à faire face à
un parc hétérogène.

Et puis c'est tout, non ?
Alfred WALLACE
Le #24354061
Bonjour et merci pour vos conseils et code.

la version c'est access 2007.

Mais lorsque l'on à inséré me code dans la l'éditeur de
code, j'ai le message (approx) "seul les commentaires sont autorisé
après end sud"

bon, j'ai pas accèss, ni l'application sur mon ordinateur, mais cela
m'amène
d'autres questions :

Dans le formulaire, j'ai une zone de texte (label) qui est cliquable.
j'ai essayé, dans les propriétés de ce label, de l'initialiser avec l a
zone
de la table qui contient le chemin .... je sais pas si c'est faisable,
mais,
ce que j'aimerai faire c'est que : soit à l'ouverture du formulaire,
soit au
chargement du formulaire avec des données (par exemple dès qu'un
champ
n'est pas vide) que le label soit « chargé » avec le contenu du champ
de la table qui contient la valeur du chemain.

Remarque, il semble que j'ai bien un contrôle "lien hypertexte" donc
cliquable, mais, comment l'initialiser ?

Merci encore pour votre aide.

José
db
Le #24354231
Le 27/03/2012 17:14, Alfred WALLACE a écrit :


Remarque, il semble que j'ai bien un contrôle "lien hypertexte" donc
cliquable, mais, comment l'initialiser ?

Merci encore pour votre aide.

José



En Access 2007, si on veut que le contenu d'un champ soit cliquable, il
suffit de transformer le type du champ en "lien hypertexte" à la place
de "texte" et il sera automatiquement actif dans un formulaire ou dans
la table directement.

db
Gloops
Le #24354441
Alfred WALLACE a écrit, le 27/03/2012 17:14 :
Bonjour et merci pour vos conseils et code.

la version c'est access 2007.

Mais lorsque l'on à inséré me code dans la l'éditeur de
code, j'ai le message (approx) "seul les commentaires sont autorisé
après end sud"



C'était End Sub :)

J'ai regardé le message de Pascal : après End Sub il n'y a que "Cdt", et
sa signature. Tu n'as pas mis ça dans le module, quand même ?

Cdt voulait dire cordialement, il a dit ça comme il aurait dit coucou o u
salut.


Remarque, il semble que j'ai bien un contrôle "lien hypertexte" donc
cliquable, mais, comment l'initialiser ?



Comme le dit db, tu fais pareil que tu as fait pour la zone de texte :
après avoir ouvert le formulaire en mode conception, cliquer sur le
contrôle sur la barre d'outils (qui s'appelle boîte à outils si je ne
m'abuse), puis cliquer sur le formulaire à l'emplacement souhaité (le
curseur doit avoir la forme d'une croix), et glisser la souris jusqu'à
l'autre coin de l'endroit où tu veux le mettre, et à ce moment tu lâ ches
le bouton de la souris.

Ensuite, il reste à gérer les propriétés (la fenêtre des propri étés
s'ouvre avec F4).

Pour finir, il semble que la zone de texte ne serve plus à rien, donc t u
peux la supprimer.
Gloops
Le #24354471
Gloops a écrit, le 27/03/2012 20:21 :
C'était End Sub



Sub, si je ne m'abuse, est mis pour subroutine, c'est-à-dire
sous-programme. ça n'empêche pas qu'on puisse avoir Sub Main pour le
programme principal, d'ailleurs.

En VBA/VB6, s'agissant d'un langage modulaire, dans les modules on
trouve le code réparti dans deux types de structures :
- Sub
- Function

chacune démarrant par Sub ou Function suivi de son nom, et terminant pa r
End Sub, ou End Function, selon le cas (dans le cours du code on peut
aussi avoir Exit Sub ou Exit Function, pour dire qu'arrivé là on arrê te
l'exécution et on retourne au code appelant le cas échéant).

Pour aller vite, la différence entre Sub et Function, c'est que Functio n
retourne une valeur.

Avant les Sub et Function, en tête d'un module, on peut aussi trouver
des déclarations de variables, qui sont reconnues au niveau du module,
voire à l'extérieur si les lignes de déclarations commencent par Pu blic
plutôt que Dim.

On peut aussi avoir des déclarations de fonctions externes, appelées API
pour Application Program Interface. C'est le cas dans le code proposé
par Pascal. L'intérêt des API est de fournir des fonctionnalités no n
prévues dans l'application hôte : dans les versions qui ne comportent
pas le contrôle hypertexte, on peut obtenir cette fonctionnalité en
faisant appel aux API.

Il est de coutume de déclarer les API en Private, et de les faire
appeler par une procédure (Sub ou Function) Public dans le même modul e.
Dans un module de formulaire Access c'est même obligatoire, un module d e
formulaire Access ne peut pas accueillir une API déclarée publique.


Nous avons donc dit qu'un module peut contenir des déclarations de
variables et des déclarations d'API, suivies de procédures Sub et Fun ction.

Encore avant ça, dans les premières lignes, on peut avoir des clauses comme

Option Compare Database
pour indiquer comment doivent s'effectuer les comparaisons

Option Explicit
pour dire que si une variable est utilisée sans avoir été déclaré e,
l'exécution doit s'arrêter avec un message d'erreur, ce qui peut év iter
de tourner en rond avec une variable d'un autre type que ce qu'on croyait .
Gloops
Le #24354501
db a écrit, le 27/03/2012 18:08 :
En Access 2007, si on veut que le contenu d'un champ soit cliquable, il
suffit de transformer le type du champ en "lien hypertexte" à la plac e
de "texte" et il sera automatiquement actif dans un formulaire ou dans
la table directement.



Ah, j'ai cru qu'en détaillant la création depuis zéro j'avais oubli é
"Remplacer par", dans le menu contextuel de la zone de texte. Mais ...
là-dedans, on ne trouve pas le lien hypertexte, ou bien ?
Donc ... non, je n'ai pas oublié, ma réponse était la bonne.
Publicité
Poster une réponse
Anonyme