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

Signaler
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
21 septembre 2005
-
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
-
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.

14 réponses

Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
6
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.
Messages postés
637
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017

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
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
6
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.
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
21 septembre 2005

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.
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
6
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.
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
21 septembre 2005

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"
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
21 septembre 2005

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?
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
21 septembre 2005

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.
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
6
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.
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
21 septembre 2005

merci pour ton aide :)
ton code marche :)
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
6
Heureux d'avoir pu te depanner.

Bonne prog,
JMP77.
Messages postés
1
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
18 février 2005

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
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
21 septembre 2005

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
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
6
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.