Mise a jour de nom

Bonjour à tous, d'avance merci pour votre aide.

Je vous expose mon pb: vous trouverez ci joint un fichier avec une liste de personne. J'ai créer une liste déroulante dynamique en H2. Jusque là tout va bien.

EN suite j'ai créer des pour chaque ID par l'onglet formule, dans la section "Noms définis" via "Depuis la sélection"

En l'état cela fonctionne. En effet lorsque je clique sur rechercher, grâce à la fonction lien hypertexte en J2 cela me sélection ma ligne correspondante.

Mon pb est lorsque j'ajoute un nouvel id, dans la liste des noms, mon nouvel ID n'est pas créer donc ma fonction lien hypertexte ne fonctionne pas sur mon nouvel élément.

Qqun aurait il une solution pour que ma recherche continue de fonctionner? Peut être avec une macro pour automatiser la mise a jour de la liste de noms? une autre piste?

Je suis a court d'idée.

Merci

Cordialement

Sébastien

Bonjour,

Comme souvent, je ne sais pas si j'ai compris ... le lien à utiliser est celui qui affiche "trouver" sur fond "or", après sélection dans la liste en H2.
Je n'ai pas utilisé de noms, par contre j'ai converti ta plage en tableau

Bonjour le fil, bonjour le forum,

Comme U.Milité, plage convertie en tableau structuré plus événementielle Change :

Option Explicit 'oblige a déclarer toutes ls variables

Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim TS As ListObject 'déclare la variable TS (Tableau Structuré)
Dim R As Range 'déclare la variable R (Recherche)

If Target.Address <> "$H$2" Then Exit Sub 'si le changement a lieu ailleurs que dans la cible H2, sort de la procédure
Set TS = Me.ListObjects("Tableau1")
Set R = TS.ListColumns(1).Range.Find(Target.Value, , xlValues, xlWhole) 'définit la recherche R (recheche la valeur entière de la cible H2 dans la colonne B)
'si au moins une occurrence est trouvée, sélectionne les trois cellules décalés d'une colonne à droite de la première occurrence trouvée
If Not R Is Nothing Then TS.DataBodyRange(R.Row - TS.HeaderRowRange.Row, 2).Resize(1, 3).Select
End Sub

Suppession des noms sauf Client_ID.

Le fichier :

Super cela fonctionne merci U.Milité

En revanche, maintenant j'aimerai comprendre : =LIEN_HYPERTEXTE("#"&ADRESSE(EQUIV(H2;Tableau1[Client_id];0)+4;3);"trouver")

Je ne comprends pas la formule, je souhaiterai comprendre pour l'appliquer correctement, dans mon vrai fichier :)

Merci

Sébastien

Merci a toi également ThauThème

Je débute tout juste dans le langage VBA, et je me rends compte que j'ai encore énormément de chemin avant d'arriver à un niveau comme le votre :)

Je vais essayer de décortiquer cette macro, mais je pleure d'avance

Merci a tous pour votre aide

Coridalment

Sébastien

Bonjour,

@U.Milité, je ne comprends le +4; 3 dans la fonction adresse?

Est il possible de m'éclairer?

Merci d'avance :)

Cordialement

Sébastien

Bonjour,

Je ne comprends pas la formule, je souhaiterai comprendre pour l'appliquer correctement, dans mon vrai fichier :)

L'intention est louable Dans ce genre de cas, le mieux est de "décomposer" la formule :

  • EQUIV(H2;Tableau1[Client_id];0) donne la position de la valeur figurant en H2, dans la colonne "Client_ID" du tableau. Le 0 force la recherche de la correspondance exacte.
  • ADRESSE(ligne; colonne) reconstitue l'adresse d'une cellule dont on donne la ligne et la colonne ADRESSE(5,2) renverra donc B5
    Si H2 contient C7, EQUIV renvoie 7 (C7 est en 7e position dans ton tableau). Pour que le n° de ligne corresponde au contenu de la feuille et non du tableau, on ajoute '+4' au résultat de EQUIV (7+4 dans l'exemple, puisque C7 est dans la 11e ligne de la feuille de calcul)
  • comme tu avais toi-même utilisé la fonction LIEN_HYPERTEXTE, je suppose qu'il n'est pas utile que je développe ?

Est-ce plus clair ?

[Edit :] on s'est croisés

Merci U.Milité,

oui c'est plus clair. Je vais tenter cela dans mon fichier de travail.

Néanmoins j'ai encore deux questions:

- je ne comprends pas pourquoi apres le # de la fonction lien_hypertexte, il n'y pas _. En effet le nom de chaque cellule lors de la création est préfixé d'un"_". comment la fonction adresse compense cela?

- je ne comprend pas le "3é dans la fonction adresse, pourquoi 3eme colonne?

Merci pour votre aide.

Bonne journée

Cordialement

Sébastien

Re bonjour,

En testant sur mon fichier j'ai réussi grâce a vos explication. Et surtout j'ai compris le 3, c'est pour sélectionner la cellule de destination lorsque l'on clique sur le bouton trouver.

Du coup j'ai une autre question ,est il possible de sélectionner une plage de données?

Merci, Bonne journée

Coridalement

Sébastien

Bonjour,

Pour la question concernant le "_", comme mentionné dans mon premier message, la solution proposée n'utilise pas les noms définis (le lien pointe vers une cellule)

Pour autant que je sache il n'est pas possible de pointer sur plusieurs cellules (sauf en utilisant une plage nommée) ... Il est peut-être possible de créer une plage nommée "dynamique", pour ne pas définir une plage nommée chaque fois qu'on ajoute une ligne, mais je n'ai pas le temps de chercher dans l'immédiat

Maintenant, si quelqu'un passe par ici et peut proposer une solution, qu'il/elle en soit remercié(e)

Ne perdez pas de temps a chercher pour moi,

C'est déjà top votre solution... c'était plus par curiosité. Je n'ai pas eu le temps non plus, mais je me dis avec une formule dans une mise en forme conditionnelle ca devrait fonctionné

Effectivement j'avais oublié que ce n'était plus via les noms définis.

Merci pour votre aide, sincèrement

Cordialement

Sébastien

Re,

Ne perdez pas de temps a chercher pour moi,

Trop tard ! (mais chercher n'est jamais une perte de temps !)
Si tu repasses par ici, essaie :

=LIEN_HYPERTEXTE("#Feuil1!C"&EQUIV($H$2;Tableau1[Client_id];0)+4&":E"&EQUIV($H$2;Tableau1[Client_id];0)+4;"trouver")
Rechercher des sujets similaires à "mise jour nom"