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 :

Liens hypertexte dans une listebox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2021
    Messages : 14
    Par défaut Liens hypertexte dans une listebox
    Bonjour,

    Dans la continuité de mon projet de créer un "annuaire à citations", je me permets de créer un topic concernant une nouvelle problématique.

    J'ai créé dans mon document un module de recherche dans lequel je peux taper un mot et qui va chercher si ce mot est présent dans une colonne définie (la colonne K).

    Nom : image_2021-03-10_193642.png
Affichages : 144
Taille : 21,0 Ko

    Les résultats sont affichés sur une listbox qui me donne l'ID correspondant pour aller la chercher. Cependant j'aimerai que lorsque je clique sur le résultat de la listebox, il m'emmène directement à la ligne du tableau concernée.

    Quelqu'un aurait-il une idée ?

    J'ai joins le fichier excel au besoin (voir Citations.xlsm) sinon le code est le suivant :

    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
    Private Sub TextBox1_Change()
     
        Application.ScreenUpdating = False
     
        Range("A7:A1000").Interior.ColorIndex = 0 'enlève la couleur lorsqu'on vide la recherche sur la colonne A
        Range("B7:B1000").Interior.ColorIndex = 0
        Range("C7:C1000").Interior.ColorIndex = 0
        Range("D7:D1000").Interior.ColorIndex = 0
        Range("E7:E1000").Interior.ColorIndex = 0
        Range("F7:F1000").Interior.ColorIndex = 0
        Range("G7:G1000").Interior.ColorIndex = 0
        Range("H7:H1000").Interior.ColorIndex = 0
        Range("I7:H1000").Interior.ColorIndex = 0
        Range("J7:H1000").Interior.ColorIndex = 0
        Range("K7:H1000").Interior.ColorIndex = 0
        ListBox1.Clear
     
        If TextBox1 <> "" Then 'Si la boite de recherche n'est pas vide
            For ligne = 7 To 100 'champs où la recherche est faites
                If Cells(ligne, 11) Like "*" & TextBox1 & "*" Then 'Si la cellule de la 1ère colonne correspond à la recherche
                    Cells(ligne, 1).Interior.ColorIndex = 8 'surligne la 1ère colonne de la ligne en vert
                    Cells(ligne, 2).Interior.ColorIndex = 8
                    Cells(ligne, 3).Interior.ColorIndex = 8
                    Cells(ligne, 4).Interior.ColorIndex = 8
                    Cells(ligne, 5).Interior.ColorIndex = 8
                    Cells(ligne, 6).Interior.ColorIndex = 8
                    Cells(ligne, 7).Interior.ColorIndex = 8
                    Cells(ligne, 8).Interior.ColorIndex = 8
                    Cells(ligne, 9).Interior.ColorIndex = 8
                    Cells(ligne, 10).Interior.ColorIndex = 8
                    Cells(ligne, 11).Interior.ColorIndex = 8
                    ListBox1.AddItem Cells(ligne, 1)
     
                End If
            Next
        End If
     
    End Sub
    Vous remerciant par avance de l'aide apportée ou du temps consacré.

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,
    Citation Envoyé par Zhankou Voir le message
    Cependant j'aimerai que lorsque je clique sur le résultat de la listebox, il m'emmène directement à la ligne du tableau concernée.
    Voici ton code épuré avec le positionnement que tu voulais obtenir.
    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
    Private Sub ListBox1_Click()
        Rows(ListBox1.List(ListBox1.ListIndex, 2)).Activate
    End Sub
     
    Private Sub TextBox1_Change()
     
        Application.ScreenUpdating = False
     
        Range("A7:H1000").Interior.ColorIndex = 0 'enlève la couleur lorsqu'on vide la recherche sur la colonne A
        ListBox1.Clear
     
        If TextBox1 <> "" Then 'Si la boite de recherche n'est pas vide
            For ligne = 7 To 100 'champs où la recherche est faites
                If Cells(ligne, 11) Like "*" & TextBox1 & "*" Then 'Si la cellule de la 1ère colonne correspond à la recherche
                    Cells(ligne, 1).Resize(1, 11).Interior.ColorIndex = 8 'surligne la 1ère colonne de la ligne en vert
                    ListBox1.AddItem Cells(ligne, 1)
                    ListBox1.List(ListBox1.ListCount - 1, 2) = ligne
                End If
            Next
        End If
     
    End Sub
    Fichiers attachés Fichiers attachés

  3. #3
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2021
    Messages : 14
    Par défaut
    Merci infiniment c'est parfait !
    Juste si ce n'est pas trop demandé, vous pensez qu'il serait possible que lorsque l'on reclique sur l'ID de la listbox, si on a bougé après avoir été déplacé à la ligne on retourne à nouveau dessus en recliquant dessus ?

    Encore merci.

  4. #4
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Bien sûr, lorsque tu cliques sur la liste, tu sélectionnes la ligne affichée et l'événement te positionne sur la ligne correspondante.

  5. #5
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2021
    Messages : 14
    Par défaut
    Bonjour,

    Oui mais actuellement si je clique dessus et qu'ensuite je scroll vers le bas, il n'est pas possible de cliquer à nouveau sur l'ID. Si j'ai bien compris ton code, c'est parce que ton code sélectionne la ligne et c'est ce qui te déplace à l'endroit souhaité. Or si la ligne est déjà sélectionnée, il n'est pas possible de cliquer à nouveau dessus. Il faudrait donc je suppose créer dans la foulée un 'select' puis 'unselect' mais je n'ai pas trouvé la fonction associée.

    Aussi, j'ai mis en place suite à ce que tu m'as transmis un bouton reset, qui reset tout les filtres de mon tableau et la recherche. Pour effacer la listbox et les lignes pas de problème par contre je ne trouve pas non plus la commande pour effacer le champs dans la textbox.

    Le code est actuellement le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1
    For i = 1 to 11
    Cells(2,i)AutoFilter Field:=i, Criteria1:="*"
    Range ("A3:K1000").Interior.ColorIndex=0
    ListBox1.Clear
    'Textbox1.Clear -> ligne qui ne marche pas
    End Sub
    pour la deuxième partie c'est bon, je viens de réaliser qu'il suffisait de faire Textbox1.text = "".

  6. #6
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2021
    Messages : 14
    Par défaut
    Petit up, je n'ai pas encore trouvé de solution concernant le fait de pouvoir cliquer à plusieurs reprises sur le tableau une fois la ligne sélectionnée et j'aimerai par ailleurs ajouté le fait que la recherche ne tienne pas compte des lignes masquées.

    Si quelqu'un a une idée, ce serait génial.

    Merci par avance.

  7. #7
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,
    Citation Envoyé par Zhankou Voir le message
    Oui mais actuellement si je clique dessus et qu'ensuite je scroll vers le bas, il n'est pas possible de cliquer à nouveau sur l'ID.
    je ne comprend pas ce que tu dis car comme ta listbox est toujours visible le code ne s'occupe pas de tes déplacements et te repositionne bien sur la ligne de l'id cliqué même si elle n'est plus visible.

    Si à côté, tu mets des filtres qui masquent l'id choisi même avec tous les reset de ta terre tu ne pourras pas l'afficher.

Discussions similaires

  1. Ouvrir fichier sur lien hypertexte dans une liste
    Par JimmyB dans le forum Access
    Réponses: 10
    Dernier message: 18/10/2006, 15h28
  2. Réponses: 12
    Dernier message: 28/07/2006, 16h16
  3. Réponses: 5
    Dernier message: 24/05/2006, 23h53
  4. lien hypertexte dans une zone de liste
    Par corwin44 dans le forum Access
    Réponses: 1
    Dernier message: 02/11/2005, 11h48
  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