Bonjour, je sollicite un peu d’aide pour la réalisation d’une propriété sur Smart properties :
J’aurais besoin de créer une propriété avec condition par rapport au materiaux pour remplir un champ, donc par exemple si XC48 mettre 125695 etc.
Le soucis c’est que j’ai beaucoup de materiau différents et pour l’instant je me retrouve avec ce code, mais le soucis c’est qu’il ne fonctionne pas :
IFF($Matiere=XC48;$Matiere=STUB;$Matiere=STUB RECTIFIE RECUIT h7 ⌀30;$Matiere=90MCVW 5 Z160CDV12;$Matiere=Z130 CWD V6.5.4.2;$Matiere=80MO8;$Matiere=HASBERG;$Matiere=45NCD16;$Matiere=40CMD8+s;$Matiere=Z38DCV5;$Matiere=60WC20;$Matiere=CARBURE H40S;$Matiere=35CD4;$Matiere=FERROTIC|7326909890|
IFF($Matiere=AU4G;$Matiere=AG3;$Matiere=FORTAL HR;$Matiere=PLANCAPLUS 5083|7616999099|
IFF($Matiere=POM-C;$Matiere=POLYCARBONATE;$Matiere=ACCURA 25;$Matiere=IMP.3D FIL ABS (ROUGE);$Matiere=IMP.3D FIL ABS (BLEU);$Matiere=IMP.3D FIL ABS (BLANC);$Matiere=IMP.3D FIL ABS (NOIR);$Matiere=IMP.3D FIL ABS (VERT);$Matiere=PEEK;$Matiere=ELADIP ROUGE;$Matiere=ELADIP ORANGE;$Matiere=ELADIP BLEU|3926909790|
IFF($Matiere=ACIER DE CONSTUCTION;$Matiere=PROFIL BOSCH;$Matiere=ETIRE|7301200000|_)
)
)
)
Pour cumuler des iff dans smartproperties, il faut écrire la règle pour une matière puis insérer dans la condition non remplie cette mêm règle.
Exemple fonctionnelle:
IFF($Rayon=1.3|8|IFF($Rayon=2|12|IFF($Rayon=2.6|16|IFF($Rayon=4|25|IFF($Rayon=5|35|IFF($Rayon=8|50|IFF($Rayon=10|63|err))
Avec le code couleur pour mieux comprendre:

Et si besoin tu enchaine les conditions une par une en vérifiant la fonctionnalité entre 2 ajouts. (tu copie la règle initiale pour 1 matière et tu la colle à la place de err pour ce cas, pour chaque ajout.)
C’est pas très frendly à mettre en place si tu as beaucoup de conditions mais au final cela fonctionne bien ensuite.
1 « J'aime »
Si j’ai bien compris l’intention :
famille aciers → 7326909890
aluminium → 7616999099
plastiques → 3926909790
profilés → 7301200000
cela devrait donner:
IFF($Matiere=XC48|7326909890|
IFF($Matiere=STUB|7326909890|
IFF($Matiere=STUB RECTIFIE RECUIT h7 ⌀30|7326909890|
IFF($Matiere=90MCVW 5 Z160CDV12|7326909890|
IFF($Matiere=Z130 CWD V6.5.4.2|7326909890|
IFF($Matiere=80MO8|7326909890|
IFF($Matiere=HASBERG|7326909890|
IFF($Matiere=45NCD16|7326909890|
IFF($Matiere=40CMD8+s|7326909890|
IFF($Matiere=Z38DCV5|7326909890|
IFF($Matiere=60WC20|7326909890|
IFF($Matiere=CARBURE H40S|7326909890|
IFF($Matiere=35CD4|7326909890|
IFF($Matiere=FERROTIC|7326909890|
IFF($Matiere=AU4G|7616999099|
IFF($Matiere=AG3|7616999099|
IFF($Matiere=FORTAL HR|7616999099|
IFF($Matiere=PLANCAPLUS 5083|7616999099|
IFF($Matiere=POM-C|3926909790|
IFF($Matiere=POLYCARBONATE|3926909790|
IFF($Matiere=ACCURA 25|3926909790|
IFF($Matiere=IMP.3D FIL ABS (ROUGE)|3926909790|
IFF($Matiere=IMP.3D FIL ABS (BLEU)|3926909790|
IFF($Matiere=IMP.3D FIL ABS (BLANC)|3926909790|
IFF($Matiere=IMP.3D FIL ABS (NOIR)|3926909790|
IFF($Matiere=IMP.3D FIL ABS (VERT)|3926909790|
IFF($Matiere=PEEK|3926909790|
IFF($Matiere=ELADIP ROUGE|3926909790|
IFF($Matiere=ELADIP ORANGE|3926909790|
IFF($Matiere=ELADIP BLEU|3926909790|
IFF($Matiere=ACIER DE CONSTUCTION|7301200000|
IFF($Matiere=PROFIL BOSCH|7301200000|
IFF($Matiere=ETIRE|7301200000|
"")))))))))))))))))))))))))))))))))))))))))))))))))))
Mais comme le pressent @sbadenis je pense qu’il serait sage de séparer tes conditions en ajoutant une condition préalable pour déterminer d’abord les 4 Familles de matériaux:
IFF($Matiere=XC48|ACIERS|
IFF($Matiere=STUB|ACIERS|
IFF($Matiere=STUB RECTIFIE RECUIT h7 ⌀30|ACIERS|
IFF($Matiere=90MCVW 5 Z160CDV12|ACIERS|
IFF($Matiere=Z130 CWD V6.5.4.2|ACIERS|
IFF($Matiere=80MO8|ACIERS|
IFF($Matiere=HASBERG|ACIERS|
IFF($Matiere=45NCD16|ACIERS|
IFF($Matiere=40CMD8+s|ACIERS|
IFF($Matiere=Z38DCV5|ACIERS|
IFF($Matiere=60WC20|ACIERS|
IFF($Matiere=CARBURE H40S|ACIERS|
IFF($Matiere=35CD4|ACIERS|
IFF($Matiere=FERROTIC|ACIERS|
IFF($Matiere=AU4G|ALUMINIUM|
IFF($Matiere=AG3|ALUMINIUM|
IFF($Matiere=FORTAL HR|ALUMINIUM|
IFF($Matiere=PLANCAPLUS 5083|ALUMINIUM|
IFF($Matiere=POM-C|PLASTIQUES|
IFF($Matiere=POLYCARBONATE|PLASTIQUES|
IFF($Matiere=ACCURA 25|PLASTIQUES|
IFF($Matiere=IMP.3D FIL ABS (ROUGE)|PLASTIQUES|
IFF($Matiere=IMP.3D FIL ABS (BLEU)|PLASTIQUES|
IFF($Matiere=IMP.3D FIL ABS (BLANC)|PLASTIQUES|
IFF($Matiere=IMP.3D FIL ABS (NOIR)|PLASTIQUES|
IFF($Matiere=IMP.3D FIL ABS (VERT)|PLASTIQUES|
IFF($Matiere=PEEK|PLASTIQUES|
IFF($Matiere=ELADIP ROUGE|PLASTIQUES|
IFF($Matiere=ELADIP ORANGE|PLASTIQUES|
IFF($Matiere=ELADIP BLEU|PLASTIQUES|
IFF($Matiere=ACIER DE CONSTUCTION|CONSTRUCTION|
IFF($Matiere=PROFIL BOSCH|CONSTRUCTION|
IFF($Matiere=ETIRE|CONSTRUCTION|
""))))))))))))))))))))))))))))))))))))))))))))))
et une seconde condition pour leur attribuer le code à 10 chiffres.
Je pense que ce sera plus facile à gérer si tu doit ajouter des matériaux …
IFF($Famille=ACIERS|7326909890|
IFF($Famille=ALUMINIUM|7616999099|
IFF($Famille=PLASTIQUES|3926909790|
IFF($Famille=CONSTRUCTION|7301200000|
"")))
=>Attention, je n’ai pas pu tester les conditions ci-dessus. Prudence.
Astuce : Ecrit les formules dans un tableur Excel avant de les reporter sous Smartproperties c’est plus simple comme cela et plus facile à modifier à l’avenir.
… En fouillant un peu, je suis tombé sur l’onglet « Personnalisé » dans l’éditeur de matériau et je me demande s’il n’est pas possible de créer une nouvelle propriété avec ton code à 10 chiffres directement affilié à la matiére…
=> Et pour les profilés,il est préférable d’intégrer la propriété directement dans le ficher *.SLDLFP
1 « J'aime »
Non pas de ; @Maclane
Pas facile a expliquer donc exemple avec 1, 2 , 3 condition.
IFF ($Condition=A|$Résultat=1|$Résultat=Autre)
IFF ($Condition=A|$Résultat=1|IFF ($Condition=B|$Résultat=1|$Résultat=Autre))
IFF ($Condition=A|$Résultat=1|IFF ($Condition=B|$Résultat=1|IFF
($Condition=A|$Résultat=1|$Résultat=Autre))
En gros tu part de la 1ère ligne que tu testes.
Ensuite tu la copie et tu la colle à chaque fois à la place de $Résultat=Autre
Et tu modifie la valeur de ta condition et du résultat (vrai)
Je sais pas convivial mais c’est comme cela que ça fonctionne!
Et mêm dans un tableur ça reste galère… 
Et bon courage, je m’étais bien tué à la tâche pour enquillé 15-20 conditions dans un autre exemple! 
2 « J'aime »
Okay je viens de comprendre, j’ai refais en prennant en compte vos conseils et ça marche impec, merci bien !
1 « J'aime »
… j’ai mis un petit moment pour interpréter cette phrase 
J’ai réécris l’ensemble des conditions tel que je les comprend dans mon message précédent.
Note : les retours à la ligne et les lignes vides n’existent que pour la compréhension…
Et regardant de plus près cela ressemble de plus en plus à du XML … me trompe-je?
Il ne me semble pas que Smartproperties puisse faire appel à ce type de fichier (les XML) mais c’est « facilement » faisable à partir d’un macro et de la lancer depuis Smartproperties et cela permet de créer un document plus facile à lires que les 20-25 conditions imbriquées.
2 « J'aime »
Oui c’est mieux écrit comme cela pour les mise à la ligne j’avais bien compris, @Maclane ! 
Pour le Xml, c’est bien possible par contre la seul possibilité en conditionnel via smartproperties est de l’écrire comme je l’ai expliqué (pas de fichier xml) ou via macro mais cela se complique pour les non affilié au vba.
Merci de clôturer le sujet si ton affaire est bien résolu.
2 « J'aime »