Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.
Modérateur :Vilains modOOs
Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Sur une feuille j'ai une colonne qui contient du texte pointant sur une url.
Par exemple
A1 : contient "google" qui est un lien vers "www.google.fr"
A2 : contient "wikipedia" qui est un lien vers "www.wikipedia.fr"
Et je voudrais que A1 contienne "www.google.fr" et que A2 contienne "www.wikipedia.fr"
En passant par le bouton "hyperlien", il me suffit pour cela de supprimer le contenu de la case "text" pour retrouver seulement le lien dans ma cellule mais je me vois mal faire cette manip 200 fois...
Merci si vous avez une solution !
oOo 2.4 sur Ubuntu
Dernière modification par trOhmato log le 03 mars 2009 11:58, modifié 2 fois.
Raison :Merci d'apprendre vous même à pratiquer le double balisage.
Euh non, merci à vous mais ce n'est pas aussi simple :
je peux avoir en C1 :"coucou ca va" et qui pointe vers "www.unsitequelquepart.com"
En fait il n'y a aucun rapport entre le texte de la cellule et le lien lui-même, enfin rien de systématique donc pas si simple...
Donc le titre est vraiment "retrouver une url a partir d'un lien hypertexte", sinon ce ne serait qu'une "simple" transformation texte->texte
OpenOffice.org 3.2 sous Debian Squeeze/Sid et OpenOffice.org 3.2 sous Windows XP SP3.
Le logiciel libre représente selon moi une grande famille où l'union fait la force ... Battons les escrocs à leur petit jeu
Le contenu de la case étant "google", je ne vois pas comment récupérer le lien sans utiliser une macro
Je ne vois pas de méthode autres, et par macro cela dépasse mes faibles compétences.
@ dominique, je ne pense pas que cela puisse se faire par l'enregistreur de macros. L'enregistreur n'enregistre pas les saisies effectuées dans les boites de dialogue.
Je pense qu'il faille l'écrire...
merci pour vos réponses.
En effet j'ai essayé en enregistrant une macro, mais cela ne fonctionne pas, en fait le résultat donné au lancement de la macro est celui obtenu lors de l'enregistrement de la macro...donc si j'applique la macro à 20 cellules, les 20 cellules contiennent toutes le résultat de celle ayant servie à enregistrer la macro
gerard24 a écrit :L'enregistreur n'enregistre pas les saisies effectuées dans les boites de dialogue.
Merci Gérard pour cette précision, après test effectivement le "copier" n'est pas transposé.
fabrice91 a écrit :les 20 cellules contiennent toutes le résultat de celle ayant servie à enregistrer la macro
J'ai un résultat similaire ... un peu cherché (mal sans doute ?) avec Xray sur les propriétés d'une cellule
Je donne ma langue au chat !
OpenOffice.org 3.2 sous Debian Squeeze/Sid et OpenOffice.org 3.2 sous Windows XP SP3.
Le logiciel libre représente selon moi une grande famille où l'union fait la force ... Battons les escrocs à leur petit jeu
Je trouve dingue tout de même qu'une fonction telle que HYPERLINK existe et permette de générer une "phrase" pointant vers une url :
HYPERLINK("ceci est un lien vers google";"www.google.fr") va donner dans une cellule la phrase "ceci est un lien vers google" avec un pointage vers http://www.google.fr
Je trouve dingue disais-je qu'une telle fonction existe mais qu'il n'existe pas une fonction inverse ( du genre BROKE_LINK() qui prendrait en parametre une cellule contenant un lien et renvoyant l'url de celle-ci.)
Cela veut dire que l'on peut générer des milliers de cellules sans pouvoir revenir en arrière !
Si la fonction n'existe pas c'est que :
- soit il y a une difficulté de programmation
- soit il y a trop peu d'utilisateurs intéressés par cette fonction
Sinon pour la macro, j'essaierai de regarder ça ce soir.
Sub RenommerHyperliens
Dim oDoc as Object, oFeuille as Object, oCellule as Object
Dim oHyperlien
Dim a as Integer, b as Integer
oDoc = ThisComponent
oFeuille = oDoc.sheets.getbyName("Feuille1") ' par exemple...
For a = 0 to 25
For b = 0 to 99
oCellule = oFeuille.getcellbyPosition(a,b) 'passe en revue les cellules de la matrice A1:Z100
If oCellule.TextFields.Count = 1 Then 'vérifie la présence d'un champ texte
REM --- Récupération du champ :
oHyperlien = oCellule.getTextFields.getbyIndex(0)
REM --- Modification de la propriété "Representation", qui est le texte du champ, par l'adresse URL du champ
oHyperlien.setPropertyValue("Representation",oHyperlien.URL)
EndIf
Next b
Next a
End Sub
En espérant que cela peut aider...
LibreOffice 3.3.4 + Report Builder Windows 7 / Windows XP sp3 Ubuntu 11.10 / LMDE
Réalisé avec le code de spYre, çi-dessus, qui a été plus perspicace que moi avec Xray :
ExtraireURL.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice.org 3.2 sous Debian Squeeze/Sid et OpenOffice.org 3.2 sous Windows XP SP3.
Le logiciel libre représente selon moi une grande famille où l'union fait la force ... Battons les escrocs à leur petit jeu