Aller au contenu

D'une liste à une liste de paires pointées.


Messages recommandés

Posté(e)

Bonjour à tous.

 

Voilà, dans une routine, j'ai une liste "normale"

(setq Lst_GeoRD '("A" "B" "C")

Mais j'aimerais "convertir" cette liste en une liste de paires pointées (beaucoup plus facile à gérer pour moi) :

(setq LstPP_GeoRD '((1 . "A")
                   (2 . "B")
                   (3 . "C")
                  )
)

Si quelqu'un a une astuce, une idée, un conseil... Je suis preneur...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Une idée vite fait

(setq Lst_GeoRD '("A" "B" "C")
(setq nb 0)
(setq LstPP_GeoRD (mapcar (function (lambda (x) (cons (setq nb (1+ nb)) x))) Lst_GeoRD))

Aide au téléchargement du cadastre dgfip-download-helper
Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0
Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js

Posté(e)

Salut à tous... Et mille mercis pour votre aide.

 

Mon seul problème est que je ne connais pas le nombre d'éléments dans ma liste. Je pense donc opter pour la solution de Vincent qui semble me convenir le plus...

 

Je teste tout ça dès que j'en aurais le temps...

 

Encore merci à tous...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Salut,

 

Je ne vois pas bien l'intérêt de faire ce type de liste de paire pointées.

Pour accéder à la valeur d'une paire à l'indice i tu devras faire :

(cdr (assoc i listeAssoc))

quand tu peux directement faire :

(nth i listeSource)

 

Et si en plus, tu ne connais pas le nombre d'éléments...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut (gile).

 

En fait, je lirais, dans un fichier ASCII, une liste de personnes. Ce fichier sera structuré ainsi :

;Dessinateur

Jean PXXX

Raymond UYYY

Denis HZZZ

;Topographe

Albert EXXX

Luc DYYY

René OZZZ

Pour que, selon nos agences françaises, l'utilisateur de cette macro puisse éditer ce fichier et modifier simplement cette liste.

J'utilise des listes de paires pointées pour, accroche-toi bien, utiliser ton super "ListBox" ;) .

 

Mais je suis sûr que tu vas avoir une meilleur solution. Mais je ne suis pas certain qu'elle sera assez simple pour moi... :huh:

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Allez, soyons fou. Depuis Excel ou LibreOffice :D

 

J'y vais franco... Avec NotePad++

 

Ce sont des fichiers avec un maximum de 10 personnes...

 

Donc 10 lignes...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

J'y vais franco... Avec NotePad++

 

Ce sont des fichiers avec un maximum de 10 personnes...

 

Donc 10 lignes...

C'était pour que tu commences à jouer avec Excel ;)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

C'était pour que tu commences à jouer avec Excel ;)

Je connais plutôt bien Excel (et le tableau, et le VBA), mais pourquoi cette question ?

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Je connais plutôt bien Excel (et le tableau, et le VBA), mais pourquoi cette question ?

Un fichier Excel est facile à modifier/remplir par tes collègues.

Un fichier texte plus compliqué (pas pour toi) pour eux.

Cela t'éviteras de devoir gérer le personnel de chaque agence.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Ok, mais je n'ai AUCUNE idée de la façon de communiquer avec Excel depuis le Lisp...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Ok, mais je n'ai AUCUNE idée de la façon de communiquer avec Excel depuis le Lisp...

Tu as pleins d'outils sur le net.

(gile), tony tanzillo, moi-même (et je dois en oublier) avons fait des outils pour communiquer avec Excel, du style :

(setq fichier (ouvrir_fichier_excel "c:/.../.../.../test.xls")

(setq valeur (lire_valeur fichier "A1"))

 

Une petite recherche ;)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Ok.

 

Demain matin, à la première heure, je m'y colle...

 

Je vais commencer par ton IXL... Juste pour comprendre le machin du truc...

 

Et merci du conseil...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Patrick, tu as écris, dans un post de 2004... Oulala, c'est pas jeune... Ceci :

(vlax-import-type-library

:tlb-filename "C:/Program Files/Microsoft Office/Office/Excel8.olb"

:methods-prefix "xl-"

:properties-prefix "xlp-"

:constants-prefix "xlc-")

)

(Tiens, je viens de m'apercevoir qu'on ne peut pas placer des espaces en début de ligne dans les "quote" car mon texte brut en a... CadMin, es-tu là ? ?)

 

