VBA - comment recopier hyperlien ?

Bonjour à tous et merci pour la mine d'informations qu'est ce forum !

Je vous explique en détail ma question : j'ai un userform de recherche qui en fonction de deux critères, va établir une liste dans une plage autre que ma BDD.

Ces champs s'affichent ensuite dans des textbox avec des boutons "précédent" ou "suivant".

Jusque là je suis ravie ^^

Mais comme je suis du genre joueuse je voudrai que le champ "lien" puisse accéder directement via un hyperlien au site trouvé.

Grâce au forum j'ai trouvé la solution et jai activé un double clic et ça fonctionne.

Le soucis c'est que dans "Document" je voudrai mettre des PDF qui seront nécessaire à cette fiche. Hors si je les lis à ma BDD quand il va faire la recherche il ne rapatrie pas le chemin d'accès.

Ex : Dans ma BDD "L3" Echo renvoie à un PDF et quand je lui demande la fiche 2 il me donne les infos et me recopie Echo en "AE" mais sans le chemin.

est ce qu'il existe une formule pour lui dire de me recopier l'hyperlien depuis la BDD ?

Merci à tous pour votre aide !

Bonjour NoursChoup,

Un Hyperlien est inscrit dans une cellule sous la forme =Lien_Hypertexte("C:\Users\etc...\Echo.pdf";"Echo")

Entre parenthèses le chemin du fichier pdf puis son nom court convivial.

Il suffit de copier la cellule L3 vers la colonne AE. Par un CTRL+C puis CTRL+V.

Ou par VBA

Sub Copie()
Range("L3").Copy Range("AE3")
End Sub

Merci pour avoir pris la peine de me répondre ;-)

Malheureusement la solution ne va pas pouvoir être aussi simple car la cellule qui doit être recopié en AE n’est pas fixe et dépend du filtre utilisé pour recherche.
merci quand même de t’être donné la peine de vouloir m’aider

A nouveau,

Je t'ai laissé l'exemple selon

Ex : Dans ma BDD "L3" Echo renvoie à un PDF et quand je lui demande la fiche 2 il me donne les infos et me recopie Echo en "AE" mais sans le chemin.

Il suffit par Activecell.Row de récupérer la ligne active de ton filtre. Donc si la ligne active est la ligne 10.

Ce sera

Sub Copie()
Range("L" & 10).Copy Range("AE" & 10)
End Sub

Apparemment LigSel dans ton programme.

C’est moi qui ai mal expliqué l’utilisation du userform ce n’est pas de votre faute je m’en excuse.

  1. On sélectionne dans le userform le critère qu’on recherche et ce qu’on veut rechercher ex « Analyse » et « aa »
  2. On clique sur « Rechercher » la il va attribuer à deux cases précises les deux critères et via la macro « Filtrer » il va rechercher les concordances et les coller dans des cellules définies via un filtre avancé
  3. J’obtiens une seconde plage avec les différentes cellules trouvées et je les recolle dans mon userform. Initialement c’était une listbox mais les cases contiennent parfois beaucoup de texte et j’ai pas su jouer sur la hauteur dans ma listbox.

le truc c’est que je ne peux pas avoir une solution cellule par cellule de type copier coller car je ne sais pas quelle cellule il va pouvoir trouver comme source…

Je peux lui mettre l’adresse absolue au lieu du raccourci et un double clic et ça fonctionne mais c’est pas facile à lire pour les futurs utilisateurs.

Donc soit j’arrive à trouver une solution pour que quand il fasse le filtre avance il me prenne toute la cellule lien inclus

Soit j’arrive à lui rajouter le lien absolu dans une autre cellule et je trouve un moyen de lui dire tu m’affiche que ce que je veux \documents\attestation.pdf en attestation.pdf

Les documents seront sur un serveur local d’où la longueur de l’adresse…

je coince en tout cas

Merci d’avoir pris du temps pour regarder

Suite,

Je viens de tester maintenant avec mon portable car au bureau je ne le pouvais pas.

Vu que l'administrateur du service informatique bloque certains fichiers externes avec macro.

En effet, le filtre ne va pas garder l'adresse du lien car il va le considérer comme un texte.

Donc je regardes (ce soir) à détourner le filtre pour toutes les cellules de la colonne L.

Ou une procédure supplémentaire de copie après le passage du filtre.

Toute la colonne L dispose de liens hypertexte ou pas?

A +

Tu regardes quand tu auras le temps c’est déjà gentil de regarder

Les cellules seront vides ou contiendront un lien vers un document présent sur le serveur.

A nouveau,

Pour éviter de trop modifier la base de donnée et le programme actuel.

J'ai changé la fin du code Command_Button1. Ainsi qu'ajouté quelques caractères de code dans celui du formulaire Saisie.

Voir notes en rouge sur la feuille BDD. La cellule AE1 compte le nombre de lignes filtrées.

Bonsoir,

J'ai regardé ton fichier et nickel pour la recopie de la BDD vers mon filtre ! merci !

Je vais avoir presque 3000 fiches dans ma base de sonnées donc je devrai mettre 5 au lieu de 4 dans le dernier code du commandButton ?

