Tramber Posté(e) le 27 mars 2006 Posté(e) le 27 mars 2006 Dans cette réponse de l'éminent Patrick_35, on fait connaissance avec des contrôles de format d'écriture de cellules XL : numberformatlocal Peut-on en faire quelque chose équivalent en lecture ?J'ai une cellule contenant le texte, plutôt le nombre 061234, or je n'arrive à récupérer que du 61234, sans le zéro. Dans le même esprit, j'ai une dâte affichée en 27/03/2006 dans Excel or elle est lue en un chiffre entier barbare dans Vlisp et j'aimerais m'en dépatouiller sans les DOSlib pour la rendre intelligible. Enfin, last but not least, quelqu'un connait-il le moyen de configurer un lien hypertexte en écriture dans une cellule. Je sais, ca fait 3 questions dans un même sujet ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 28 mars 2006 Posté(e) le 28 mars 2006 Salut Tramberl'éminent Patrick_35Eminent, éminent... on fait ce que l'on peut ;)Par ailleurs, je trouve que tu évolues sur le lisp et le vlisp à une vitesse surprenante :cool: Au lieu d'un xlp-put-numberformatlocal, tu peux faire un xlp-get-numberformatlocal pour lire le format de cellulePour ce qui est de ton zéro, tu ne peux plus raisonner en chiffre mais en texteexemple(setq nb (itoa 61234)) (while (< (strlen nb) 6) (setq nb (strcat "0" nb)) ) Pour ce qui est de la date, tu ajoutes 2415019 à la valeur de ta cellule et l'antique routine qui suit te traduit cette valeur (extrait de mémoire ou inspiré de Julian.lsp) (defun donne_date(td / d j hh m mm ss time y) (setq time (* 86400.0 (- td (setq j (fix td))))) (setq j (- j 1721119.0)) (setq y (fix (/ (1- (* 4 j)) 146097.0))) (setq j (- (* j 4.0) 1.0 (* 146097.0 y))) (setq d (fix (/ j 4.0))) (setq j (fix (/ (+ (* 4.0 d) 3.0) 1461.0))) (setq d (- (+ (* 4.0 d) 3.0) (* 1461.0 j))) (setq d (fix (/ (+ d 4.0) 4.0))) (setq m (fix (/ (- (* 5.0 d) 3) 153.0))) (setq d (- (* 5.0 d) 3.0 (* 153.0 m))) (setq d (fix (/ (+ d 5.0) 5.0))) (setq y (+ (* 100.0 y) j)) (if (< m 10.0) (setq m (+ m 3)) (progn (setq m (- m 9)) (setq y (1+ y)) ) ) (setq hh (fix (/ time 3600.0))) (setq time (- time (* hh 3600.00))) (setq mm (fix (/ time 60.0))) (setq ss (- time (* mm 60.0))) (setq d (itoa (fix d))) (setq m (itoa (fix m))) (setq y (itoa (fix y))) (setq hh (itoa hh)) (setq mm (itoa mm)) (setq ss (itoa (fix ss))) (if (= (strlen d) 1) (setq d (strcat "0" d))) (if (= (strlen m) 1) (setq m (strcat "0" m))) (if (= (strlen hh) 1) (setq hh (strcat "0" hh))) (if (= (strlen mm) 1) (setq mm (strcat "0" mm))) (if (= (strlen ss) 1) (setq ss (strcat "0" ss))) (list (strcat d "." m "." y " " hh ":" mm ":" ss) (strcat hh ":" mm ":" ss)) )Un (car (donne_date valeur)) --> Date+heureUn (cadr (donne_date valeur)) --> heure Pour ce qui est du lien hypertext, tu veux le configurer comment ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 29 mars 2006 Auteur Posté(e) le 29 mars 2006 Tout d'abord, je te remercie, je vais regarder ça tranquillement.Nonobstant (fallait l'écrire celui-là) le fait que j'utilise les fonctions de ikozmos, je vais m'adapter et essayer de faire marcher le get, sachant que j'hérite d'une autre famille de préfixe, etc.... Pour la date, fallait le savoir, heureusement que tu es là. Pour ce qui est du lien hypertext, tu veux le configurer comment ? Ben, je ne sais pas, je dois étudier 2 sortes de liens :Vers un dossierVers un fichier Je suppose que, dérrière cette question, tu veux savoir si je veux un texte apparent = au chemin ou un texte différent du chemin. Eh bien, j'étudie toute proposition ! Dérrière tout ça, je voudrais savoir comment se renseigner sur ce qu'il est possible de faire sur une cellule et si je dois parcourir une doc Excel ou si la console Vlisp et capable d'aider à explorer les properties des cellules ou au moins le vocabulaire. Mais créer un lien hypertexte de base sans en connaitre plus me satisferait déjà beaucoup ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 29 mars 2006 Posté(e) le 29 mars 2006 Je vais de donner un truc qui va te simplifier la vie avec excelTu fais un (setq a (xpl-get-value2 ...) sur la cellule A1 par exempleTu fais un (vlax-dump-object a) et tu fais ensuite un copier coller du résultat dans la colonne A d'excel (sur une autre feulle)Tu fais ta cellule A1 dans Excel comme tu souhaitesTu recommences avec le setq et le vlax pour coller le résultat dans le colonne BDans la colonne C, j'écris la formule =(si(A1=B1;"NON";"OUI") pour comparer les résultats et voir ce qui à modifié avant et après mes manips dans excel @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 29 mars 2006 Auteur Posté(e) le 29 mars 2006 Y arrive pas, comprends pas du tout le dump. (vlax-dump-object (msxl-get-value2 (msxl-get-range *xlapp* "F21"))) Ne marche pas même si (msxl-get-value2 (msxl-get-range *xlapp* "F21")) fonctionne 1. je ne vois pas la différence entre msxl-get-value2 et msxl-get-value 2. impossible de faire un dump *********************Attends un peu, tu m'as enduis(!) en erreur : (vlax-dump-object (msxl-get-range *xlapp* "F21"))fonctionne, c'est bien sur ce que tu voulais dire ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 29 mars 2006 Posté(e) le 29 mars 2006 euh oui, :red: j'ai donné la réponse sans tester @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 30 mars 2006 Auteur Posté(e) le 30 mars 2006 Me v'là beau, j'ai programmé : (setq gh(vla-get-Hyperlinks (msxl-get-range *xlapp* "F21"))) et j'obtiens : #VLA-OBJECT Hyperlinks 12799894(entre crochet, CADxp les prend pour une balise HTML) Le problème reste, car je ne sais pas comment exploiter l'objet VLA, ni lire ni écrire un lien hyper. Peut-on y arriver par ce chemin, je continue de chercher......de l'aide ! [Edité le 30/3/2006 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 30 mars 2006 Auteur Posté(e) le 30 mars 2006 (vlax-for Lnk hypl(setq voir lnk)) (msxl-get-Address voir) Ouf, ca marche, galère.... Mais je n'arrive pas à y programmer un vl-catch-all-apply en cas de cellule sans URL. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 8 avril 2006 Posté(e) le 8 avril 2006 Et avec la fonction type ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 9 avril 2006 Auteur Posté(e) le 9 avril 2006 En fait, avec (setq h1 (vla-get-hyperlinks cell1) h2 (vla-get-hyperlinks cell2) ) (vlax-for link h1 (msxp-get-Address link) ) (vlax-for link h2 (msxp-get-Address link) ) ne pose plus de problèmes si cell1 a un lien et cell2 n'en a pas.Tout va bien, merci à toi. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant