Excel : récupérer lien hypertexte [Résolu]

Millenod 35 Messages postés mardi 29 avril 2003Date d'inscription 21 septembre 2005 Dernière intervention - 13 déc. 2004 à 11:54 - Dernière réponse : jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention
- 11 juil. 2005 à 12:45
Bonjour,

Je possède un tableau excel de 10 colonnes.
La colonne 1 indique le nom d'un projet, et possède (dans 70% des cas) un lien hypertexte vers un dossier du disque dur.

Parcourir le fichier excel, et extraire les données textes ne me posent aucun problème.

Mais, comment puis-je savoir si la cellule sélectionnée (lors de ma boucle) possède un lien ? et si oui comment le récupérer.

Merci d'avance pour votre aide.
Afficher la suite 

14 réponses

Répondre au sujet
jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention - 13 déc. 2004 à 14:19
+3
Utile
Ok désolé je n'avais penser que le texte et le lien n'était pas les memes.

Alors je suis désolé mais la je ne peux pas tester le code mais voici l'aide en visual basic. Normalement tu devrais pouvoir faire la meme chose sous delphi en fesant une petite adaptation de code. Je te l'aurai bien fait mais la j'ai grave du taf. Si tu n'y arrives pas fais moi signe et je te ferrai ca ce soir.

Hyperlinks, collection d'objets

Représente la collection de liens hypertexte d'une plage ou d'une feuille de calcul. Chaque lien hypertexte est représenté par un objet Hyperlink.

Utilisation de la collection Hyperlinks

Utilisez la propriété Hyperlinks pour renvoyer la collection Hyperlinks. L'exemple suivant montre comment rechercher les liens hypertexte de la feuille de calcul 1 contenant le terme « Microsoft ».

For Each h in Worksheets(1).Hyperlinks
If Instr(h.Name, "Microsoft") <> 0 Then h.Follow
Next
Utilisez la méthode Add pour créer un lien hypertexte et l'ajouter à la collection Hyperlinks. L'exemple suivant montre comment créer un lien hypertexte pour la cellule E5.

With Worksheets(1)
.Hyperlinks.Add .Range("E5"), "http://www.gohere.com"
End With

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jmp77
yvessimon 647 Messages postés mardi 22 avril 2003Date d'inscription 9 janvier 2017 Dernière intervention - 11 juil. 2005 à 12:01
+3
Utile
XL.range['B5'].HYPERLINKs.count; detecte la pésence ou non d'un lien hypertexte

Aolrs si le lien est présent il est possible de le relir

cs := XL.range['B5'].value ; --> texte de la cellule
cs := XL.range['B5'].HYPERLINKs[1].SubAddress; --> lien hypertexte

Par contre suivant les version excel ou autre la commande est differente, mais je ne sais ou trouver des explication claire sur ce point comme sur les tracés graphique dans excel via DELPHI

yvessimon
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de yvessimon
jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention - 13 déc. 2004 à 12:48
0
Utile
Hello,

Et bien la solution facile je pense serait de faire un test FileExsists si le lien pointe sur un fichier ou DirectoryExist si le lien pointe sur un dossier. Si le texte saisi n'est pas un lien ces deux fonctions te renverront False.

Cela te conviendrait il?

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Commenter la réponse de jmp77
Millenod 35 Messages postés mardi 29 avril 2003Date d'inscription 21 septembre 2005 Dernière intervention - 13 déc. 2004 à 13:22
0
Utile
J'ai du mal formuler ma question.

J'ai dans ma colonne1, les entrées suivantes :
- "projet 1". (sans lien hypertexte)
- "projet 2". (avec un lien hypertexte sur \\serveur\partage1)
- "projet 3" (avec un lien hypertexte sur \\serveur2\partage)

Quelle fonction puis-je utiliser pour savoir si une cellule possède un lien hypertexte? et quel lien celle-ci renvoie.
Commenter la réponse de Millenod
jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention - 13 déc. 2004 à 13:29
0
Utile
Si tu fais :

If DirectoryExists('\\Serveur1\Partage1') then
//ici c'est un lien hypertexte et le lien fonctionne
else
//Ce n'est pas lien hypertexte ou le lien ne fonctionne pas ou plus

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Commenter la réponse de jmp77
Millenod 35 Messages postés mardi 29 avril 2003Date d'inscription 21 septembre 2005 Dernière intervention - 13 déc. 2004 à 13:59
0
Utile
voici un exemple :

