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

Access Discussion :

Renseigner un champ hyperlien différent pour chaque enregistrement


Sujet :

Access

  1. #1
    Membre à l'essai
    Femme Profil pro
    Gestion des griefs dans un syndicat
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestion des griefs dans un syndicat
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Renseigner un champ hyperlien différent pour chaque enregistrement
    Bonjour,

    Dans ma BD, j'ai une table contenant un champ hyperlien que je veux renseigner au besoin afin que les utilisateurs puissent avoir accès à un fichier lié à cet enregistrement spécifique. Autrement dit, pour certains enregistrements, un fichier .PDF est associé et je veux pouvoir y accéder.

    Autrement dit, je veux que l'utilisateur puisse, au besoin, renseigner le champ et avoir accès, par la suite, au fichier dont il aura spécifié le nom. J'ai créé le champ hyperlien dans ma table et l'ai inséré dans un formulaire. Je travaille en mode création le plus possible. Pour renseigner le champ, j'ai essayé différentes méthodes :

    1. Le générateur d'expression directement dans la source de contrôle de l'onglet données. Mais aussitôt que je fais afficher un nouvel enregistrement, le système affiche la boîte de dialogue.

    Nom : Données.jpg
Affichages : 287
Taille : 116,0 Ko

    2. Le générateur d'expression dans l'onglet Événement. Il me demande le nom de fichier que "Sur clic" mais ne renseigne pas le champ.

    Nom : Sur clic.jpg
