Aller au contenu

Luna

Membres
  • Compteur de contenus

    1 113
  • Inscription

  • Dernière visite

  • Jours gagnés

    42

Tout ce qui a été posté par Luna

  1. Oki donc je suis définitivement perdue... ^^" Si c'est de l'AutoLISP, comment la phrase "Using only AutoLISP" peut les exclure ? Du coup on y a le droit, ou alors mon cerveau est déjà parti en WE et j'ai loupé un truc ... Bisous, Luna
  2. En effet, j'ai zappé les (vlr-) pour les Reactors, preuve que c'est encore un domaine que je n'ai pas suffisamment exploré au point de les oublier xD Merci pour la précision, comme je le disais je ne suis sûre de rien concernant la dénomination des fonctions et donc à quoi elles se rattachent. Mais du coup, à quoi correspondent les fonctions (vl-) ? Car pour moi c'est de l'AutoLISP, mais pourtant elles semblent exclues des challenges par la simple phrase "Using only AutoLISP"...Donc je suis perdue >w< Bisous, Luna
  3. Soka, j'avoue que j'ai du mal avec le vocabulaire des fonctions, pour moi c'était décliné ainsi : (acet-*) -> ExpressTools (vlax-*) -> Visual LISP (vla-*) -> ActiveX (vl-*) et (*) -> AutoLISP Donc j'avoue que je n'utilise pas forcément le bon vocabulaire... C'est quelque peu dommage de se limiter du coup aux fonctions AutoLISP pur, sans avoir droit aux fonctions (vl-), ni-même aux autres car cela permettrait également de voir comment se débrouille les autres langages et par exemple de voir que dans certains cas l'AutoLISP est clairement plus performant que le Visual et inversement... Bisous, Luna
  4. Bon bah comme chat, j'aurais l'occasion de participer un peu sur les forum TheSwamp 😉 Vui évidemment le but principal est de fournir un ensemble de challenges abordables qui font finalement office de "cahier de vacances" si je puis dire donc cela permet de fournir un ensemble d'exercices et on y répond ou pas selon nos envies. Cela permet également d'aborder certains sujets sous un autre angle et pour ceux qui débute, avoir quelques post permet également de voir le nombre différents de possibilité pour un même exercice donc c'est très bien pour eux pour découvrir de nouvelles choses et ensuite leur permettre de l'essayer dans leur coin avec d'autres contraintes. Bref, le principe des mini-challenge permet vraiment d'apprendre mais surtout de comprendre un problème et de voir comment fonctionne notre propre logique. Après tout, très souvent ces challenges peuvent être vu d'un point de vu récursif, ou itératif et la logique derrière est totalement différente, donc propre à chaque cerveau. En tout cas, merci pour ce partage ! Il est vrai que mes seules lecture sur TheSwamp c'est toujours lié à des problèmes complexes et pointilleux donc je ne me balade pas comme je le fais sur CADxp. Bisous, Luna
  5. C'est en effet intéressant ! (certains diront que c'est en anglais donc tant pis) En théorie il y a également le forum CADxp - Programmer en s'amusant mais il y a probablement moins de challenges à la portée des débutants, mais cela peut être quelque chose à prévoir éventuellement. Evidemment, de manière générale les débutants en LISP ont moins tendance à poster leurs idées de programmes sur les forums donc je ne saurais dire si cela aura autant de succès que sur TheSwamp 🙂 Bisous, Luna
  6. Luna

    Lisps de Patrick_35

    Coucou, Tes paramètres dynamiques possèdent-ils exactement le même nom entre le bloc à remplacer et le bloc remplaçant ? Car si le nom des paramètres est différents, le programme ne pourra pas déterminer par lui-même ce qu'il doit conserver ou non du coup... Bisous, Luna
  7. Merci @(gile), J'avais en effet pensé à Quote mais n'étant pas sûre de moi, j'ai préféré ne rien dire 😉 Bisous, Luna
  8. Le soucis c'est que cette commande utilise obligatoirement une boîte de dialogue... et n'ayant jamais utilisé le SuperAutoScript je ne saurais vraiment s'il peut fonctionner dans ce cas-là ni même comment il fonctionne. Mais essaye de regarder cela. Bisous, Luna
  9. Coucou, As-tu essayer en passant par la commande RECHERCHER : En fonction du nombre de fichier, cela peut être suffisant je pense. Sinon il faudra regarder plus en détails (tu as bien un AutoCAD full, et non LT n'est-ce pas ?). Bisous, Luna
  10. @La Lozère, le verbe Set peut se traduire par "Définir" donc on se doute que cette fonction va définir quelque chose. Donc avec (setq symbol expression) on sait que l'on va définir un 'Symbol' (= "Variable", ou caractère) avec une 'Expression' (= une expression représente à la fois un 'Symbol' et/ou une fonction). Concernant le Q, je ne saurais pas forcément l'expliqué, mais il a forcément un lien de traduction, en plus de faire la distinction entre les fonctions (set) et (setq). Un autre exemple où l'anglais permet d'expliquer le nom de la fonction : (rtos) RTOS = Real TO String, soit nombre réel vers chaîne de caractères. On se doute bien que le but de cette fonction est de convertir un nombre réel en une chaîne de caractères. Bref, je ne dis pas que c'est mieux si les aides ne sont pas traduites en français, je dis juste que le français est connu (et reconnu) pour sa capacité de se plaindre de tout avant de faire le moindre effort. Durant mes études je faisais partie des plus nuls en anglais, j'étais incapable de parler correctement l'anglais. Cela ne m'a pas empêcher de faire quelques effort pour rattraper le niveau et c'est justement en comprenant le nom des fonctions par rapport à l'anglais que j'ai pu apprendre aussi vite la programmation. Si tu crées un langage de programmation en japonais, tu seras incapable de te souvenir du nom des fonctions et de leur utilité si tu n'arrives pas à comprendre la raison derrière leur nom (c'est pareil lorsque tu crées tes propres fonctions, tu fais en sorte de leur donner un nom qui fait du sens à tes yeux mais qui ne soit pas trop long à écrire si tu veux l'utiliser régulièrement). Depuis que je fais de la programmation, je ne regarde plus aucun film en français, uniquement VOST parce que j'ai besoin d'entraîner ma compréhension orale et très souvent lorsque je réfléchis, je le fait en anglais, encore une fois parce que cela est un petit travail quotidien mais qui me force à travailler mon vocabulaire, mes construction de phrases, etc... Bref, apprendre l'anglais, c'est très certainement la chose la plus simple de nos jours lorsqu'on voit l'importance de cette langue (et la simplicité des conjugaisons comparé à la conjugaison française). L'anglais à l'heure d'aujourd'hui est devenu monnaie courante car il s'agit d'un langage qui transcende les frontières. Donc je comprends parfaitement l'envie de voir des aides en français, mais pour être honnête, je perçois cela comme une vision purement française, consistant à attendre que les autres s'abaisse à notre niveau plutôt que de chercher à s'élever au niveau des autres. D'un point de vue purement scolaire, la France est classée 23ème/79 en 2021 au classement Pisa et on pourrait être bien plus haut dans le classement. Le pire c'est la différence de niveau notable entre l'élite et la moyenne. C'est pas pour rien que les français sont aussi peu performant en maths, anglais, ... c'est uniquement parce qu'on s'attend à ce que tout nous tombe dans la main... M'enfin.. c'est juste un point de vue, qui est le mien et même si j'avoue qu'avoir les sites francophones pour mieux comprendre la programmation c'est mieux (d'ailleurs, je ne vois pas où est le problème du coup car je pense que les deux sites francophones dont tu parles sont très complets sur de très nombreux sujets et remplacent majoritairement l'aide AutoCAD non francophone), je pense sincèrement que si l'on veut vraiment se lancer dans la programmation, la première leçon qu'il faudrait apprendre c'est d'étendre son horizon et reconnaitre que l'on ne sait rien ^^" Mais ce n'est pas le bon endroit pour discuter de cela malheureusement.. Bisous, Luna
  11. @DenisHen, les aides AutoDesk pour bon nombre de sujets sont traduites dans de nombreuses langues. La raison : elles sont destinées pour un utilisateur lambda des produits d'AutoDesk et sont donc susceptibles d'être consulté par le premier venu. Concernant la programmation, c'est un domaine où habituellement les développeurs sont en mesure de comprendre l'anglais vu que toutes les fonctions sont en anglais de toutes façons. Et le nombre d'utilisateurs en mesure de faire de la programmation représente un pourcentage assez faible pour les utilisateurs d'AutoCAD, donc seules les fonctions "primaires" possède des traductions dans plusieurs langues mais plus on fait appel à des fonctions dites "complexes", plus le nombre de développeurs potentiel réduit drastiquement. Donc je pense simplement que passer du temps à traduire des pages dans de nombreuses langues pour une petite poignées de personnes (alors qu'il existe des traducteurs online suffisamment performants pour comprendre le message d'une page) ne vaut pas le coup pour AutoCAD. De toutes façons, il suffit de regarder le nombre de messages dans les forums, le calculs est vite fait sur l'utilité ou non de traduire une page : - 396 000 messages sur le forum AutoDesk (EN) - Visual LISP, AutoLISP and General Customization - 92 000 messages sur le forum AutoDesk (EN) - VBA - 71 000 messages sur le forum AutoDesk (FR) - AutoCAD – tous produits - Français - 42 000 messages sur le forum CADxp (FR) - LISP et Visual LISP - 5 000 messages sur le forum CADxp (FR) - VBA Autrement dit, 10% des développeurs LISP sont francophones et seulement 5% des développeurs VBA sont francophones. Donc tu auras plus de chance en apprenant l'anglais qu'en attendant une traduction des pages en français.. 😉 Bisous, Luna
  12. Luna

    gestion des présentations

    les états de calques sont enregistrés dans le dessin, donc si tu fais appel à ton dessin1 en XRef dans un dessin2, tu auras accès aux états de calques du dessin1 et du dessin2 dans le gestionnaire du dessin2. Par contre si c'est entre deux dessins non référencés l'un à l'autre, il faut faire "Importer" / "Exporter". Bisous, Luna
  13. Luna

    gestion des présentations

    Coucou, Regarde du côté du gestionnaire d'état des calques (commande LMAN). Dans ta première présentation tu cliques dans ta fenêtre, commande LMAN et tu fais "Nouveau" en lui donnant un nom, puis dans ta seconde présentation, tu cliques dans ta fenêtre, commande LMAN, tu sélectionnes l'état de calque que tu as créés et tu fais "Restaurer". Bisous, Luna
  14. Luna

    Alors, les djeunes ?

    @Curlygoth, Où trouves-tu ces fichiers .chm ? J'ai bien "C:\Program Files\Autodesk\AutoCAD 2022\Help" mais les fichiers .chm affiché ne semble pas correspondre à l'aide AutoCAD avec le guide de référence pour les développeurs... Bisous, Luna
  15. Coucou, A force d'écrire des fonctions getXXX pour leur prévoir des valeurs par défaut, des initialisation (initget) et/ou prévoir une aide "?" qui boucle pour afficher un message avant de reposer la même question, j'ai fini par écrire le programme (getkdh) (= GETxxx Keyword Defaultvalue Helpmessage). Donc pour ceux que chat intéresse, le principe de ce programme est de regrouper toutes les fonctionnalités citées ci-dessus en une seule fonction pour récupérer des saisies utilisateurs. Il est donc possible d'utiliser toutes les fonctions compatibles avec (initget) (cf. Help Center - initget (AutoLISP) ), de définir les arguments d'initget comme on le désire (notamment les keyword), de définir également les arguments des fonctions getXXX (notamment l'argument 'pt), de définir une valeur par défaut et/ou d'ajouter un message à afficher pour aider l'utilisateur dans la saisie attendue. Ci-dessous les fonctions LISP (getkdh) ainsi que (str2lst) et (lst2str) nécessaire au fonctionnement de (getkdh) : (defun getkdh (fun pfx arg sfx dft hlp / get bit kwd msg val) (defun get (msg / v) (apply 'initget arg) (if (null (setq v (apply (car fun) (vl-remove nil (mapcar '(lambda (x) (if (vl-symbolp x) (vl-symbol-value x) x)) (cdr fun)))))) (setq v (cdr dft)) v ) ) (and (member (car fun) (list 'getint 'getreal 'getdist 'getangle 'getorient 'getpoint 'getcorner 'getkword 'entsel 'nentsel 'nentselp)) (= 'STR (type (cond (pfx) (""))) (type (cond (sfx) (""))) (type (cond (hlp) ("")))) (listp arg) (if (null (setq bit (car (vl-remove-if-not '(lambda (x) (= 'INT (type x))) arg)))) (setq bit 0) bit) (if (null (setq kwd (car (vl-remove-if-not '(lambda (x) (= 'STR (type x))) arg)))) (not kwd) (if (vl-string-search "_" kwd) (setq kwd (mapcar 'cons (str2lst (car (str2lst kwd "_")) " ") (str2lst (cadr (str2lst kwd "_")) " "))) (setq kwd (mapcar 'cons (str2lst kwd " ") (str2lst kwd " "))) ) ) (if hlp (if (not (assoc "?" kwd)) (setq kwd (append kwd '(("?" . "?")))) T ) T ) (cond ( (null dft) (not dft)) ( (member dft (mapcar 'car kwd)) (setq dft (assoc dft kwd)) ) ( (member dft (mapcar 'cdr kwd)) (setq dft (nth (vl-position (car (member dft (mapcar 'cdr kwd))) (mapcar 'cdr kwd)) kwd)) ) ( T (setq dft (cons (vl-princ-to-string dft) dft))) ) (if (and dft (= 1 (logand 1 bit))) (setq bit (1- bit)) T) (setq arg (vl-remove nil (list bit (lst2str (vl-remove nil (list (lst2str (mapcar 'car kwd) " ") (lst2str (mapcar 'cdr kwd) " "))) "_")))) (if (or pfx kwd dft sfx) (setq msg (strcat (cond (pfx) ("")) (if kwd (strcat " [" (lst2str (mapcar 'car kwd) "/") "]") "") (if dft (strcat " <" (car dft) ">") "") (cond (sfx) ("")) ) ) (not (setq msg nil)) ) (if hlp (while (= "?" (setq val (get msg))) (princ hlp) ) (setq val (get msg)) ) ) val ) (defun str2lst (str sep / pos) (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) (defun lst2str (lst sep) (if lst (vl-string-left-trim sep (apply 'strcat (mapcar '(lambda (x) (strcat sep (vl-princ-to-string x)) ) lst ) ) ) ) ) Pour plus d'infos sur les définitions des arguments, il y a le fichier .lsp en PJ (avec l'aide en anglais sur l'utilisation de la fonction). Ci-dessous quelques exemples d'utilisation et du résultat obtenu sur ligne de commande : Commande: (getkdh (quote (getint msg)) "\nSpécifier un nombre entier positif" '(6) " :" 1 nil) Spécifier un nombre entier positif <1> :0 La valeur doit être positive et non nulle. Spécifier un nombre entier positif <1> : *ENTER* 1 Commande: (getkdh (quote (getint msg)) "\nSpécifier un nombre" '(6) " :" 1 "\nLe nombre doit être strictement supérieur à 0") Spécifier un nombre [?] <1> :? Le nombre doit être strictement supérieur à 0 Spécifier un nombre [?] <1> :-1 La valeur doit être positive et non nulle. Spécifier un nombre [?] <1> :12.2 Nécessite un entier positif non nul ou une option. Spécifier un nombre [?] <1> :5 5 Commande: (setq pt (getkdh (quote (getpoint msg)) "\nSpecify a point" nil " : " '(0.0 0.0 0.0) nil)) Specify a point <(0.0 0.0 0.0)> : *ENTER* (0.0 0.0 0.0) Commande: (getkdh (quote (nentselp msg pt)) nil nil nil nil nil) (<Nom d'entité: 2274fb62560> (0.0 0.0 0.0)) ;;or nil if there's no entity Commande: (getkdh (quote (getkword msg)) "\nChoisir une option" '("Active Sélection Toutes _Current Selection All") nil nil "Message d'aide...") Choisir une option [Active/Sélection/Toutes/?]? Message d'aide... Choisir une option [Active/Sélection/Toutes/?]t "All" Commande: (getkdh (quote (getkword msg)) "\nChoisir une option" '("Active Sélection Toutes _Current Selection All") " " "Active" nil) Choisir une option [Active/Sélection/Toutes] <Active> "Current" Commande: (getkdh (quote (getkword msg)) "\nChoisir une option" '("Active Sélection Toutes") " " "eXit" nil) Choisir une option [Active/Sélection/Toutes] <eXit> A "Active" Commande: (getkdh (quote (getkword msg)) "\nChoisir une option" '("Active Sélection Toutes") " " "eXit" nil) Choisir une option [Active/Sélection/Toutes] <eXit> *ENTER* "eXit" Ce ne sont que des exemples parmi tant d'autres, mais cela permet de montrer un peu plus en détail son fonctionnement ^^" Le but étant de pouvoir l'utiliser dans de nombreux cas possibles, évidemment s'il y a des idées d'amélioration je suis preneuse après tout le but est de fournir un outil qui réponde à un maximum de besoin quasi-similaires 😉 PS: Pour ceux qui ne l'on pas remarqué dans les exemples ci-dessus, le premier argument doit obligatoirement être la fonction (quote) suivie de la liste (FunctionName [arg1] msg [arg2]) avec obligatoirement FunctionName en premier atom et msg doit obligatoirement être présent également (il s'agit du symbol à qui le programme affecte la valeur du message affiché pour l'utilisateur, donc il est essentiel également). Les [arg1] et [arg2] correspondent aux arguments optionnels des fonctions reliées à (initget) et dont leur position est relative au [msg]. A savoir que seul (nentselp) possède [arg2] correspondant au [pt], les autres fonctions possèdent seulement [arg1] (ou pas) en plus du [msg]. Si vous avez des questions n'hésitez pas 😉 Bisous, Luna UtDac . lst2str.lsp UtDac . str2lst.lsp UtUse . getkdh.lsp
  16. Luna

    Alors, les djeunes ?

    yup, c'est exactement chat ! Même si avant de passer par les forums, les fichiers de @rebcao faisant la liste des variables systèmes et des commandes (surtout les variables) sont une vraie mine d'or à mes yeux. Un simple CTRL+F permet de savoir s'il existe une variable/commande qui peut correspondre à mon besoin. Le seul bémol que je vois sur l'aide AutoCAD, c'est qu'à chaque fois que je veux accéder à la page relative à une fonction, je suis toujours obligée d'écrire en entier "AutoLISP" en plus du nom de la fonction, sinon il ne me propose pas la page en question ! Ce qui est assez énervant à la longue...et également le fait qu'ils aient supprimé l'aide récente d'internet (il y a l'aide 2016 sur internet, mais il peut y avoir quelques écarts), donc on est obligé d'ouvrir une session AutoCAD uniquement pour avoir accès à l'aide.. >n< Bisous, Luna
  17. Luna

    Alors, les djeunes ?

    Perso, mon premier réflexe quand je ne sais pas (ou plus) et notamment lorsqu'il s'agit de LISP/commandes/variables systèmes, je vais toujours voir l'aide AutoCAD. Si les infos ne sont pas suffisantes (ou bien mon soucis un peu particulier), je vais voir sur internet car très souvent il y a toujours une réponse adaptée. Je ne pose des questions que si je suis sûre que je ne saurais trouver la réponse par moi-même. Après je reconnais qu'avec des connaissances en programmation, c'est beaucoup plus simple de créer ses propres réponses ou d'adapter une réponse suffisamment proche alors que sans connaissances, tu es obligé de trouver LA réponse que tu cherches. Bisous, Luna
  18. Luna

    Espace objet soudainement grisé

    Coucou, Pour commencer, es-tu directement dans l'espace objet ou bien est-ce une fenêtre de présentation ? Ensuite, pourquoi avoir posté le problème dans le forum Covadis ? Penses-tu que cela ait un lien direct avec Covadis ? Je pense que tu trouveras plus rapidement des réponses sur le forum AutoCAD ou AutoCAD LT, permettant ainsi de connaître ta version d'AutoCAD. Penses-tu qu'il soit possible de partager ton .dwg afin que l'on puisse voir plus précisément comment corriger ce soucis ou bien est-ce trop sensible ? Autrement, essayes de voir si cela peut corriger ton problème pour commencer : https://knowledge.autodesk.com/support/autocad/learn-explore/caas/sfdcarticles/sfdcarticles/All-linework-in-modelspace-displays-as-white-in-AutoCAD.html Cela provient probablement d'un fichier .ctb ou .stb (mais à vérifier) Bisous, Luna
  19. Heya, J'ai trouvé ceci dans l'aide AutoCAD : (Defun c:DeleteBlockName (/ f filesToProcess cnt odbx) (if (and (setq f (acet-ui-pickdir "Select folder to process" (getvar 'dwgprefix) ) ) (setq filesToProcess (vl-directory-files f "*.dwg" 1)) (setq blkname (vl-princ-to-string (lisped (if blkname blkname "Enter Block name")))) (not (member blkname '("0" "-1"))) (snvalid blkname) ) (progn (if (< (atoi (substr (getvar "ACADVER") 1 2)) 16) (setq odbx (vlax-get-or-create-object "ObjectDBX.AxDbDocument")) (setq odbx (vlax-get-or-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2) ) ) ) ) (foreach itm filesToProcess (setq cnt 0) (if (not (vl-catch-all-error-p (vl-Catch-All-Apply '(lambda () (vla-open odbx (setq fullname (strcat f "\\" itm))) ) ) ) ) (progn (vlax-for layout (vla-get-layouts odbx) (vlax-for objBlock (vla-get-block layout) (if (and (vlax-write-enabled-p objBlock) (= (setq objtype (vla-get-objectname objBlock)) "AcDbBlockReference" ) (eq (strcase (Vlax-get objBlock 'effectivename) ) blkname ) ) (progn (Vla-delete objBlock) (setq cnt (1+ cnt)) ) ) ) ) (if (> cnt 0) (progn (vla-saveas odbx fullname) (princ (strcat "\n" (vl-filename-base fullname) "\nDeleted " (itoa cnt) " block(s) : " blkname )))) ) ) ) (vlax-release-object odbx) ) ) (princ) ) ;; Routine écrite par pbejse Cela correspond à la suggestion de @(gile) en utilisant ObjectDBX Bisous, Luna
  20. Luna

    Lignes Palplanches

    Coucou, C'est normal que le hachurage n'arrive pas à suivre, le type de ligne n'est qu'un état visuel mais pour AutoCAD, c'est juste une ligne. Il faut considérer que AutoCAD travaille uniquement avec des lignes continues donc forcément, si le type de ligne possède des formes alambiquées, cette différence sera encore plus visible 🙂 Bisous, Luna
  21. Coucou, Je n'avais pas pensé à la lecture d'un simple fichier texte en effet, cela est très certainement plus simple à modifier. Après j'ai peur aussi par rapport au temps d'exécution du programme...Cela ne ralenti pas trop le programme d'ouvrir un fichier texte à chaque fois ? Bisous, Luna
  22. Luna

    Alors, les djeunes ?

    Coucou, En voyant les sujets sur les forums actuellement contrairement aux sujets d'il y a 20 ans, j'avoue que chat fait peur mine de rien... J'ai l'impression que les gens prenaient davantage de temps pour apprendre lorsque l'accès aux connaissances était plus difficile, alors que maintenant, certains ouvrent des sujets avant même de chercher dans l'aide AutoDesk... Bisous, Luna
  23. Donc si en effet tu as des échelles X Y Z différentes, il te reste l'option NCOPIE qui fonctionne bien (par contre j'ai l'impression que NCOPIE décompose la polyligne en plusieurs segments de lignes, est-ce bien normal ?), à voir après suivant le nombre de références de bloc que tu as 😉 Bisous, Luna
  24. @DenisHen, Je crois que l'on ne peut créer une hachure seulement si la référence de bloc possède une échelle uniforme. Autrement dit, cela fonctionne que si Echelle X = Echelle Y = Echelle Z. Bisous, Luna
  25. J'avais en effet supposé que les expressions régulières seraient parfaite pour faire ce genre de travail !! Mais comme je n'ai toujours pas eut le temps d'étudier le sujet, je ne les maîtrise pas (notamment à cause des caractères de recherche qui diffèrent des WildCard Characters donc mon cerveau n'est pas encore suffisamment habitué)... Mais il va sérieusement falloir que je passe du temps à étudier toutes ces notions encore un peu trop obscures à mes yeux, parce que j'ai l'impression de faire du surplace en programmation pour le moment et j'aime pas trop chat... Merci pour cet exemple @(gile) ! Bisous, Luna
×
×
  • 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é