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 et programmation [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut Lien hypertexte et programmation
    Bonjour,

    J'aurais une petite question, j'aimerai mettre sous certaines cellules (ex : G40, J40, ...) un lien hypertexte ayant pour intitulé "Nécessite nettoyage" (pour la petite histoire) qui lorsque l'utilisateur clique dessus... sélectionne dans la première cellule vide de la ligne 39 la valeur "Nettoyage" et me récupère le numéro de commande se situant dans ma première colonne pour l'afficher dans cette fameuse sous cette première cellule vide...

    Est ce que c'est possible de programmer un hypertexte de cette manière? Si oui à quel endroit dois-je implémenter mon code? Et si vous avez des petites idées de comment faire je suis preneuse sinon je me résoudrais à utiliser un vulgaire bouton

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Bonsoir,

    Je ne comprends pas la demande :
    Pour moi un lien hypertexte c'est pour ouvrir quelque chose.
    Ce n'est pas ton besoin car tu cherches à faire quelque chose après un click sur une cellule.

    PPz

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    l'enregistreur des macros donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Hyperlinks.Add Anchor:=Range("G40"), Address:="", SubAddress:="S40", TextToDisplay:="Nécessite nettoyage"

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Pour moi, il faut mettre le code dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
     
    End Sub
    PPz

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut
    Merci mercatog pour le code de la création du lien, et oui il doit falloir le mettre sur Workbook Open ... mais maintenant comment faire pour quand l'utilisateur clique dessus cela m'execute ma procédure qui recherche la première cellule vide que j'ai pour le moment mis derrière un clic bouton :

    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
    Private Sub bt_SievingG_Click()
    Windows("analyses.xls").Activate
    Range("A39").Select
    Do While i < 18
        For i = 2 To 18
            If Cells(39, i) <> "" Then
                Windows("analyses.xls").Activate
                Range("A39").Select
                Do While Not (IsEmpty(ActiveCell))
                    NbCellule = NbCellule + 1
                    Selection.Offset(0, 1).Select
                Loop
            End If
        Next i
    Loop
    ActiveCell.Value = "Sieving"
    End Sub

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Bonsoir,

    Mais quelle est la question?
    Qu'est-ce qui ne fonctionne pas?

    PPz

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut
    Rien qui ne fonctionne pas ...
    J'ai juste ce 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
    Private Sub bt_SievingG_Click()
    Windows("analyses.xls").Activate
    Range("A39").Select
    Do While i < 18
        For i = 2 To 18
            If Cells(39, i) <> "" Then
                Windows("analyses.xls").Activate
                Range("A39").Select
                Do While Not (IsEmpty(ActiveCell))
                    NbCellule = NbCellule + 1
                    Selection.Offset(0, 1).Select
                Loop
            End If
        Next i
    Loop
    ActiveCell.Value = "Sieving"
    End Sub
    Que j'aimerai mettre à la place non pas sur un bouton mais sur un lien hypertexte ... Et je ne sais pas où le mettre...

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Par défaut
    Bonjour,
    un truc comme ça peut-être, avec un déclenchement sur l'événement Worksheet_Followhyperlink et ta fonction ?

    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
    Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
            Call Proc_Sieving
    End Sub
     
    Private Sub Proc_Sieving()
    Windows("analyses.xls").Activate
    Range("A39").Select
    Do While i < 18
        For i = 2 To 18
            If Cells(39, i) <> "" Then
                Windows("analyses.xls").Activate
                Range("A39").Select
                Do While Not (IsEmpty(ActiveCell))
                    NbCellule = NbCellule + 1
                    Selection.Offset(0, 1).Select
                Loop
            End If
        Next i
    Loop
    ActiveCell.Value = "Sieving"
    End Sub
    Pour info il est possible de passer l'adresse de la cellule appelante à la fonction, si besoin.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut
    Oui quelque chose comme ça mais j'aurais effectivement besoin de l'adresse de ma cellule où se trouve le lien hypertexte pour après...

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Par défaut
    Citation Envoyé par juju1988 Voir le message
    j'aurais effectivement besoin de l'adresse de ma cellule où se trouve le lien hypertexte pour après...
    Ah non, tiens, je pensais que la méthode Target.Range donnerait la cellule appelante mais en fait elle donne la valeur de cette cellule. Ce qui peut être utile, ceci dit, mais ce n'est pas la même chose.
    Désolé.

    J'ai sans doute une solution pour avoir l'adresse :

    Lors de la création de l'hyperlien, renseigner la propriété SubAddress en plus des propriétés obligatoires, en y mettant l'adresse de la cellule où on met l'hyperlien (en rouge) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Creation_Hyperlink()
    'création de l'hyperlien en A4 :
    With Worksheets(1)
        .Hyperlinks.Add .Range("A4"), "http://google.fr", SubAddress:="A4", TextToDisplay:="Texte"
    End With
    End Sub
    Ici j'ai mis l'adresse en dur, mais on peut évidemment faire ça par variable. On peut aussi mettre l'url (en vert) à vide avec "", vu qu'il semble quelle ne doive servir à rien dans ce cas.

    Ensuite on peut récupérer les infos suivantes via l'événement Worksheet_FollowHyperlink

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
        a = Target.Range 'donne la valeur de la cellule
        b = Target.SubAddress 'donne la valeur entrée en subadress précédemment, ici l'adresse de la cellule donc
        c = Target.Address 'donne l'url, si elle est renseignée
        'Eventuellement ici mettre du code ou un appel de fonction
    End Sub

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut
    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 Workbook_Open()
     With Worksheets(1)
        .Hyperlinks.Add .Range("G40"), "", SubAddress:="G40"
        .Hyperlinks.Add .Range("J40"), "", SubAddress:="J40"
        .Hyperlinks.Add .Range("K40"), "", SubAddress:="K40"
        .Hyperlinks.Add .Range("M40"), "", SubAddress:="M40"
        .Hyperlinks.Add .Range("N40"), "", SubAddress:="N40"
        .Hyperlinks.Add .Range("O40"), "", SubAddress:="O40"
        .Hyperlinks.Add .Range("P40"), "", SubAddress:="P40"
        .Hyperlinks.Add .Range("Q40"), "", SubAddress:="Q40"
        .Hyperlinks.Add .Range("R40"), "", SubAddress:="R40"
    End With
     
    End Sub
    Voici mon ajout de liens hypertextes, comment puis-je faire pour paramétrer le texte à afficher??

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Par défaut
    Citation Envoyé par juju1988 Voir le message
    Voici mon ajout de liens hypertextes, comment puis-je faire pour paramétrer le texte à afficher??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Hyperlinks.Add .Range("G40"), "", SubAddress:="G40", TextToDisplay:="Nécessite nettoyage"

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut
    Ok mon code fonctionne super merci encore.

    Voici mon code qui se crée à l'ouverture de la feuille Excel :

    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 Workbook_Open()
     With Worksheets(1)
        .Hyperlinks.Add .Range("G40"), "", SubAddress:="G40", TextToDisplay:="Nécessite Sieving"
        .Hyperlinks.Add .Range("J40"), "", SubAddress:="J40", TextToDisplay:="Nécessite Sieving"
        .Hyperlinks.Add .Range("K40"), "", SubAddress:="K40", TextToDisplay:="Nécessite Sieving"
        .Hyperlinks.Add .Range("M40"), "", SubAddress:="M40", TextToDisplay:="Nécessite Sieving"
        .Hyperlinks.Add .Range("N40"), "", SubAddress:="N40", TextToDisplay:="Nécessite Sieving"
        .Hyperlinks.Add .Range("O40"), "", SubAddress:="O40", TextToDisplay:="Nécessite Sieving"
        .Hyperlinks.Add .Range("P40"), "", SubAddress:="P40", TextToDisplay:="Nécessite Sieving"
        .Hyperlinks.Add .Range("Q40"), "", SubAddress:="Q40", TextToDisplay:="Nécessite Sieving"
        .Hyperlinks.Add .Range("R40"), "", SubAddress:="R40", TextToDisplay:="Nécessite Sieving"
    End With
     
    End Sub
    Voici le code qui s'execute quand l'utilisateur clique sur le lien hypertexte (à mettre dans la feuille) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    Dim nomCel As String
    nomCel = Target.SubAddress
     
        MsgBox nomCel
        Call recupNumCmdTttEtPremCel(nomCel)
     
    End Sub
    Encore merci pour votre aide

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

Discussions similaires

  1. ouvrir lien hypertexte dans un programme autre que IE
    Par Oh!Tofocus dans le forum Excel
    Réponses: 3
    Dernier message: 04/04/2010, 13h16
  2. Réponses: 5
    Dernier message: 16/10/2008, 18h16
  3. [FLASH 5] Comment créer un lien hypertexte
    Par ajit dans le forum Flash
    Réponses: 4
    Dernier message: 30/03/2006, 13h26
  4. lien hypertexte dans une anim flash
    Par vedder dans le forum Flash
    Réponses: 17
    Dernier message: 14/01/2004, 15h11
  5. Liens Hypertexte simple comme en HTML ?!
    Par oazar dans le forum Flash
    Réponses: 3
    Dernier message: 17/10/2003, 01h25

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