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

Excel Discussion :

Aide pour lien hypertexte dans un formulaire Userform [XL-2007]


Sujet :

Excel

  1. #1
    Futur Membre du Club Avatar de Le Gnark
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juin 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Aide pour lien hypertexte dans un formulaire Userform
    Bonjour à tous!!!

    Je vous explique ma galère... ^^

    J'ai créé un tableau excel, servant de base de données pour les articles de loi et pour les extraits de textes de références.
    Dans mon boulot, je suis amené, (moi et mes collègues) à rédiger des courriers et études citant les articles ainsi que les extraits relatifs.

    Ce tableau se présente sous forme basique de 6 colonnes :
    A : Thème de droit contesté
    B : Typologie de droit
    C : Motifs de contestation
    D : Sous-motifs
    E : Article de référence
    F : Extrait de l'article

    Dans la colonne E, j'indique la référence de l'article (exemple "L-815.2), et j'y insère un lien hypertexte renvoyant vers la page internet officiel de l'article (codes, légifrance, etc...)

    Actuellement je suis en train d'alimenter ce tableau, et à terme, il devra servir de base ou bibliothèque de recherche et consultation pour moi et mes collègues.
    Ayant des collègues pas super doués sur excel... j'ai modélisé un userform qui permet de rechercher le texte et l'article plus simplement, en choisissant dans 4 combobox (filtres en cascades) les données des colonnes A, puis B, C, et D, et dans 2 textbox, se rapporte la référence de l'article (E -> Textbox1) ainsi que l'extrait voulu (F -> Textbox2).

    J'ai aussi paramétré 2 boutons (commandbutton) qui permettent de copier les données trouvées dans les textbox, afin de pouvoir les coller dans le courrier word à rédiger.

    Voici maintenant le problème que je rencontre, j'ai créer un bouton (commandbutton5) qui aurait la fonction de lancer le lien hypertexte associé à l'article de référence(E) trouvé dans la textbox.
    Mais voilà... après de nombreux essais, et recherches... je n'y arrive pas et sollicite votre aide!!!!

    Comme piste, je cherchais une fonction du genre :
    "Cliquer sur la cellule (et donc activer le lien hypertexte) correspondant à la source de la donnée Textbox1 trouvée".

    Je vous joint le fichier... qui serait certainement plus parlant! ^^
    Bibliothèque.xls

    SOS!!! ^^

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Je n'ai pas regardé ton fichier par mesure de sécurité...
    Mais d'après ce que je comprends, tu pourrais essayer avec l'API ShellExecute

    Tu places ceci en entête de module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public 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
    Puis dans ta procédure, tu l'appelles ainsi pour démarrer le programme par défaut, le lien étant en E2, ici...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim Ret As Long
     
        Ret = ShellExecute(0, "Open", Range("E2"), "", "", 0)
    MPi²

  3. #3
    Futur Membre du Club Avatar de Le Gnark
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juin 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Test
    Je te rassure... mon fichier n'est pas infecté! ^^

    Je vais tester demain matin et je te tiens au jus.

    Je peux te filer un aperçu "visuel du soucis" :


    Le tableur :
    Nom : tabl.PNG
Affichages : 540
Taille : 49,7 Ko
    Le userform
    Nom : 680697Capture.png
Affichages : 484
Taille : 40,9 Ko
    Les codes :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    Dim f
     
    Private Sub UserForm_Initialize()
      Set f = Sheets("LEGIS")
      Set Mondico = CreateObject("Scripting.Dictionary")
      For Each c In f.Range("A4:A" & f.[A65000].End(xlUp).Row)
        Mondico(c.Value) = ""
      Next c
      temp = Mondico.keys
      Call Tri(temp, LBound(temp), UBound(temp))
      Me.ComboBox1.List = temp
    End Sub
    Private Sub ComboBox1_click()
      Me.ComboBox2.Clear
      Me.ComboBox3.Clear
      Me.ComboBox4.Clear
      Set Mondico = CreateObject("Scripting.Dictionary")
      For Each c In f.Range("A4:A" & f.[A65000].End(xlUp).Row)
        If c = Me.ComboBox1 Then Mondico(c.Offset(, 1).Value) = ""
      Next c
      temp = Mondico.keys
      Call Tri(temp, LBound(temp), UBound(temp))
      Me.ComboBox2.List = temp
    End Sub
    Private Sub ComboBox2_click()
      Me.ComboBox3.Clear
      Me.ComboBox4.Clear
      Set Mondico = CreateObject("Scripting.Dictionary")
      For Each c In f.Range("A4:A" & f.[A65000].End(xlUp).Row)
        If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 Then Mondico(c.Offset(, 2).Value) = ""
      Next c
      temp = Mondico.keys
      Call Tri(temp, LBound(temp), UBound(temp))
      Me.ComboBox3.List = temp
    End Sub
    Private Sub ComboBox3_click()
      Me.ComboBox4.Clear
      Set Mondico = CreateObject("Scripting.Dictionary")
      For Each c In f.Range("A4:A" & f.[A65000].End(xlUp).Row)
        If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 And c.Offset(, 2).Value = Me.ComboBox3 Then Mondico(c.Offset(, 3).Value) = ""
      Next c
      temp = Mondico.keys
      Call Tri(temp, LBound(temp), UBound(temp))
      Me.ComboBox4.List = temp
    End Sub
     
    Private Sub ComboBox4_click()
      For Each c In f.Range("A4:A" & f.[A65000].End(xlUp).Row)
        If c = Me.ComboBox3 And c.Offset(, 3) = Me.ComboBox4 Then Me.TextBox1 = c.Offset(, 5)
        If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 And c.Offset(, 2).Value = Me.ComboBox3 And c.Offset(, 3).Value = Me.ComboBox4 Then Me.TextBox1 = c.Offset(, 4)
        If c = Me.ComboBox3 And c.Offset(, 3) = Me.ComboBox4 Then Me.TextBox2 = c.Offset(, 6)
        If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 And c.Offset(, 2).Value = Me.ComboBox3 And c.Offset(, 3).Value = Me.ComboBox4 Then Me.TextBox2 = c.Offset(, 5)
      Next c
    End Sub
     
     
     
    Sub Tri(a, gauc, droi) ' Quick sort
      ref = a((gauc + droi) \ 2)
      G = gauc: d = droi
      Do
        Do While a(G) < ref: G = G + 1: Loop
        Do While ref < a(d): d = d - 1: Loop
          If G <= d Then
            temp = a(G): a(G) = a(d): a(d) = temp
            G = G + 1: d = d - 1
          End If
        Loop While G <= d
        If G < droi Then Call Tri(a, G, droi)
        If gauc < d Then Call Tri(a, gauc, d)
    End Sub
     
    Private Sub CommandButton1_Click()
     
        Unload Me
     
    End Sub
    Private Sub CommandButton2_Click()
     Unload Me
     UserForm1.Show
     End Sub
     
    Private Sub CommandButton3_Click()
    With TextBox1
         .SelStart = 0
         .SelLength = Len(TextBox1)
         .Copy
         End With
     End Sub
     
    Private Sub CommandButton4_Click()
    With TextBox2
         .SelStart = 0
         .SelLength = Len(TextBox2)
         .Copy
         End With
     End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Essaie ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton5_Click()
        Dim Ret As Long
     
        Ret = ShellExecute(0, "Open", Range("E" & Ligne).Hyperlinks(1).Address, "", "", 0)
    End Sub
    Pour savoir où tu en es, mets en entête de module, sous la déclaration de l'API mentionnée
    Et pour connaître la valeur de la ligne, modifie ceci dans ton code d'Userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ComboBox4_click()
      For Each c In f.Range("A4:A" & f.[A65000].End(xlUp).Row)
        If c = Me.ComboBox3 And c.Offset(, 3) = Me.ComboBox4 Then Me.TextBox1 = c.Offset(, 5): Ligne = c.Row: Ligne = c.Row
        If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 And c.Offset(, 2).Value = Me.ComboBox3 And c.Offset(, 3).Value = Me.ComboBox4 Then Me.TextBox1 = c.Offset(, 4): Ligne = c.Row
        If c = Me.ComboBox3 And c.Offset(, 3) = Me.ComboBox4 Then Me.TextBox2 = c.Offset(, 6)
        If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 And c.Offset(, 2).Value = Me.ComboBox3 And c.Offset(, 3).Value = Me.ComboBox4 Then Me.TextBox2 = c.Offset(, 5)
      Next c
    End Sub
    PS: quand je suis au bureau, je ne prends pas de chance avec la plupart des fichiers joints
    PS2: quand tu mets du code, utilise le bouton # pour formater ton code et le rendre plus lisible
    MPi²

  5. #5
    Futur Membre du Club Avatar de Le Gnark
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juin 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Essai N°1
    Bon alors...
    Je viens d'essayer, et j'ai un message d'erreur!

    je ne suis pas certain de savoir ou intégrer ces codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public 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 Ligne As Long
    (je ne connais pas bien l'API Shell)

  6. #6
    Futur Membre du Club Avatar de Le Gnark
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juin 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 19
    Points : 9
    Points
    9
    Par défaut hé hé hé
    Je viens de re-essayer...

    Et ca a l'air de fonctionner!!!!

    SUPER!

    Un big-grand merci!

    Je vais faire quelques test avant de confirmer le bon fonctionnement, mais j'y crois! ^^

  7. #7
    Futur Membre du Club Avatar de Le Gnark
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juin 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 19
    Points : 9
    Points
    9
    Par défaut CA MARCHE!!!!!!!!!!!!
    Merci beaucoup Parmi!
    Tu es le meilleur! ^^

    Tout fonctionne du feu de dieu!

    Problème résolu!


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Modifier un lien hypertexte dans un formulaire
    Par pierrequimousse dans le forum Runtime
    Réponses: 2
    Dernier message: 04/03/2010, 10h10
  2. Affichage lien Hypertexte dans tableau Formulaire
    Par madchemiker dans le forum IHM
    Réponses: 2
    Dernier message: 23/05/2007, 11h40
  3. Réponses: 4
    Dernier message: 17/05/2007, 14h17
  4. Lien hypertexte dans un formulaire
    Par 33ctdebut dans le forum IHM
    Réponses: 3
    Dernier message: 02/02/2007, 22h12
  5. Aide pour un alignement dans un formulaire
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 16/08/2005, 14h13

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