Affichages : 228
Taille : 48,1 Ko

    3. J'ai aussi essayé un bouton (ce serait l'idéal) mais le champ n'est pas renseigné non plus.

    Voici le code (très simple) que j'ai mis dans le générateur de code (je concatène le chemin d'accès avec le nom du fichier qui est demandé en boîte de dialogue) :

    ="\\Serveur\Données\Sentences et Décisions\ARBITRAGE GRIEFS\SL1111\" & BEntrée("entrez le nom du fichier")

    Quelqu'un peut m'aider à régler mon souci ???

    Signé : Désespérée

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Voici un exemple


    Dans un module ce code (de Loufab )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    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
     
    Public Sub Ouvrir_fichier(Chemin As String)
     
    'Ouvrir, avec le pgm associé, le fichier dont le chemin est passé en paramètre
    ShellExecute Application.hWndAccessApp, "open", Chemin, "", "", 1
     
    End Sub

    Et le code associé au bouton du formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Compare Database
    Option Explicit
     
    Private Sub btAfficher_Click()
     Call Ouvrir_fichier(Me.txtAdresse)
    End Sub
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Personnellement, je trouve les champs hyperliens plus un problème qu'une solution.

    Voilà ce que j'utilise :
    1. Une champ texte normal (255 car)
    2. Du code VBA qui réagi au double click pour ouvrir le fichier (l'instruction FollowHyperLink est fabuleuse pour cela).

      Ici mon code :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
          Call FollowHyperlink(infoFichier.Repertoire_Nom_Extention)
    3. Un bouton qui appelle du code VBA qui lance la sélection de fichier.

      ici 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
          Dim fd As Office.FileDialog
          Dim fichier As Variant
       
          Set fd = Application.FileDialog(msoFileDialogFilePicker)
       
          With fd
              'Seulement 1 fichier
              .AllowMultiSelect = False
       
              'Défini les filtres de sélection
              Call .Filters.Clear
              Call .Filters.Add("Fichier Access", "*.accdb;*.mdb")
              Call .Filters.Add("Tous les fichiers", "*.*")
       
              'Défini le Repertoire par défaut
              If Not IsNull(Me.RepertoireFichier) Then
                  .InitialFileName = Me.RepertoireFichier
              End If
       
          End With
       
          'Affiche la boite de dialogue et récupère les fichiers
          If fd.Show Then
                  'Il y a un fichier choisi
                  For Each fichier In fd.SelectedItems 'Boucle sur 1 seul élément
                      Me.RepertoireFichier = Left(fichier, InStrRev(fichier, "\") - 1)
                      Me.NomFichier = Mid(fichier, InStrRev(fichier, "\") + 1)
                  Next fichier
       
              Else
                  'Ne rien faire, l'utilisateur a abandonné la sélection
          End If
       
          set fd=nothing
      Ça prend une référence à Microsoft Office Object Library.
      Dans les formulaires en mode feuille de données j'ai remplacé le bouton par un champ texte qui contient "..." ce qui rappel le bouton [...] dans la feuille de propriété.


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Gestion des griefs dans un syndicat
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestion des griefs dans un syndicat
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Excusez ma lenteur de compréhension...
    Bonjour,

    Je ne suis pas sûre de bien comprendre comment l'utilisateur va renseigner lui-même le lien dans votre exemple.

    Pouvez-vous éclairer ma lanterne ?



  5. #5
    Membre à l'essai
    Femme Profil pro
    Gestion des griefs dans un syndicat
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestion des griefs dans un syndicat
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Merci d'avoir répondu si rapidement !
    Dans mon empressement, j'avais oublié de le mentionner dans le message précédent.

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Si c'est à moi que tu poses la question.

    Le formulaire permet de saisir la colonne Adresse, l'adresse du fichier (dans mon exemple, sur internet).

    Une fois ce champ complété, le clic sur le bouton t'ouvre le fichier avec le programme que l'utilisateur a associé au type de fichier.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Membre à l'essai
    Femme Profil pro
    Gestion des griefs dans un syndicat
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestion des griefs dans un syndicat
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Renseignement du lien
    Bonjour ClaudeLELOUP,

    Je vois ce que tu veux dire, mais l'utilisateur ne connaît pas le chemin d'accès (il s'agit de fichiers sur notre réseau interne). C'est pour cette raison que j'utilise une boîte de dialogue pour concaténer le chemin d'accès et le nom du fichier. L'utilisateur doit nécessairement être interpelé pour le nom du fichier et le chemin concaténé ensuite et le tout déposé dans le champ de l'enregistrement et y rester, prêt à être utilisé.


    Merci pour tout !

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Je ne comprends pas.

    Essaie de me décrire les étapes sans me parler de code informatique.

    Qu'a l'utilisateur devant les yeux ?

    Que souhaites-tu qu'il puisse faire ?

    Comment l'utilisateur peut-il obtenir l'info pour le faire ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  9. #9
    Membre à l'essai
    Femme Profil pro
    Gestion des griefs dans un syndicat
    Inscrit en
    Septembre 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Gestion des griefs dans un syndicat
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Désolée
    Je suis désolée de ne pas être assez claire.

    J'y vais par étapes :

    1. Pour certains enregistrements, un fichier est requis (pour certains dossiers de griefs, il existe une décision arbitrale s'y rattachant). L'utilisateur doit pouvoir :
    a. Ajouter le lien qui le mènera au fichier s'il n'y est pas
    b. Cliquer sur le lien pour consulter le fichier s'il y est.
    2. Quand le fichier n'y est pas et qu'il est requis, l'utilisateur appuie sur le bouton "Choisir le fichier de la décision" et entre le nom du fichier. Le chemin d'accès et le nom du fichier est versé dans le champ "Décision arbitrale", y demeure et est utilisé au besoin par la suite.

    Voir l'encadré rouge de la capture d'écran du formulaire.

    Nom : Table événements.jpg
Affichages : 209
Taille : 367,3 Ko

  10. #10
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Claude.

    À propos de ma solution.

    Bonjour,

    Je ne suis pas sûre de bien comprendre comment l'utilisateur va renseigner lui-même le lien dans votre exemple.

    Pouvez-vous éclairer ma lanterne ?
    L'utilisateur doit appuyer sur le bouton qui appelle le code qui ouvre l'écran de sélection de fichier (c'est comme quand tu veux ouvrir un fichier Excel à partir de Excel).
    Une fois qu'il a navigué jusqu'au fichier, il clique dessus.
    Le système enregistre l'information (personnellement j'ai séparé le chemin d'accès du répertoire) dans la BD.

    Après par un double click l'utilisateur signale qu'il veut ouvrir el fichier et le système va le chercher avec FollowHyperlink.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  12. #12
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Si la problématique se résume ainsi :

    - si l’adresse du fichier est déjà mentionnée, un clic sur le bouton « Afficher le fichier » montre le contenu du fichier en avant-plan avec le programme que l’utilisateur a associé à l’extension d’un tel fichier (ex. Word pour .doc ; Adobe pour .pdf…). Quand l’utilisateur referme le fichier, Access revient au premier plan ;
    - si l’adresse n’est pas encore mentionnée ou qu’il convient de la modifier, un clic sur le bouton « Choisir le fichier de la décision », affiche la boîte de dialogue standard pour désigner le fichier.
    Le choix de l’utilisateur provoque : la mémorisation de l’adresse et l’affichage du contenu.

    Ma proposition devient alors :

    N.B. On peut paramétrer la fonction OuvrirUnFichier() pour qu’elle affiche un répertoire par défaut.

    Code associé au formulaire

    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
    Option Compare Database
    Option Explicit
     
    Private Sub btAfficher_Click()
     If existeFileFSO(Me.Adresse) Then
         Call Ouvrir_fichier(Me.txtAdresse)
       Else
         MsgBox "Ce fichier n'est pas disponible"
     End If
    End Sub
     
    Private Sub BtChercher_Click()
      On Error GoTo GestionErreur
      Me.txtAdresse = OuvrirUnFichier(Me.hwnd, "Quel Fichier ?", 1)
      Me.Refresh
      Call btAfficher_Click
    GestionErreur:
      Exit Sub 'Abandon de la recherche
    End Sub
     
    Private Sub txtAdresse_AfterUpdate()
      Me.Refresh
    End Sub
    La fonction OuvrirUnFichier est dans la FAQ : https://access.developpez.com/faq/?p...#AffBoitDialog
    La fonction existeFileFSO est dans la FAQ : https://access.developpez.com/faq/?p...eexistFunction
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

Discussions similaires

  1. Creer une version différente à chaque enregistrement vba.
    Par nonesofar dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/06/2016, 17h33
  2. Réponses: 9
    Dernier message: 14/05/2012, 15h41
  3. Réponses: 6
    Dernier message: 11/08/2010, 15h50
  4. [MySQL] Affecter chaque enregistrement d'un champ a une variable
    Par DjChat dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/05/2008, 16h31
  5. [CR8] Avoir un champ utilisateur sur chaque enregistrement
    Par Invité dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 22/12/2006, 09h01

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