J'avoue ne pas connaitre ces ":" en première ligne... Ca correspondrait pas à :

(vlax-import-type-library-tlb-filename "C:/Program Files/Microsoft Office/Office/Excel8.olb"

(vlax-import-type-library-methods-prefix "xl-"

(vlax-import-type-library-properties-prefix "xlp-"

..........

Je tiens une piste ? Car là, je découvre peut-être la même "logique" qu'en VBA avec les "With" ?

 

Oui, je fouille ton IXL... Et alors ? Vu qu'il est très bien fait, commenté, partagé...

Moi, tout de suite... J'm'introduis, j'en profite... J'suis un crack... Pour ces p'tites...(désolé... J'ai Gainsbourg dans mes écouteurs...) B)

On peut se détendre après 19h... C'est plus cool... Non ?

 

Mais demain... Sérieux... On bossera là...

 

En tous cas... Merci pour ton aide, toujours aussi précieuse... Maître Patrick...

 

Car avec tout ce que tu as fais pour nous, les "novices" et autres... On te le doit... ;)

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

J'ai regardé ton IXL... Mais je pense qu'il ne travaille qu'avec un fichier Excel ouvert...

 

Non ?

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Salut

 

Tu as API_XLS par exemple.

 

Tout est expliqué dans le lisp

Tu trouveras par exemple

(setq Mon_Appli (lancer_excel))
(setq Mon_Classeur (ouvrir_fichier  Mon_Appli "c:\\Données\\Test.xls"))
(setq Ma_Feuille (feuille_active Mon_Classeur))
(lire_cellule   Mon_Classeur Ma_Feuille "A1")
(fermer_fichier Mon_Classeur)
(fermer_appli (list Mon_Appli Mon_Classeur))

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Salut Patrick_35, et merci pour ton aide...

 

Je termine un petit souci de liste et je regarde ça.

 

L'idée d'utiliser un classeur Excel est beaucoup plus constructive qu'un simple fichier ASCII.

 

Merci encore...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Salut.

 

Bon, je me suis attelé aux liaisons Lisp <-> Excel. J'ai donc utilisé "Api_xls.lsp" et j'ai suivi ton exemple, voici donc mon code :

(defun c:testFich (/ fichier Mon_Appli Mon_Classeur Ma_Feuille ContCel)
 (setq fichier (findfile "Doss_IC.xls"))
 ;;fichier = "C:\config\autocad\lisp\Doss_IC.xls"
 (setq Mon_Appli (lancer_excel))
 (princ "\nExcel lancé...")
 (setq Mon_Classeur (ouvrir_fichier Mon_Appli (decodeurl fichier)))
 (princ "\nClasseur : 'Doss_IC.xls' ouvert...")
 (activer_feuille Mon_classeur "Personnel")
 (princ "\nFeuille 'Personnel' activée...")
 (setq Ma_Feuille (feuille_active Mon_Classeur))
 (princ "\nFeuille 'Personnel' ouverte...")
 (setq ContCel (lire_cellule Mon_Classeur Ma_Feuille "A1"))
 (princ "\nLecture de la cellule 'A1'")
 (fermer_fichier Mon_Classeur)
 (fermer_appli Mon_Appli)
 (princ)
) ;_ Fin de defun

Mais AutoCAD me répond :

Commande: TESTFICH

Excel lancé...

Classeur : 'Doss_IC.xls' ouvert...

Feuille 'Personnel' activée...

Feuille 'Personnel' ouverte...; erreur: type d'argument incorrect: VLA-OBJECT nil

C'est donc lors du (setq ContCel que ça plante... Et là... Ca dépasse de très loin mes piètres connaissances...

 

Si quelqu'un a une idée...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Aucun problème...

Doss_IC_CadXP.zip

Il est "normalement" compatible Excel 97 / 2003...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Chez moi, tout fonctionne.

 

Le résultat

Excel lancé...

Classeur : 'Doss_IC.xls' ouvert...

Feuille 'Personnel' activée...

Feuille 'Personnel' ouverte...

Lecture de la cellule 'A1'

Et la lecture de la cellule A1 me renvoie "Fonction"

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

M'enfin...

 

Je vais essayé d'autres méthodes de liaisons Lisp <-> Excel...

 

Car là, je ne peux rien faire d'autre...

 

Merci encore pour ton aide...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité