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

Macros et VBA Excel Discussion :

Lien hypertexte dans listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut Lien hypertexte dans listbox
    bonjour,

    Je me permet de vous demander un petit peu d'aide sur un soucis pour lequel je galère depuis un certain temps.
    J'alimente une listbox avec ce code (code cela me permet d'avoir un grand nombre de colonnes dans ma listbox) :

    Code Visual Basic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim aCC(0 To 2000, 0 To 50)
        For m = 1 To Sheets("Feuil2").Range("A65536").End(xlUp).Row
            If Not Sheets("Feuil2").Rows(m + 1).Hidden Then
                    For t = 0 To Colonne + 1
                        aCC(m, t) = Sheets("Feuil2").Cells(m + 1, t + 1)
                    Next t
            End If
        Next m
     
    UserForm1.ListBox1.Clear
    UserForm1.ListBox1.ColumnCount = 51
    UserForm1.ListBox1.ColumnWidths = "20;20;20;20;25;150;150;150;50;50;50;50;50"
    UserForm1.ListBox1.List() = aCC
    UserForm1.Show
    Or il s'avère que l'une de mes colonnes sont des liens hypertextes et ils n'apparaissent pas dans la listbox1 (texte brut uniquement). J'ai bien tenté d'écrire ceci :

    Code Visual Basic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ListBox1_Click()
    Dim v As Integer
     
    Worksheets("Feuil2").Select
    For v = 2 To 14
        If Cells(v, 13).Value = UserForm1.ListBox1.Text Then
        Worksheets("Feuil2").Cells(v, 13).Hyperlinks.Item.Follow
        End If
    NextEnd Sub

    Mais en vain...

    Je vous en remercie.

    T

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour à tou(te)s, Gecoo

    le texte de ton lien apparait'il ?, si oui, si tu veux atteindre ton lien hypertext, essayes en changeant le boundcolumn. (apparemment .bountcolumn = 13), mais pas testé

    bonne journée

    je viens de voir un sujet qui traite du problème, essayes ce code en adaptant à tes besoins
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub ListBox1_Click()
    Dim Lien As String
    Lien = UserForm1.ListBox1.Text
    Dim i As Integer
    i = 2
    Worksheets("Feuil1").Select
    Do While Cells(i, 1) <> ""
    If Cells(i, 1).Value = Lien Then
    Worksheets("Feuil1").Cells(i, 1).Hyperlinks.Item(1).Follow
    Exit Sub
    End If
    i = i + 1
    Loop
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut
    Re

    Merci de m'avoir répondu mais sans succès.
    J'ai tenté le boundcolumn et cela ne marche tj pas.

    Avec le script que tu m'as fourni il me met un déboguage à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Cells(i, 1).Hyperlinks.Item(1).Follow
    Il me met "erreur d'exécution 438, propriété ou méthode non gérée par cet objet"

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    je suis à la bourre, je te mets un code perso utilisé dans une textbox, vois l'aide vba à Workbook.FollowHyperlink, méthode aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub txtSiteEnt_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
     
    On Error GoTo Errare
    Application.ThisWorkbook.FollowHyperlink txtSiteEnt.Value
    Exit Sub
    Errare:
    MsgBox "L'application ne peut se connecter au site, vérifiez l'adresse, au besoin testez là dans votre navigateur pour s'assurer qu'elle est toujours valide.", , gvStrCliS
    End Sub
    cordialement,

    Didier

  5. #5
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut
    Bonjour Didier,

    Ton code me paraît une bonne solution pour ce que je souhaite mais je lutte pour le mettre en pratique.

    J'utilise cela mais ça ne fonctionne tj pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    On Error GoTo Errare
    Application.ThisWorkbook.FollowHyperlink UserForm1.ListBox1.Value
    Exit Sub
    Errare:
    MsgBox "L'application ne peut se connecter au site, vérifiez l'adresse, au besoin testez là dans votre navigateur pour s'assurer qu'elle est toujours valide.", , gvStrCliS
    End Sub
    Je pense qu'étant donné mon niveau je ne suis pas encore trop apte à bien comprendre. Peut etre pourrais tu me l'expliquer d'avantage ?

    En réfléchissant, je veux arrivé au code "littéraire" suivant :
    "en cliquant sur la ligne i de ma listbox1 (Userform1.listbox1.list(i))
    Suivre le lien hypertexte de la cellule (i, 13) de la feuil2"
    j'ai testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim I as integer
     
    For i = 2 to 2000
    Userform1.listbox1.list(i).Hyperlink.Address = Worksheet(“Feuil2”).Cells(i, 13).Hyperlink.Address
    Next
    Mais sans succès.

    Aurais tu quelques conseils ?

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Le mieux si tu veux faire ce genre de choses est d’ajouter à ta listbox une colonne (qui peut ne pas être visible) où tu stocke le numéro de ligne (voir son adresse si besoin) de la cellule concernée. Du coup, lors d’un clic sur une des valeurs, il suffit d’adresser la colonne relative au numéro de ligne correspondant.

    Si tu choisis de mettre l’adresse du site direct dans ta listbox, c’est direct si cette colonne est affectée à BoundColumn ou sinon tu lui dis quelle colonne de ta listbox prendre.

    Imaginons une feuille avec en colonne A les noms clients et en B leur adresse de site (dont le lien n’a pas besoin d’être actif).

    Tu fais une Listbox dont la source est tes 2 colonnes.

    Si tu mets la colonne 2 en BoundColonne, le code suivant est OK :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    On Error GoTo Errare
    Application.ThisWorkbook.FollowHyperlink UserForm1.ListBox1.Value
    Exit Sub
    Errare:
    MsgBox "L'application ne peut se connecter au site, vérifiez l'adresse, au besoin testez là dans votre navigateur pour s'assurer qu'elle est toujours valide."
    End Sub
    Si tu mets la colonne 1 en BoundColonne, il faut celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    On Error GoTo Errare
    Application.ThisWorkbook.FollowHyperlink UserForm1.ListBox1.Column(1, ListBox1.ListIndex)
    Exit Sub
    Errare:
    MsgBox "L'application ne peut se connecter au site, vérifiez l'adresse, au besoin testez là dans votre navigateur pour s'assurer qu'elle est toujours valide."
    End Sub
    Avec ce deuxième code, si tu as l'adresse de la cellule de base dans une troisième colonne, viser la énième colonne correspondante n'est que du traitement de chaîne de caractère.

    Vois Précieux ici sinon

    cordialement,

    Didier

  7. #7
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour Gecoo, casefayere, Ormonth,

    si les liens (de type http://www... ou "c:\monfichier")
    sont dans la colonne 13 de la feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ListBox1_Click()
    hyperlien
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub hyperlien()
    lien = ListBox1.List(ListBox1.ListIndex, 12)
    On Error GoTo Fin
        ActiveWorkbook.FollowHyperlink Address:=lien, NewWindow:=True
        Unload Me
        Exit Sub
    Fin:
        MsgBox "Impossible d'ouvrir le lien  " & lien
    End Sub

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

Discussions similaires

  1. lien hypertexte dans une zone de liste
    Par corwin44 dans le forum Access
    Réponses: 1
    Dernier message: 02/11/2005, 11h48
  2. lien hypertexte dans le corps d'un mailto
    Par ludovik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 22/10/2005, 16h10
  3. [MFC] liens hypertexte dans un CRichEditCtrl
    Par hiko-seijuro dans le forum MFC
    Réponses: 1
    Dernier message: 15/06/2005, 12h14
  4. Réponses: 3
    Dernier message: 26/10/2004, 07h31
  5. lien hypertexte dans une anim flash
    Par vedder dans le forum Flash
    Réponses: 17
    Dernier message: 14/01/2004, 14h11

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