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 :

Affecter à un Shape un lien hypertexte ET une macro_click() [XL-2007]


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Affecter à un Shape un lien hypertexte ET une macro_click()
    Bonjour ,

    J'ai créer une carte des Ardennes avec l'outil insertion forme libre (encore merci au super tuto de ce forum). J'ai donc obtenue une carte des Ardennes de type shape, composée de "sous-shapes" (je ne suis pas sur du bon intitulé) que sont les communes de ce département.
    En suivant ce tutoriel j'ai aussi associer une macro à la carte Ardennes qui s'exécute en fonction du "sous-shape" sur lequel on clique " (grâce à la commande application.caller), et tout ceci marche très, quoique surement avec un programme peu efficace.

    Pour obtenir une carte plus agréable, je souhaiterais que lorsqu'on glisse la souris sur une des "sous-shapes", son nom apparaisse sous la forme d'une info bulle.

    Mon problème est que j'arrive bien à réaliser cette info bulle (cf code 1), mais alors ma commande click ne marche plus ; apparemment excel ne comprend pas que je veux cliquer sur la commune, il m'affiche constamment l'info-bulle)

    Code 1 : info bulle, placé dans le code du worksheet contenant la feuille Ardennes

    Sub bulle()
    For Each s In ActiveSheet.Shapes("Ardennes").GroupItems
    If s.Type = 5 Then
    ActiveSheet.Hyperlinks.Add Anchor:=s, Address:="", SubAddress:=""
    s.Hyperlink.ScreenTip = s.Name
    End If
    Next s
    End Sub

    Auriez vous une solution pour qu'excel m'affiche bien le nom de la commune lorsque je passe la souris dessus; et qu'il exécute la macro correspondante lorsqu'on clique sur la commune ?
    Peut être que ma fonction n'est pas définie au bon endroit ou que le lien hypertexte n'est pas adapté, je ne trouve pas ..

    Merci d'avance .

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par NOTEPADE Voir le message
    Auriez vous une solution pour qu'excel m'affiche bien le nom de la commune lorsque je passe la souris dessus; et qu'il exécute la macro correspondante lorsqu'on clique sur la commune ?
    Peut être que ma fonction n'est pas définie au bon endroit ou que le lien hypertexte n'est pas adapté, je ne trouve pas ..
    Bonjour,

    A tester :
    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
     
    Sub GenererLesInfosBulle(ByVal FeuilleCarte As Worksheet, ByVal NomDuGroupement As String)
     
    Dim I As Integer
     
          With FeuilleCarte
     
               'MsgBox .Shapes(NomDuGroupement).GroupItems.Count
               For I = 1 To .Shapes(NomDuGroupement).GroupItems.Count
                   .Hyperlinks.Add Anchor:=.Shapes(NomDuGroupement).GroupItems(I), Address:="", ScreenTip:=.Shapes(NomDuGroupement).GroupItems(I).Name
               Next I
     
        End With
     
    End Sub
     
     
    Sub TestGenererLesInfosBulle()
     
        GenererLesInfosBulle ActiveSheet, "Groupe 2"  ' A adapter
     
    End Sub
    Le fichier de ce lien contient un exemple de génération de macros à partir des formes.

    svg-sarthe-2017-06-28.zip

    Message du fichier : excel-image-svg-traitement-individuel-shapes

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour Eric,

    Je te remercie de ta réponse.

    Le code que tu proposes marche très bien et à le mérite d'être plus jolie que le mien

    Cependant, mon problème reste toujours, à savoir que ma macro _click() associé au shape "Ardennes" ne marche plus.

    Je me suis intéressé pour contourner ce problème à l'utilisation de FollowHyperlink() , évènement de la feuille censé s'activer lorsqu'un hyperlien est activé, mais lorsque que je passe ma souris sur les hyperliens du shape "Ardennes" rien ne se passe :/

    Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    MsgBox "hum"
    End Sub

    Auriez-vous des idées ?

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par NOTEPADE Voir le message
    Bonjour,

    Effectivement, les macros sont neutralisées. Pour contourner le problème, je vous propose une solution pas très élégante qui peut être ne vous plaira pas mais elle fonctionne.

    La capture d'écran ci-dessous, montre un groupement de communes pour lesquelles j'ai créé un lien avec le code de mon précédent message. J'ai créé une nouvelle forme représentée par le cercle au milieu du groupement. J'ai ensuite affecté une macro à la nouvelle forme et groupé avec le groupement.

    Nb :
    - Il faut maintenir une couleur de remplissage dans la nouvelle forme sinon il n'y a que le clic sur le trait qui fonctionne.
    - Mettre le groupement en arrière-plan avant de grouper avec la nouvelle forme lançant la macro.


    Pièce jointe 296800

    Il y a peut-être d'autres solutions plus efficaces.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Tant que ça marche je suis preneur !

    Votre solution marche bien; mais mon problème est que j'ai quelques milliers de communes,il serait fastidieux de faire les petits rond à la main pour chacune d'entre elles.
    J'ai pensé à superposer exactement, la même carte mais j'imagine que du coup je ne verrai plus les liens hypertextes ..

    Aurait-il un moyen de créer à l'aide une macro un rond à l'intérieur de chacune de mes shapes (alias communes) ?

    Merci de votre aide.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par NOTEPADE Voir le message
    Comment faites vous le lien entre formes et macros ? En clair quel est votre code ? J'imagine que vous avez du développer une boucle...

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    je me suis largement inspirer de ce tuto (aller au V - A ) :
    http://arkham46.developpez.com/artic...e/dessincarte/

    Mon code est similaire (à part qu'il est adapté pour les coordonnées relatives du format SVG). Ainsi je construit chaque délimitation de commune avec l'outil forme libre, que je convertit ensuite en shape. Le shape "Ardennes" est alors créer par regoupement de tout les sous-shapes (communes).


    Je suis désolé je ne trouve pas comment insérer proprement mon code ..

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par NOTEPADE Voir le message
    Visiblement, vous n'avez pas consulté les liens d'un de mes précédents messages.

    Y-a-t-il une seule macro pour toutes les formes ou bien une macro spécifique à chaque forme ?

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Effectivement je n'avais pas tout vu :/
    Je n'aurais pas le temps de la faire aujourd'hui mais grâce à ce code je pense qu'il ne devrait pas y avoir trop de soucis.

    Je vous remercie Eric !

    Pour répondre à votre question, j'ai une macro pour toutes les formes. Cette macro s'active lorsqu’on clique sur le shape "Ardenne" qui est le regroupement des shapes des communes. Ensuite, grâce à "applicationcaller" je peux appeler des évènement spécifiques à chaque communes.

    EDIT : je ne met pas encore résolu parce que vous avez posé une question; mais je pense que vous m'avez apporté les éléments nécessaires

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par NOTEPADE Voir le message
    Le code présent dans mon fichier est à adapter car il faut en plus créer et associer la forme Cercle à la forme de la commune. Dans votre cas, je créerais une table de correspondance qui associerait les 3 éléments (forme de la commune, forme du cercle et nom de la macro) et ferait une boucle sur cette table pour générer les cercles et les associations.

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour Eric,

    J'ai réaliser deux "gros" shapes, l'un composé de toute les communes, l'autre de tout les ronds
    Lors de la création des ronds, je leur ait affecté une macro spécifique.
    J'ai ensuite regroupé les deux shapes en un unique; les résultats me conviennent, on à bien l'info bull qui s'affiche sur le shape des communes et lorsqu'on clique sur les ronds, la macro s'éxécute.

    Un grand merci à vous pour votre aide !!

    PS : il y a juste le fait que la l’icône de la souris clignote souvent lorsqu’on navigue sur le shape ce que je trouve assez énervant

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

Discussions similaires

  1. Recopier un lien Hypertexte d'une cellule vers un objet Shape ?
    Par nicolas_151 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/06/2008, 09h42
  2. Comment créer un lien hypertexte avec une liaison OLE Excel ?
    Par vieuxsinge dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 08/12/2005, 17h16
  3. lien hypertexte dans une zone de liste
    Par corwin44 dans le forum Access
    Réponses: 1
    Dernier message: 02/11/2005, 11h48
  4. Passage de paramètres ds un lien hypertext ds une page xsl
    Par lenoir_franck dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/04/2005, 10h09
  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