Création d’une matrice
Entête de matrice
Une matrice manuelle se compose d’un entête qui définit le cadre d’utilisation de la matrice ainsi que les contraintes d’entrées de la matrice à savoir les variables entrant en jeu dans la condition et de détails où sont répertoriés tous les cas possibles.
Ces matrices sont répertoriées dans la liste paramétrée IGeEntMat.
Depuis cette liste, les actions « Création », « Modification », « Duplication » et « Détail » permettent de maintenir les informations liées à l’entête de la matrice, la PSD IGeEntMat est alors lancée. Cette PSD est composée des champs suivants :
![image-20240529-123045.png](../__attachments/89612515/image-20240529-123045.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
Référence de la matrice | Les caractères espace, point , ! sont interdits |
Désignation | Désignation de la matrice |
Cadre d’utilisation Obligatoire | Choisir un cadre d’utilisation parmi les valeurs suivantes : CoefTh : Coefficient Thermique ; CorCar : Corr. Caractéristique ; CorMod : Corr. Modele ; CorVar : Corr. Variable ; Des : Gestion Objet Dessin librairie ; EIACde : Int. Cde .EIA , LOG : Mat. Test Logique ; LogCleSup : Test Clé Sup. ; LogDat : Test par Date ; Lst : Liste Valeur ; Maj : Mat. de Maj , MajCleSup : Maj Clé Sup ; MajDat : Maj par Date ; PVDat : P.V. par Date ; Tar : Mat. Cal Tarif ; TarCleSup : Tarif Cle Sup ; TarDat : Mat Tarif / Date ; Val : Mat. de Valeur ; ValCleSup : Val Cle Sup ; ValDat : Mat. Val Date |
Type d’utilisation | Obligatoire. Sous-catégorie liée au cadre d’utilisation |
Famille et sous-famille) | |
Type d’acces S/M | (Obligatoire, valeur défaut SIMPLE) Modifiable pour les Matrices de Type MAJ VBA ou IT : permet de prendre en compte, si le type accès est multiple, tous les détails de la matrice répondants aux contraintes d’entrée. Dans le cas d’une condition accès simple seul le premier élément de détail répondant aux critères d’entrée sera sélectionné |
Domaine Utilisation | Déterminer automatiquement en fonction des valeurs saisies sur l’entête et/ou le détail de la matrice. Valeur Possible VBA, VBP ou VSD. Cette valeur détermine le contexte d’utilisation de la matrice scénario commerciaux ou nomenclature : domaine VBA ou VBP ou bien scénario PSD domaine VSD ou VBP. Cette valeur permet d’effectuer des contrôles de cohérence de données afin d’éviter de « mélanger » dans les matrices des VBA et VSD. Les matrices de domaines VBP peuvent être exécutées à la fois dans un scénario commercial ou Scénario PSD. |
Exécution Hors Config ? | Disponible depuis la version PCD 1.3.30. Permet pour les matrices de type valeur d’exécuter la matrice dans un cadre hors configuration ( GC ou DT), par exemple lors d’un calcul de prix d’article sur mesure ( Requete APC) et dans ce cas de figure de pouvoir spécifier comme contrainte d’entrée de la matrice , des variables entités accessibles depuis le domaine d’exécution de la matrice. Dans le cas d’une matrice de valeur exécutée pour le calcul du prix d’un article sur mesure, les variables entités interprétables par les matrices utilisées dans l’arbre de calcul du prix de la ligne d’OA sont : SAS-VAS-VAR -SAF - VAF -SDL - VDL - SDE - VDE de l’article lié à la ligne d’appro en cours , SFL - VFL de la ligne d’OA en cours , SFE - VFE de l’OA en cours , SFF - VFF lié au fournisseur de l’OA en cours. |
Condition Supplémentaire | L’activation de ce statut permet pour les matrices qui ne sont pas gérées par date ou avec des clés supplémentaires de rajouter pour chaque détail de la matrice une condition supplémentaire testée après validation des contraintes. |
Nombre d’entrées type caractère | Nombre de variables ou formules de type caractère ou logique entrant en jeu dans la construction de la matrice (5 entrées au maximum) |
Type Entrée i | - VBA : l’entrée est une variable de base - FOR : l’entrée est une formule (voir définition des formules) - LCD … - ARG : entrée dynamique donnée par la valeur d’un argument passé lors de l’appel de la matrice |
Référence Entrée i | VBA, FOR ou référence liée au type entrée |
Accès Entrée i | Accès par rapport à l’entrée saisie (=, <>, = ou *) |
Ajout Elément * | Lorsque que l’un des opérateurs logiques des contraintes caractères vaut ('*' Ou Variable définie en entrée), faut-il prendre en compte les éléments * uniquement lorsque aucun élément n’est trouvé avec la valeur de la contrainte, ou prendre en compte ces éléments systématiquement et donc les rajouter aux éléments trouvés avec la valeur de la contrainte. |
Nombre d’entrées type numérique | Nombre de variables ou formules de type numérique entrant en jeu dans la construction de la matrice (5 entrées au maximum) |
Type Entrée j | - VBA : l’entrée est une variable de base - FOR : l’entrée est une formule (voir définition des formules) |
Référence Entrée j | Référence de la VBA ou de la formule |
Accès Entrée j | Accès par rapport à l’entrée saisie (=, ≥, ≤, > ou <) |
Commentaire |
Opérateurs Logique :
Les opérateurs logiques sur les champs caractères peuvent être = , <> ou = ( '*' Ou Variable définie en entrée ).
Ce dernier opérateur permet d’indiquer que la recherche sur le détail de la matrice doit être effectuée dans un premier temps avec la valeur de la contrainte, et lorsque rien n’est trouvé pour cette valeur continuer la recherche sur la valeur * qui doit être interprétée comme « rien n’a été trouvé ».
Cas particulier du champ logique « Ajout élément * » (entête de matrice)
Ce champ n’est accessible que pour les matrices a accès Multiple et n’est interprété que lorsque un des opérateurs logiques des contraintes caractères vaut '*' ou la variable définie en entrée.
La valeur de ce champ permet d’interpréter la valeur * du détail d’une matrice de deux façons différentes :
Ajout * vaut NON :
La valeur * n’est prise en compte que si rien n’a été trouvé pour la valeur de la contrainte correspondante. Le * est alors interprété comme un Sinon : rien n’a été trouvé avec la valeur de la contrainte, alors on prend en compte les valeurs *
Ajout * vaut OUI :
Les éléments avec la valeur * sont toujours pris en compte, le * est considéré comme valeur défaut sur lesquelles viennent se rajouter les éléments correspondant à la valeur de la contrainte. Le * est alors interprété comme un Toujours : les éléments correspondants à la valeur de la contrainte vont permettent de gérer la particularité liée à cette valeur, le cas de « base » étant géré par la valeur *.
Soit la matrice d’aide suivante avec une seule contrainte d’entrée :
Contrainte | Référence valeur liste | Désignation valeur liste |
OF | Ref1 | Désignation 1 |
OF | Ref2 | Désignation 2 |
OF | Ref3 | Désignation 3 |
OF | Ref4 | Désignation 4 |
OB | Ref5 | Désignation 5 |
OB | Ref6 | Désignation 6 |
* | Ref7 | Désignation 7 |
* | Ref8 | Désignation 8 |
Contrainte = « OF »
a. « ajout élément * » non coché
Référence valeur liste | Désignation valeur liste |
Ref1 | Désignation 1 |
Ref2 | Désignation 2 |
Ref3 | Désignation 3 |
Ref4 | Désignation 4 |
b. « ajout élément * » coché
Référence valeur liste | Désignation valeur liste |
Ref1 | Désignation 1 |
Ref2 | Désignation 2 |
Ref3 | Désignation 3 |
Ref4 | Désignation 4 |
Ref7 | Désignation 7 |
Ref8 | Désignation 8 |
Contrainte = « CHC »
Dans ce cas, le résultat est le même que le flag « ajout élément * » soit coché ou non
a. « ajout élément * » non coché
Référence valeur liste | Désignation valeur liste |
Ref7 | Désignation 7 |
Ref8 | Désignation 8 |
b. « ajout élément * » coché
Référence valeur liste | Désignation valeur liste |
Ref7 | Désignation 7 |
Ref8 | Désignation 8 |
En résumé,
Quand le logique « ajout élément * » n’est pas coché (a), la condition sur la contrainte d’entrée est interprétée comme un « (SI) on prend les conditions strictement vraies SINON on prend les conditions vraies avec « * » »
Quand le logique « ajout élément * » est coché (b), on prend les conditions strictement vraies ET les conditions vraies avec « * »
Sorties d’une Matrice
Suite à la création de l’entête, il est nécessaire de définir les sorties de la matrice : qu’est-ce que la matrice doit restituer comme informations ?
En fonction du cadre d’utilisation et du type d’utilisation de la matrice, les sorties peuvent être prédéfinies (valeurs de sorties imposées mais pouvant être complétées), ou bien à définir totalement par l’utilisateur. Ainsi une matrice ayant vocation à qualifier un lien générique (cadre d’utilisation MAJ et type d’utilisation INoExiLie) sera prédéfinie de la façon suivante :
La nature des sorties des matrices est directement liée au cadre d’utilisation, au domaine d’utilisation et au type d’utilisation.
Il n’est pas possible de mettre à jour une VSD si le domaine d’utilisation de la matrice est VBA et inversement. De même il n’est pas possible de mettre à jour une clé d’affichage VBA (affichée, saisie ou masquée) si la matrice sert à créer des IT pointeurs, cela n’a pas de sens.
Les différents types de sorties sont les suivantes :
VBA : mise à jour de la valeur d’une VBA
VBP : mise à jour de la valeur d’une VBP
VSD : mise à jour de la valeur d’une VSD
CLE : mise à jour des attributs d’affichage (Affichée, Saisie, Masquée) d’une VBA ou d’une VSD ou des VBA ou VSD liées aux clés d’affichage 1, 2 ou 3 mis à jour.
VAL : Champ de sortie d’une matrice de valeur. La recherche sur la matrice s’effectue par une formule liée au champ VAL
ARG : mise à jour d‘une valeur définie par la valeur de l’argument passé à la matrice
D’une manière générale, lorsque le domaine d’utilisation est :
VBA : les sorties de la matrice peuvent être : VBA (Mise à jour de VBA), VBP (Mise à jour de VBP), CLE (gestion attribut d’affichage Affichée, saisie, masquée)
VSD : les sorties de la matrice peuvent être : VSD (Mise à jour de VSD), VBP (Mise à jour de VBP), CLE (gestion attribut d’affichage Affichée, saisie, masquée)
Lorsque le cadre d’utilisation est VAL (matrice de valeur) les sorties peuvent être Val ou VBP.
Remarque :
Les sorties d’une matrice (prédéfinie ou pas) peuvent toujours être complétées par des VBP.
Les différentes sorties d’une matrice sont ordonnées à partir d’un N° d’ordre. Les mises à jour seront donc réalisées selon l’ordre défini. Il est ainsi possible d’exploiter la valeur d’une VBA d’un ordre inférieur à celui en cours.
Suite à la création de l’entête d’une matrice, l’outil de définition des sorties d’une matrice est lancé automatiquement. Cet outil peut être lancé manuellement depuis la liste des matrices (Action Def Sorties Matrice MAJ-F11)
![]() | Dans cet exemple : La clé1 d’affichage BVR sera d’abord mis à jour, puis la VBA I_VR puis la VBA s_coffre_hauteur et enfin la VBP caractéristique1 |
Détail Matrice
Le tableur de maintenance du détail de la matrice se décompose en deux parties, côté gauche (orange) la valeur des différentes contraintes d’entrée, côté droit (jaune) la valeur des sorties correspondantes.
![](../__attachments/89612515/att_23_for_373719138.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
Un contrôle de type warning sera effectué suivant la valeur logique du paramètre (Commande / MotScen / CtrMatrice) pour chacune des valeurs des VBA liées à une ou plusieurs listes de valeurs. Ce Warning permet de vérifier les erreurs de saisies éventuelles.
Pour les VBA de type caractère, les saisies ne doivent pas être encadrées par des côtes. Toute saisie de type formule (utilisant une VBA, une formule, une matrice, une constante globale) doit être précédée du caractère =
Gestion de conditions supplémentaires.
Une condition supplémentaire pourra être définie pour chaque détail des matrices pour lesquelles le statut condition supplémentaire est activé. Cette condition sera testée uniquement pour les enregistrements répondant aux contraintes valides de la matrice.
![](../__attachments/89612515/att_20_for_373719138.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
Cette condition supplémentaire ne peut être activée que pour les matrices qui ne sont pas gérées par dates ou par clés supplémentaires.
Remarques :
Si aucune valeur n’est saisie la cellule sera considérée comme non définie. Pour initialiser une VBA de type caractère à vide, saisir la valeur = ‘’.
Les valeurs saisies dans le détail des contraintes d’entrée d’une matrice ne peuvent pas être des valeurs à interpréter dynamiquement de type Formule, VBA ou VBP ; ces valeurs doivent être impérativement des constantes.
Pour les matrices gérées par date ou par clés supplémentaires, l’accès au détail de la matrice doit être précédé du choix de la période ou/et des clés supplémentaires.
![](../__attachments/89612515/att_22_for_373719138.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
La mise à jour de VBA en fonction de la valeur d’autres VBA. (exemple d’utilisation MAJ E/S pour les VBA d’un scénario)
Prenons pour exemple, la mise jour d’une VBA Isolation Totale et d’une VBA Nb de Zone qui dépendent de la matière et du type de fenêtre.
Contrainte1 : Matière | Contrainte 2 : Type fenêtre | Sortie Maj Isolation | Sortie MAJ Nb Zone |
Alu | FE2 | 90 | 3 |
Alu | FE3 | 90 | 3 |
PVC | FE2 | 100 | 2 |
PVC | FE3 | 100 | 2 |
Pour chacun de ces deux types de matrices, les valeurs de sorties peuvent être d’une part définie en fonction d’une période (date début, date fin) et d’autre part en fonction d’une période et de clés supplémentaires permettant la gestion de cas particulier (recherche avec clé, si non trouvé recherche sans les clés).
Il existe donc 6 types de matrices définies par un cadre d ‘utilisation :
MAJ : matrice permettant la gestion de mises à jour en sortie de matrice. Le nombre et la nature des Maj sont à paramétrer par matrice.
Contrainte1 : Matière | Contrainte 2 : Type fenêtre | Sortie Maj Isolation | Sortie MAJ Nb Zone |
Alu | FE2 | 90 | 3 |
Alu | FE3 | 90 | 3 |
PVC | FE2 | 100 | 2 |
PVC | FE3 | 100 | 2 |
MajDat : matrice permettant la gestion de mises à jour en sortie de matrice en fonction d’une période référence.
Entrée 1 Matière | Entrée 2 Type Fen | Date Début | Date Fin | Sortie Maj Isolation | Sortie MAJ Nb Zone |
Alu | FE2 | 01/01/2008 | 31/12/2008 | 90 | 3 |
Alu | FE3 | 01/01/2008 | 31/12/2008 | 90 | 3 |
PVC | FE2 | 01/01/2008 | 31/12/2008 | 100 | 2 |
PVC | FE3 | 01/01/2008 | 31/12/2008 | 100 | 2 |
Alu | FE2 | 01/01/2009 | 31/12/2009 | 100 | 3 |
Alu | FE3 | 01/01/2009 | 31/12/2009 | 100 | 3 |
PVC | FE2 | 01/01/2009 | 31/12/2009 | 100 | 2 |
PVC | FE3 | 01/01/2009 | 31/12/2009 | 100 | 2 |
MajCleSup : matrice permettant la gestion de mises à jour en sortie en fonction d’une période et de deux clés supplémentaires définies par les VBA.IGeCleSup1 et VBA.IGeCleSup2 alimentées respectivement par les champs SDE.CliResRef et SDE.CliGenRef. La recherche est effectuée en prenant en compte les clés supplémentaires et la date de référence, si rien n’est trouvé une nouvelle recherche est effectuée uniquement sans les clés.
Entrée 1 Matière | Entrée 2 Type Fen | Date Début | Date Fin | CléSup1 Réseau | CléSup2 Client | Sortie Maj Isolation | Sortie MAJ Nb Zone |
Alu | FE2 | 01/01/2008 | 31/12/2008 | 90 | 3 | ||
Alu | FE3 | 01/01/2008 | 31/12/2008 | 90 | 3 | ||
PVC | FE2 | 01/01/2008 | 31/12/2008 | 100 | 2 | ||
PVC | FE3 | 01/01/2008 | 31/12/2008 | 100 | 2 | ||
Alu | FE2 | 01/01/2009 | 31/12/2009 | 100 | 3 | ||
Alu | FE3 | 01/01/2009 | 31/12/2009 | 100 | 3 | ||
PVC | FE2 | 01/01/2009 | 31/12/2009 | 100 | 2 | ||
PVC | FE3 | 01/01/2009 | 31/12/2009 | 100 | 2 | ||
Alu | FE2 | 01/01/2009 | 31/12/2009 | GD | 0001 | 90 | 3 |
Alu | FE3 | 01/01/2009 | 31/12/2009 | GD | 0001 | 90 | 3 |
Dans cet exemple le client GD/0001 gardera une isolation de 90 du 01/01/2009 au 31/12/2009.
Enchaînement de matrice
Le champ Enchainement, uniquement accessible pour les matrices de type MAJ, permet de lancer une autre matrice de mise à jour suite aux mises à jour effectuées par la matrice encours. Cette option d’enchaînement permet par exemple de compléter des MAJ pour un cas particulier sans multiplier le nombre de tests.
Exemple d’utilisation :
En sortie d’une Zone VBA.XXX un certain nombre de mises à jour sur VBA doivent être effectuées de la manière suivante :
La hauteur est initialisée en fonction de la VBA.famille et de la VBA.modèle et cela de façon systématique. Mais si le modèle est ALU et uniquement ALU, je dois faire une mise à jour sur la largeur et cela en fonction du fait qu’il y ait un BVR et suivant le type du BVR. Si le type BVR est sous maçonnerie et si la commande de ce BVR est électrique il faut alors initialiser la VBA.Moteur et si la commande est manuelle initialisation de la VBA.Percagecoffre.
SI le type BVR n’est pas sous maçonnerie mais externe Init VBA.flasque Maconnerie qui dépend du type de tablier.
![](../__attachments/89612515/image-20230921-133159.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
Matrice Hauteur
Entree : Modele | Entree Famille | Sortie : Hauteur | Enchainement |
FE | PVC | FOR.CalHauteurFE | |
CHC | PVC | FOR.CalHauteurCHC | |
FE | ALU | FOR.CalHauteurFE | MAT.Largeur |
CHC | ALU | FOR.CalHauteurCHC |
Matrice Largeur
Entree : Type BVR | Sortie : Largeur | Enchainement |
Sous Maconnerie | FOR.CalLargSousMac | MAT.Percage |
Externe | FOR.CalExterne | MAT.Flasque |
Interne | FOR.CalInterne |
Matrice Flasque
Entree : Type Tablier | Sortie : Flasque | Enchainement |
PVC | PVc34X | |
ALU | ALU23Y |
Matrice Perçage
Entrée : Type Cde | Sortie : Puissance Moteur | Sortie : perçage tringle | Enchainement |
Manuelle | FOR.CalTringle | ||
Electrique | FOR.CalPuissance | MAT.ChoixMoteur… |