Importer un BPU
Pour savoir ce dont vous disposez, ouvrez Paramètres → Modules : la liste des modules activés y figure. Les activations sont faites par l'équipe Stratt selon votre abonnement ; une demande d'extension passe par le support.
Un bordereau se saisit rarement ligne à ligne : il arrive en classeur, et il revient en classeur à chaque révision annuelle des prix. Deux chemins le font entrer dans Stratt, et ils ne servent pas le même cas.
| Chemin | Quand |
|---|---|
| Importer le bordereau | le bordereau est déjà négocié — reprise de l’existant |
| Reprendre les prix | les prix reviennent d’un envoi fait depuis l’outil |
Le premier est décrit ci-dessous ; le second, qui repart du modèle vierge, est traité en fin de page.
Le fichier attendu
Le classeur est lu au format .xlsx, et seule sa première feuille est
analysée. La taille est bornée à 20 Mio : un BPU de fournitures atteint
couramment quinze mille lignes, au-delà on est face à autre chose qu’un
bordereau.
Aucune mise en forme n’est exigée. En particulier :
- la ligne d’en-tête n’a pas à être la première. Les bordereaux commencent souvent par un cartouche de plusieurs lignes, et Stratt cherche parmi les premières rangées celle qui reconnaît le plus d’intitulés de colonnes ;
- l’ordre des colonnes est libre, et les colonnes inutiles peuvent rester ;
- les rangées entièrement vides sont ignorées — elles ne comptent ni comme importées ni comme rejetées.
Les trois étapes
Fichier
Le classeur est déposé, lu, et rien n’est écrit. Stratt rend le nombre de lignes détectées, la ligne d’en-tête retenue et une proposition d’association pour chaque colonne.
Colonnes
L’étape qui évite les accidents. Chaque champ de Stratt est mis en face d’une
colonne du fichier, désignée par sa lettre de tableur et son intitulé — D · Désignation — pour qu’on puisse comparer avec le fichier ouvert à côté. Un
aperçu des dix premières lignes montre ce que chaque association produit : c’est
là qu’on voit qu’on a pris la colonne des prix TTC pour celle des prix HT.
La proposition automatique est un point de départ, jamais une décision. La détection sur intitulés ne peut pas être fiable sur des bordereaux dont chacun nomme ses colonnes à sa façon.
Rapport
Les lignes valides sont créées. Le rapport annonce « N ligne(s) importée(s) sur M » et liste les lignes rejetées, avec leur numéro dans le fichier et le motif du rejet.
Les colonnes
Deux colonnes seulement sont obligatoires. Le bouton d’import reste inactif tant qu’elles ne sont pas associées.
| Champ | Obligatoire | Si la colonne est absente |
|---|---|---|
| N° de lot | le lot reste vide | |
| Intitulé du lot | ||
| Référence de la ligne | ||
| Désignation | oui | |
| Unité | ||
| Prix unitaire HT | oui | |
| Taux de TVA | 20 % si absent | |
| Date de valeur | date de début du marché si absente | |
| Code nomenclature | relie la ligne à la famille d’achat |
Ce que la détection reconnaît
Les intitulés sont comparés sans tenir compte de la casse, des accents ni de la ponctuation : « Prix unitaire H.T. », « PRIX UNITAIRE HT » et « prix_unitaire_ht » désignent la même colonne. Quelques formulations courantes sont rattachées d’office au bon champ — « PU HT », « Libellé », « Prestation », « N° lot », « Taux de TVA », « Code famille »…
La détection privilégie l’intitulé le plus précis : « Code nomenclature » n’est pas confondu avec un simple « Code ».
Elle peut néanmoins hésiter quand deux colonnes prétendent au même champ — un bordereau portant à la fois un prix HT et un prix TTC, par exemple. Elle tranche alors seule, et c’est précisément ce que l’étape Colonnes sert à démentir : relisez-y l’association proposée avant de confirmer, surtout sur les prix. Une colonne mal associée ne produit pas d’erreur, elle produit un bordereau faux.
Les montants et les dates
La lecture d’un prix accepte les conventions française et anglo-saxonne, mélangées au besoin dans un même fichier :
| Cellule | Valeur lue |
|---|---|
12,50 | 12,50 |
12.50 | 12,50 |
1 234,56 | 1 234,56 |
1,234.56 | 1 234,56 |
85 € | 85 |
Une date est acceptée en AAAA-MM-JJ, JJ/MM/AAAA, JJ-MM-AAAA, et sous la
forme du numéro de série des tableurs — ce nombre à cinq chiffres qu’on obtient
en recopiant une cellule de date dans une colonne au format texte.
Le code de nomenclature
C’est la colonne qui fait apparaître l’accord-cadre dans l’encart « Prix déjà négociés sur cette famille » d’une fiche de nomenclature, et qui rend utilisable la recherche par famille d’achat. Elle vaut le détour, même quand elle demande un travail de reprise.
Les codes sont comparés sur leur forme réduite aux lettres et aux chiffres :
60.12, 6012 et 60-12 sont le même code. Deux précisions :
- un code inconnu ne rejette pas la ligne. Le prix compte davantage que le rattachement, qui se corrige après coup ;
- un code porté par deux familles est ignoré plutôt qu’arbitré : rattacher à la mauvaise famille fausserait les montants agrégés qui servent au calcul des seuils de procédure.
Les lignes rejetées
Une ligne est refusée pour l’un de ces motifs, et pour aucun autre :
| Motif | Cause |
|---|---|
| désignation vide | la cellule de désignation est vide |
| prix unitaire HT manquant | la cellule de prix est vide |
| prix unitaire HT illisible | la cellule ne contient pas un nombre lisible |
| prix unitaire HT négatif | le prix lu est inférieur à zéro |
Tout le reste passe. Un taux de TVA illisible ne rejette pas la ligne : 20 % est appliqué, parce que perdre un bordereau entier pour une cellule de TVA mal saisie serait disproportionné. Une date de valeur illisible ne le rejette pas non plus : la date de début du marché est appliquée.
Le succès partiel est voulu. Contrairement à la saisie par lot, qui est atomique, l’import accepte d’écrire les lignes valides et de rendre la liste des autres. Sur un bordereau de cinq mille lignes, refuser l’ensemble parce que trois cellules de prix sont vides obligerait à corriger le classeur à l’aveugle. Les numéros du rapport renvoient au fichier d’origine : on corrige ces lignes, et on réimporte un classeur qui ne contient qu’elles.
Réimporter : ce qu’il faut savoir avant
L’import n’écrase rien et ne déduplique rien. Chaque passage ajoute ses lignes au bordereau. Importer deux fois le même classeur produit deux exemplaires de chaque prestation, et la Recherche BPU les montrera tous les deux, au même prix et à la même date. Rien ne le signale au moment de l’import.
La conséquence pratique est qu’une révision annuelle de prix ne se traite pas en réimportant par-dessus. Deux manières de faire :
- désactiver les lignes de l’année précédente — elles sortent du catalogue tout en restant citées par les estimations et la consommation — puis importer le nouveau bordereau ;
- ou n’importer que les lignes nouvelles, et corriger les prix existants à la main ou par l’export.
L’export du bordereau aide ici : son classeur porte exactement les colonnes que la détection d’import reconnaît, plus une colonne Consommation (HT) par ligne. Un export corrigé dans un tableur se mappe donc tout seul au réimport — en gardant en tête qu’il ajoutera les lignes plutôt que de remplacer celles d’origine.
Enregistrer le mappage
Un BPU se réimporte à chaque révision des prix, avec la même structure de colonnes. Refaire l’association de douze colonnes à chaque livraison du même fournisseur est le genre de corvée qui fait abandonner un outil.
À l’étape Colonnes, un champ permet donc de nommer le mappage et de l’enregistrer une fois l’association complète. Le mappage retient l’association colonne par colonne et la ligne d’en-tête retenue. Il est rattaché au titulaire de l’accord-cadre, ce qui permet de le proposer d’emblée au prochain import d’un marché ayant le même titulaire : l’étape Fichier annonce alors combien de mappages existent, et l’étape Colonnes les présente en boutons, à appliquer d’un clic.
Les mappages sont propres à l’organisation.
Reprendre les prix d’un envoi
Quand le bordereau vierge a été produit par Stratt, envoyé, puis déposé complété sur l’envoi, le bouton Reprendre les prix lit le classeur et crée les lignes chiffrées du bordereau à partir du modèle et des prix reçus. L’envoi passe alors à l’étape Prix saisis, et l’opération est consignée dans son historique.
Ce chemin ne demande aucun mappage, parce qu’il ne devine rien. Le bordereau vierge exporté porte trois colonnes techniques masquées, dont un identifiant de ligne, et c’est sur lui que le rapprochement se fait. Rapprocher sur la désignation reviendrait à rapprocher sur du texte qu’un tiers peut reformuler, réordonner ou traduire : un « m² » devenu « m2 » suffirait à perdre une ligne.
D’où le comportement en cas de problème :
- si la colonne technique a disparu — une entreprise qui recompose le fichier au lieu de remplir celui qu’on lui a envoyé — la reprise est refusée, avec un message qui dit de renvoyer le bordereau vierge. Deviner à partir des désignations produirait des prix attribués aux mauvaises prestations, et un bordereau faux est pire que pas de bordereau ;
- une ligne dont l’identifiant ne provient pas du modèle envoyé est rejetée, le motif évoquant une version différente ;
- une prestation laissée sans prix n’est pas une erreur : une entreprise a le droit de ne pas répondre sur tout le bordereau. Elle est comptée comme ignorée, pour que le total reste rapprochable ;
- un prix illisible ou négatif rejette la ligne, comme à l’import de classeur.
Si le bordereau porte déjà des lignes actives, la reprise est refusée et propose de remplacer : les lignes en place sont alors désactivées — jamais supprimées, puisque les estimations et les consommations les citent — avant que les nouvelles soient créées. Sans ce garde-fou, reprendre deux offres concurrentes empilerait deux prix pour la même prestation, et la Recherche BPU en montrerait un au hasard.
La date de valeur des prix repris est celle de la date limite de l’envoi, à défaut celle de sa création. Réimporter le même fichier six mois plus tard ne doit pas rajeunir le prix.
Permissions requises
procurement.write pour toutes les opérations de cette page — aperçu,
confirmation, enregistrement d’un mappage, reprise des prix d’un envoi. La
consultation d’un bordereau et son export relèvent de procurement.read.
Limites connues
- Aucune déduplication. Voir l’encart ci-dessus : c’est la première cause d’un bordereau en double.
- Pas d’aperçu comparatif. L’import de BPU montre le contenu du fichier, pas le différentiel avec le bordereau existant — contrairement à l’import de nomenclature, qui annonce ce qui serait créé, modifié ou supprimé.
- Le sélecteur de fichier est plus permissif que le lecteur. Il laisse
choisir d’autres extensions de tableur, mais seul le
.xlsxest analysé : un.xlsancien, un.csvou un.odsproduit une erreur de lecture au dépôt. Un « Enregistrer sous… » au format.xlsxrègle le cas. - Un seul onglet lu. Un bordereau réparti sur plusieurs feuilles doit être importé feuille par feuille, en déplaçant chaque fois celle qui compte en première position.
- Le fichier n’est pas conservé entre l’aperçu et la confirmation : le classeur est renvoyé à la seconde étape. Quitter la fenêtre en cours de route oblige à redéposer le fichier.
- Pas de registre des imports propre au module : le rapport s’affiche une fois, et n’est pas rejouable après fermeture de la fenêtre.