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

Messages postés
35
Date d'inscription
mardi 29 avril 2003
Dernière intervention
21 septembre 2005
- - Dernière réponse : jmp77
Messages postés
1232
Date d'inscription
lundi 4 février 2002
Dernière intervention
4 octobre 2006
- 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 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
1232
Date d'inscription
lundi 4 février 2002
Dernière intervention
4 octobre 2006
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de jmp77
Messages postés
647
Date d'inscription
mardi 22 avril 2003
Dernière intervention
9 janvier 2017
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de yvessimon
Messages postés
1232
Date d'inscription
lundi 4 février 2002
Dernière intervention
4 octobre 2006
0
Merci
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
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Dernière intervention
21 septembre 2005
0
Merci
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
Messages postés
1232
Date d'inscription
lundi 4 février 2002
Dernière intervention
4 octobre 2006
0
Merci
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
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Dernière intervention
21 septembre 2005
0
Merci
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
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Dernière intervention
21 septembre 2005
0
Merci
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
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Dernière intervention
21 septembre 2005
0
Merci
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
Messages postés
1232
Date d'inscription
lundi 4 février 2002
Dernière intervention
4 octobre 2006
0
Merci
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
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Dernière intervention
21 septembre 2005
0
Merci
merci pour ton aide :)
ton code marche :)
Commenter la réponse de Millenod
Messages postés
1232
Date d'inscription
lundi 4 février 2002
Dernière intervention
4 octobre 2006
0
Merci
Heureux d'avoir pu te depanner.

Bonne prog,
JMP77.
Commenter la réponse de jmp77
Messages postés
1
Date d'inscription
jeudi 11 mars 2004
Dernière intervention
18 février 2005
0
Merci
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
Messages postés
35
Date d'inscription
mardi 29 avril 2003
Dernière intervention
21 septembre 2005
0
Merci
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
Messages postés
1232
Date d'inscription
lundi 4 février 2002
Dernière intervention
4 octobre 2006
0
Merci
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.