tableau (les colonnessont séparées par des ';') :
le titre des colones :
Nom; demandeur; date; type

les données :
demande 1; X; 2004/12/01; objets x
extraction des chaines; Y; 2004/12/01; extraction

la cellule "demande 1", possède un lien hypertexte vers (\\serveur\extraction\mr_x)
la cellule "extraction des chaines" possède un lien hypertexte vers (\\serveur\extraction\chaine)

si je fais :

Procedure ExcelImportDemande;
var
classeur : _workbook;
feuille : _worksheet;
arrData : variant;
I : integer;
begin
excel.Connect;
classeur := excel.workbooks.open('liste.xls');
feuille := classeur.worksheets[1] as _Worksheet;

(* sélection de la plage des données *)
I:=12;
arrData := VarArrayCreate([0, (I-8-1), 0, 4], varOleStr]); //création d'une zone mémoire
arrData := Feuille.Range['A8', Feuille.Cells.Item[I,4]].Value2; // copie l'ensemble des données depuis la ligne 8

(**)
for I:=1 to I-8+1 do Begin
ShowMessage(arrData[I,1]);
End
end;

j'obtiens uniquement le titre des cellules de la colonne 1 :
demande 1, extraction des chaines

comment faire pour obtenir les valeurs : "\\serveur\extraction\mr_x", "\\serveur\extraction\chaine"
Commenter la réponse de Millenod
Millenod 35 Messages postés mardi 29 avril 2003Date d'inscription 21 septembre 2005 Dernière intervention - 13 déc. 2004 à 14:01
0
Utile
le lien hypertexte n'étant pas directement visible, (sauf lors du survol du curseur ou lors d'un click), comment fais tu pour extraire ces données?
Commenter la réponse de Millenod
Millenod 35 Messages postés mardi 29 avril 2003Date d'inscription 21 septembre 2005 Dernière intervention - 13 déc. 2004 à 15:35
0
Utile
je n'ai pas encore testé ce code...
mais je crains ceci :

- le 1er code, ne contient qu'une liste d'hyperliens, associés au Document, et non à une cellule...

- pour le 2e code, faut que je vois les autres propriétés...
il faudrait pouvoir sélectionner une zone, et en extraire les liens...

à voir.
merci quand même pour ton aide.
Commenter la réponse de Millenod
jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention - 13 déc. 2004 à 15:40
0
Utile
Je pense que tu peux le faire sur une plage et notamment une colonne.

car le debut de l'aide dit bien ceci :
Représente la collection de liens hypertexte d'une plage ou d'une feuille de calcul.

Une PLAGE ou une feuille de calcul.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Commenter la réponse de jmp77
Millenod 35 Messages postés mardi 29 avril 2003Date d'inscription 21 septembre 2005 Dernière intervention - 16 déc. 2004 à 10:45
0
Utile
merci pour ton aide :)
ton code marche :)
Commenter la réponse de Millenod
jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention - 16 déc. 2004 à 10:48
0
Utile
Heureux d'avoir pu te depanner.

Bonne prog,
JMP77.
Commenter la réponse de jmp77
llwynrt 1 Messages postés jeudi 11 mars 2004Date d'inscription 18 février 2005 Dernière intervention - 18 févr. 2005 à 11:10
0
Utile
bonjour

j'ai le même problème, je souhaite écrire des liens hypertexte dans un fichier excel.
j'ai essayé avec ce qui a été dit au dessus, mais je n'y arrive pas
peux-tu me donner ton code ?

Merci

Marie-Lyse
Commenter la réponse de llwynrt
Millenod 35 Messages postés mardi 29 avril 2003Date d'inscription 21 septembre 2005 Dernière intervention - 11 juil. 2005 à 12:22
0
Utile
bonjour,

merci de voir que même après tant de temps, il y a toujours des personnes intéressées par ce code :)
je te remercie beaucoup.
je suis intéressé par tes documentations excel. celles de msdn, bien que complètes, ne sont pas aussi claires que celles de borland....
si tu veux bien nous les communiquer.

Merci d'avance

Bertrand
Commenter la réponse de Millenod
jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention - 11 juil. 2005 à 12:45
0
Utile
Hello tout le monde,



Effectivement comme le dit millenod toutes documentations supléménetaires seraient la bienvenue.



Merci à toi.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Commenter la réponse de jmp77

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.