J'ai voulu vérifier dans mon Userform si il est bien capable de me raccrocher l'hyperlien qu'il a trouvé en "AE" en ajoutant un double clic à Rdoc mais il me met qu'il ne trouve pas le chemin :(

On y est presque !

Bonsoir NoursChoup,

Je vais avoir presque 3000 fiches dans ma base de sonnées donc je devrai mettre 5 au lieu de 4 dans le dernier code du commandButton ?

As tu vraiment 3000 fiches différentes? Ne font-elles pas double ou triple emploi?

Sinon, effectivement il faudra disposer de suffisamment de caractères pour éviter la confusion.

Et donc 5 caractères est nécessaire car cela permet de garder le # en premier lors de la comparaison.

l'hyperlien qu'il a trouvé en "AE" en ajoutant un double clic à Rdoc mais il me met qu'il ne trouve pas le chemin :(

Je ne vois pas sur ton fichier de code pour le double-clic du Rdoc. Quel est-il?

Ne pas oublier que la variable générale du module LigSel te donne la position dans le filtre de la ligne de ta sélection.

Donc un Range("AE" & LigSel) te raccroche au bon Hyperlien.

Merci pour le temps que tu passes sur mon problème 😉

Et non malheureusement pas de doublon dans ma Bdd et vu le nombre c’est pour ça que je voulais m’informatiser plutôt que de tourner des pages de classeur pour trouver la bonne ligne ;-)

Il reste après à saisir les fiches et c’est un gros boulot donc je bosse déjà la trame et après on ajoutera le contenu ^^

Pour l’action double clique sur la textbox RDoc je l’ai rajouté hier sur le fichier source chez moi : peut être que le soucis est là et que ma formule n’est pas bonne pour ouvrir un fichier et non un lien internet… je vais continuer mes recherches

Bonjour NoursChoup,

Comme inscrit dans mon premier message.

Un Hyperlien est inscrit dans une cellule sous la forme =Lien_Hypertexte("C:\Users\etc...\Echo.pdf";"Echo")

Donc soit la partie "C:\Users etc...n'est pas correcte. Le chemin d'accès au fichier est incorrect. (Disque, Utilisateur, Dossier etc...)

Soit le code pour lancer et activer le lien est inopérant. Soit les deux.

Le lien est fonctionnel car il ouvre le bon fichier dans la cellule copiée en AE3

C’est mon code qui foire très probablement

Je vais faire des recherches pour voir ce qui se fait et où je me suis trompée mais avec ton aide j’ai deja 99% de mon projet qui est abouti alors merci 🙏

A nouveau,

Donc si le lien est fonctionnel c'est ton code lançant le lien ciblé en AE3.

Il y a bien la référence à la cellule AE3 dans ton code?

J'ai essayé plein de choses qui ne fonctionnent malheureusement pas...

Est ce que je dois lui définir que le contenu de AE est un hyperlien pour que ça fonctionne ou je fais fausse route sur mon code ?

Je devrai dormir depuis longtemps mais c'est rageant de piétiner si près du but.. je m'énerve contre moi même

Voici mon code pour ouvrir l'hyperlien de AE

Private Sub RDoc_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If RDoc <> "" Then ActiveWorbook.FollowHyperlink Feuil2.Range("AE" & LigSel).Value
End Sub

Et si je mets un Activecell (Ligsel, AE) pour récupérer le contenu est ce que ce serait une option viable ?

ça va piquer demain matin à 5h15 mais mon cerveau décroche pas

A nouveau,

Je devrai dormir depuis longtemps mais c'est rageant de piétiner si près du but.

C'est bien la persévérance... mais parfois on ne débloque pas certaines situations.

Ici, tu utilises un lien inséré dans une cellule, je le rappelle sous la forme =LienHypertexte(

Et non inscrit par un code VBA tel que Range("AE3").Hyperlinks.Add

Et si pour ce dernier il est plus accessible par le code VBA puisqu'il a été créé par ce moyen.

Le premier est plus capricieux. Donc j'utilises plutôt le code ci-dessous pour éviter un blocage.

Lien = Split(Sheets("BDD").Range("AE" & LigSel).Formula, Chr(34))
ActiveWorkbook.FollowHyperlink Address:=Lien(1)

Eventuellement tu peux ajouter if RDoc <> "" mais je vois mal faire un double-clic sur un TextBox vide.

Bon réveil

Merci pour tes réponses : j'ai réussi à obtenir ce que je voulais !

Je poste le fichier avec les codes VBA ça aidera peut être certains dans mon cas

Bonjour

Désolé c'est encore moi

J'ai voulu ajouté le reste de ma base de données à ton fichier excel qui fonctionne mais il me met ce message d'erreur :

erreur bdd

Est ce que ça vient de la définition de C qui se trouve quelque part ?

Est ce que ça coince car certaines cellules Documents sont vides ?

Merci de votre aide

Bonjour,

Ton bout de code est en dessous du "End With" et il y a un " . " devant le  .range("AE1")  ....

Descends le "End With" sous le "End If" ... ainsi le "With ThisWorkbook.Sheets("BDD") sera encore actif rendu à ta boucle ...

De plus, il y a un "For C = 3..............." et il n'y a pas de "Next C au bas de cette boucle ...

ric

Rechercher des sujets similaires à "vba comment recopier hyperlien"