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 vers EQUIV dans un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 38
    Points : 32
    Points
    32
    Par défaut Lien hypertexte vers EQUIV dans un autre classeur
    Bonjour,

    J'essaie de résoudre un problème assez complexe, il s'agit de créer un lien hypertexte grâce à des noms de cellules. Voici les tableaux exemples :

    (Classeur principal)	
    Référence	Date	
    1	30/06/2013	Lien
    2	30/06/2013	Lien
    3	30/06/2013	Lien
    4	30/09/2013	Lien
    5	30/09/2013	Lien
    6	30/09/2013	Lien
    7	31/12/2013	Lien
    8	31/12/2013	Lien
    9	31/12/2013	Lien
    10	31/12/2013	Lien
    et

    (Classeur 30/06/2013)
    Référence
    1
    2
    3
    (Classeur 30/09/2013)
    Référence
    4
    5
    6
    (Classeur 31/12/2013)
    Référence
    7
    8
    9
    10
    Le but étant de créer depuis le classeur principal une colonne liens qui identifie le classeur à ouvrir grâce à la date en colonne B, et qui pointe vers la ligne de la référence équivalente.

    Par exemple si je clique sur le lien de la case C3 ça m'ouvre le classeur "30/06/2013" et ça pointe sur la ligne avec la référence 2. (En prenant en compte les en-têtes)

    J'ai essayé avec le Add Hyperlink mais je ne sais pas comment placer mon équivalence pour la date et la référence.
    Vous avez une idée?

    Merci d'avance!

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour,

    lien pas obligatoire, peut s'effectuer en gérant l'évènement du double-clic comme dans cette discussion par exemple …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 38
    Points : 32
    Points
    32
    Par défaut
    Merci Marc L, cette idée est pas mal du tout, mais comment récupérer l'adresse des liens pour chaque cellule? Dans le cas de MALTER, son lien était déjà explicite (lien non activé mais copié collé). Ici je n'ai qu'une référence. Or je voudrais trouver l'équivalent de cette référence dans l'autre classeur. C'est ça que je galère à mettre en place...

    Penses-tu qu'on puisse utiliser ta méthode pour les équivalences?

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Là je dois bouger mais j'ai juste le temps de confirmer quel que soit la méthode (lien ou double clic)
    il faut dans une cellule récupérer l'adresse correspondante via EQUIV ou autre comme RECHERCHEV …

    A plus tard en fin d'après-midi mais d'ici là certainement un intervenant apportera un guide quant à la formule …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut ouverture clsseur
    Bonjour,

    Si je peux me permettre.

    Pourquoi tiens-tu aux liens hypertexte? Personnelement, je m'en méfie comme de la peste.

    Sachant que la propriété Filename de la méthode Open attend un argument de type String (Chaîne de caractères), tu peux très bien concaténer différentes valeurs texte et numérique dans l'argument.
    La méthode consisterait alors à rechercher différentes valeurs correspondant à ta date, puis de retourner le nom du classeur et la cellule à activer en conséquence.

    La liste des dates pourrait alimenter une Combobox dans un formulaire auquel serait adjoint un simple bouton de commande.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 38
    Points : 32
    Points
    32
    Par défaut
    Bonjour MarcelG,

    Bien sûr je suis totalement preneur de méthodes moins gourmandes, étant débutant en VBA je ne connais pas encore les meilleurs strats!

    Si j'ai bien compris ta réponse, on peut associer une méthode Open file à un bouton qui nous renverrait le classeur, la feuille et la cellule référencée ?
    Comment alimenter un tel bouton sachant que je veux qu'il fonctionne pour chaque référence? Je sais à peine créer une combobox malheureusement...

    Dans tous les cas merci pour ton aide!

  7. #7
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut USERFORM
    Salut,

    Pas de problème.
    On peut le faire pas à pas.

    Tout d'abord affecte un nom à UNE 2ème liste de dates sans doublon.

    Remarque : ta 2ème liste de dates ne doit pas comprendre de doublons (une date = 1 seul enregistrement)
    Si tu as beaucoup de dates, alors joins ton fichier.
    Comme tu es débutant, mieux vaut ne pas aborder, du moins dans un premier temps, les dictionnaires.


    Sais-tu créer un formulaire?

    Tu auras besoin d'y adjoindre une liste déroulante (Combobox) et un bouton de commande (CommandButton).
    Pour l'instant, retiens ton attention sur ces 2 objets.

    Les référence en termes de tutoriels (Silkyroad)

    UserForm1

    Userform2

    C'est la date saisie dans une 1ère Combobox qui alimentera la source d'une 2ème

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 38
    Points : 32
    Points
    32
    Par défaut
    D'acc je vais regarder ça, merci beaucoup! Je ne sais pas créer de formulaire, je vais essayer et je reviens vers toi.

    Personnellement avant que tu répondes j'avais pensé à ceci :

    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
     
    Sub LienTest()
    Dim lien As String
    Dim myCell As Range
    Dim myRng As Range
     
        With ActiveSheet
            Set myRng = .Range([A2], .Cells(.Rows.Count, 1).End(xlUp))
        End With
     
        For Each myCell In myRng.Cells
            lien = myCell.Value
            ActiveSheet.Hyperlinks.Add Anchor:=myCell.Offset(0, 1), Address:="C:\Documents\" & Cells(myCell.Row, 2) & ".xlsx", SubAddress:= _lien, TextToDisplay:="Lien"
        Next myCell
    End Sub
    Sachant que j'ai renommé mes dates avec des tirets '30-juin-2013' et pareil pour mon classeur cible (pour qu'ils puissent avec le même nom).

    Si je remplace le Cells(myCell.Row, 2) par 30-juin-2013, la méhode m'ouvre le bon fichier, mais ne trouve pas la ligne (ça me met erreur de référence). Par contre si je garde le Cells(myCell.Row, 2), la méthode se lance, les liens sont créés, mais quand je clique dessus, il me dit "impossible d'ouvrir le fichier".

    Je sais que ça n'a rien à voir avec les ComboBox, mais penses-tu que c'est une bonne piste?

    Merci d'avance!

  9. #9
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Pour ne rien te cacher.
    Ne pratiquant jamais les liens dans mes développements, je ne m'y connais pas trop dans leur gestion sur VBA.

    Du moins c'est mon avis, regardons les formulaires.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 38
    Points : 32
    Points
    32
    Par défaut
    D'acc, pas de soucis!

    Alors j'ai créé mon UserForm1 avec une ListBox, puis dans un nouveau module, j'ai ajouté ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub UserForm1_initialize()
        ListBox1.ColumnHeads = True
        ListBox1.RowSource = "Feuil1!G2:G4"
    End Sub
    La dernière plage correspondant à ma liste de dates sans doublons.
    Je l'ai appelé "Liste dates".

    Maintenant comment alimenter ma deuxième combobox?

  11. #11
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut alim combo
    Voilà! Voilà!

    Dans un module standard, place cette fonction
    (d'après le voisin du laboratoire)

    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
    Function ListSort(liSte)
     
      Dim First As Integer, Last As Integer
     
     Dim i As Integer, j As Integer
      Dim Temp
     
      First = LBound(liSte)
      Last = UBound(liSte)
      For i = First To Last - 1
        For j = i + 1 To Last
          If liSte(i, 0) > liSte(j, 0) Then
            Temp = liSte(j, 0)
            liSte(j, 0) = liSte(i, 0)
            liSte(i, 0) = Temp
          End If
        Next j
      Next i
      ListSort = liSte
     End Function
    Pour définir un nom, mieux vaut intégrer des tirets bas (underscore, sous le 8 du clavier)

    Ici

    Cbx_date : 1ère liste déroulante Combobox dont les items reposent sur ton objet Range liste_dates
    Cbx_ligne : 2ème liste déroulante Combobox dont les items sont alimentés par le choix Cbx_date
    liste_full_date : Objet Range comprenant les dates avec doublons (1 colonne), au regard desquelles figurent les numéros de ligne

    Remarque : ta propriété RowSource peut directement être écrite dans la propriété RowSource de ta Combobox Cbx_date (Tu écris seulement "Liste_dates")

    Dans le code de ton formulaire, tu peux écrire

    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
    Private Sub Cbx_date_Change()
    Call alim_combo_liste
    End Sub
     
    Public Sub alim_combo_liste()
    Dim d As Date
    d = Cbx_date.Value
    With Worksheets(1).Range("liste_full_dates")
        Set c = .Find(d, LookIn:=xlFormulas)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                Cbx_ligne.AddItem c.Offset(0, 1)
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
    With Cbx_ligne
            .List = ListSort(.List)
    End With
    End Sub
     
    Private Sub Btn_valid_Click()
    Me.Hide
    Unload Me
    End Sub
    Regarde BIEN ce code et pose des questions si nécessaire.
    Ensuite, teste-le pour vérifier la bonne alimentation de la 2ème Combobox Cbx_liste.

    Le bouton Validation (Btn_valid) ne fait que désactiver le formulaire.
    Dans un 2ème temps, nous verrons pour la suite.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  12. #12
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Elément d'importance

    Vider la combobox avant son alimentation

    D'autre part, notre amie est débutante. Elle va progresser.

    Pour le fun et ceux que cela intéresse.
    Il est bien entendu possible d'alimenter la 1ère Combobox d'après la liste complète, nommée liste_full_dates et comportant les doublons.
    Cette alimentation peut être effectuée sans doublon.

    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
    Private Sub UserForm_Initialize()
     
    Dim dico
    Dim c As Range
     
    Cbx_date.Clear
     
    Set dico = CreateObject("Scripting.Dictionary")
    For Each c In Worksheets(1).Range("liste_full_dates")
            With c
                    If Not dico.Exists(.Value) Then
                            dico.Add .Value, .Value
                            Cbx_date.AddItem .Value
                    End If
            End With
    Next c
     
    Set dico = Nothing
     
    End Sub

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


Discussions similaires

  1. Réponses: 4
    Dernier message: 21/04/2015, 11h25
  2. Lien hypertexte vers une ancre dans une même page
    Par michaeljeru dans le forum Struts 1
    Réponses: 2
    Dernier message: 30/11/2011, 14h04
  3. Réponses: 1
    Dernier message: 17/03/2009, 21h24
  4. Réponses: 2
    Dernier message: 21/10/2008, 13h13
  5. Excel : lien hypertexte vers un autre fichier avec nom page
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 09h33

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