Partager via

TCD lien externe

Anonyme
2023-11-22T12:53:42+00:00

Bonjour,

Je travail sur un TCD et j'aimerais que l'utilisateur puisse éditer la valeur source s'il repère une incohérence.

Pour ça j'ai mis à coté une formule qui permet le renvoie sur la feuille qui gère l'entrée des valeurs pour tous les "nom" (dans un autre classeur).

qui ressemble à ça :

=SIERREUR(LIEN_HYPERTEXTE(REMPLACER(INDEX(Tableau1[Lien];EQUIV(B7;Tableau1[NOM];0));TROUVE("]";INDEX(Tableau1[Lien];EQUIV(B7;Tableau1[NOM];0)));100;"]'Statut'!A1");"Lien");"")

Ma problématique étant que pour retrouver la "cellule" à éditer ça peut être laborieux. Il faut retrouver le bon "statut" dans la première colonne (ça a la rigueur un filtre et c'est réglé) mais surtout il faut parcourir une centaine de colonne pas du tout classé par ordre alphabétique ni une quelconque logique pour retrouver la bonne "espèce"

Un exemple de mes fichiers ci-joint, pour essayer de visualiser ma problématique, je n'ai fait que le fichier "animal", et je n'ai pas rajouté toute la moulinette qui lie les données "dynamiquement" vers la feuille DATA de mon classeur TCD vu que ce n'est pas le sujet ici.

https://collect.wetransfer.com/board/s817gxdkcc0zpg4zo20231122120734/latest?token=81b1d621-175d-475a-b68d-3f5c571415c4

NB : les termes de mon exemple n'ont rien à voir avec ma réalité, mais j'ai essayé de faire un truc cohérent et de conserver au maximum la structure.

Il faudrait que le lien pointe vers la bonne colonne (la bonne espèce),

j'avais pensé à un truc comme ça :

=SIERREUR(LIEN_HYPERTEXTE(REMPLACER(INDEX(Tableau1[Lien];EQUIV(B7;Tableau1[NOM];0));TROUVE("]";INDEX(Tableau1[Lien];EQUIV(B7;Tableau1[NOM];0)));100;"]'Statut'!"&CAR(EQUIV(B7;REMPLACER(INDEX(Tableau1[Lien];EQUIV(B7;Tableau1[NOM];0));TROUVE("]";INDEX(Tableau1[Lien];EQUIV(B7;Tableau1[NOM];0)));100;"]'Statut'!2:2");0)+64));"Lien");"")

Mais entre le indirect capricieux avec les classeurs externe, et les syntaxes de lien qui ne sont jamais les même selon les fonctions, je ne m'en sort pas.

Idéalement, si on pouvait aussi extraire du TCD le "Statut" du "nom" que l'utilisateur clique pour également aller à la bonne ligne ce serais super.

Et si une macro ou quelque chose pouvait m'intégrer un lien directement sur le nom de l'espèce dans le TCD ce serais encore mieux. mais ce n'est vraiment pas le cœur du sujet.

Merci d'avoir pris le temps de lire mon problème !

Tartofraises.

Microsoft 365 et Office | Excel | Autres | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

Anonyme
2023-11-22T21:33:24+00:00

Ta colonne lien dans DATA ne fait pas mieux que mon code pour le chemin d'accès : "&[@FILIERE]&""&[@FILIERE]&".xlsm] 😁

Je te propose ça :

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

    Dim strChemin       As String 

    Dim strFichier      As String 

    Dim strLigne        As String 

    Dim strColonne      As String 

    Dim varNumColonne 

    Dim varNumLigne 

    On Error GoTo erreur 

    ' Test clic dans le TCD 

    If Intersect(Target, Range("C2:G" & [C1].End(xlDown).Row)) Is Nothing Then 

        Exit Sub 

    End If 

    strFichier = Cells(Target.Row, 4).Value 

    strLigne = Cells(Target.Row, 6).Value 

    strColonne = Cells(Target.Row, 7) 

    ' Test clic ligne avec statut et nom 

    If (strLigne = "") Or (strColonne = "") Then Exit Sub 

    ' A MODIFIER <<<<<<<<<<<<<<<<<<<<<<<<<< 

    strChemin = ThisWorkbook.Path & "\" & strFichier & "\" & strFichier & ".xlsm" 

    Workbooks.Open strChemin 

    Worksheets("Statut").Activate 

    ' Utilisation de ActiveSheet obligatoire même si feuille active 

    varNumColonne = Application.Match(strColonne, ActiveSheet.Rows(2), 0) 

    If IsError(varNumColonne) Then 

        MsgBox "Colonne " & strColonne & " non trouvée" 

        Exit Sub 

    End If 

    varNumLigne = Application.Match(strLigne, ActiveSheet.Columns(2), 0) 

    If IsError(varNumLigne) Then 

        MsgBox "Ligne " & strLigne & " non trouvée" 

        Exit Sub 

    End If 

    Application.Goto ActiveSheet.Cells(varNumLigne, varNumColonne) 

    Exit Sub 

erreur: 

    MsgBox "Erreur " & Err.Number & "-" & Err.Description 

End Sub

je vais me coucher !

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire

9 réponses supplémentaires

  1. Anonyme
    2023-11-22T15:26:31+00:00

    Peux-tu modifier les fichiers cibles (nommer des cellules) ?

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2023-11-22T15:17:10+00:00

    Bonjour,

    Merci pour ta réponse de la flemme xD

    C'est déjà sympa que tu ais pris le temps de télécharger mon fichier !

    C'est une piste intéressante c'est vrai que je ne vais jamais du côté des autres options de présentation du rapport, mais effectivement ça pourrait être aidant dans ce cas-ci. Vu a quoi le rapport ressemble déjà je pense que mes utilisateurs ne vont pas m'en vouloir si c'est "un peu plus" moche avec des colonne répété.

    C'est finalement la question de la ligne qui sera résolu le plus simplement (j'étais persuadé que ce serais l'inverse), reste celle de la colonne, je vais continuer a y réfléchir.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2023-11-22T14:35:26+00:00

    J'ajoute une illustration

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2023-11-22T14:30:51+00:00

    Bonjour Tartofraises75,

    Ne m'en veux pas mais je n'ai pas "creusé" ta question par pur fainéantise, je l'admet 😔

    Je ai vu :

    "Idéalement, si on pouvait aussi extraire du TCD le "Statut" du "nom" que l'utilisateur clique pour également aller à la bonne ligne ce serais super."

    Une idée bidouille :

    Modifier la présentation de ton TCD ou faire une copie caché du TCD avec une autre présentation

    Tu sélectionnes

    • Disposition : Mode Plan + répéter tt les étiquettes
    • Sous-Totaux : En haut

    Si 2 TCD :

    • Ils auront la même disposition donc correspondance ligne/ligne.
    • Si les utilisateurs utilisent les filtres, tu peux synchroniser les TCD par des segments via Connexion de filtre/rapports.
    • Reste le problème du tri par l'utilisateur, la je n'ai pas de solution à part lui dire de ne pas trier 😁

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire