Files
2026-07-10 16:01:48 +02:00

100 lines
5.1 KiB
Markdown

---
name: BI-Import_donnees_eet
description: >-
Procedure Excel pour l'import mensuel des donnees EET (fournisseur) dans la table
BI.dbo.achat_fournisseur_eet. A utiliser des que l'utilisateur envoie l'extract mensuel
EET, ouvre le fichier "Import eet template", ou parle d'"integrer les donnees EET",
"import eet", "achat_fournisseur_eet", "Achat TD INGRAM", "decouper par mois", "preparer
le concat / la formule d'insert", ou d'ajouter la feuille du mois courant. Ce skill decrit
uniquement des manipulations dans Excel (mise en forme du tableau du mois + formule
CONCATENER a adapter) ; il ne genere pas de script.
---
# Integrer les donnees EET (import mensuel dans Excel)
## Contexte
Chaque mois, EET envoie un extract Excel de ses ventes : une colonne `Customer Name` puis une
colonne par mois (`2026M01`, `2026M02`, ...). Chaque envoi ajoute la colonne du mois qui vient
d'etre cloture. Le travail consiste, dans Excel, a preparer la feuille du nouveau mois et a
poser la formule d'insert SQL adaptee, puis a executer l'insert et verifier.
Fichier de travail (template qui contient la formule de reference et la liste des mois deja
importes) :
`T:\XEFI_SOFTWARE\Exploitation\INTERNE\EQUIPE SI\BI\WORKSPACE\CREATION\achat franchise tech ingram\Import eet template.xlsx`
Table de controle apres import : **Menu general achats > Achat TD INGRAM**.
Ce skill ne fait que des manipulations Excel. Ne pas ecrire de script : le but est de mettre en
forme un tableau pour le mois et d'inserer la formule adaptee au mois.
## Formule de reference
```
=CONCATENER("insert into BI.dbo.achat_fournisseur_eet (Customers,NetSellPrice,Quantity,party,BillingDocsDate,providers) values ('"&A5&"','"&B5&"',1,'"&A5&"','2026-01-01','eet')")
```
D'un mois a l'autre, **seule la date `BillingDocsDate` change** : c'est le 1er jour du mois
traite (`2026-06-01` pour juin, `2026-07-01` pour juillet, ...). `A5` = Customer Name,
`B5` = valeur du mois (NetSellPrice), `party` reprend `A5`, `providers` reste `'eet'`.
## Etapes dans Excel
1. **Importer l'extract dans `raw_data`.** Ouvrir le template ci-dessus. Coller le nouvel
extract EET dans la feuille `raw_data` (en remplacant le precedent), puis mettre la plage
**sous forme de tableau** : selectionner les donnees, *Insertion > Tableau* (ou Ctrl+L),
cocher "Mon tableau comporte des en-tetes".
2. **Reperer le dernier mois.** C'est la colonne mensuelle la plus a droite qui contient des
valeurs (le nouveau mois, ex `2026M06`). Verifier dans le suivi du template qu'il n'a pas
deja ete importe, puis ne travailler que sur cette colonne.
3. **Creer la feuille du mois.** Nouvelle feuille nommee en francais, sans accent :
`janvier, fevrier, mars, avril, mai, juin, juillet, aout, septembre, octobre, novembre,
decembre`.
4. **Remplir le tableau du mois.** Dans `raw_data`, filtrer la colonne du mois pour exclure les
cellules vides, puis reporter dans la feuille du mois :
- colonne A : `Customer Name` (uniquement les clients ayant une valeur ce mois-la) ;
- colonne B : la valeur du mois.
Ne garder aucune ligne vide.
5. **Poser la formule d'insert adaptee.** En C5 (1re ligne de donnees), reprendre la formule de
reference en changeant la date pour le 1er du mois traite, puis l'etirer jusqu'en bas.
Exemple pour juin :
```
=CONCATENER("insert into BI.dbo.achat_fournisseur_eet (Customers,NetSellPrice,Quantity,party,BillingDocsDate,providers) values ('"&A5&"','"&B5&"',1,'"&A5&"','2026-06-01','eet')")
```
6. **Faire l'insert et verifier.** Copier la colonne C (les inserts generes), les executer sur
SQL Server, puis controler le resultat via *Menu general achats > Achat TD INGRAM*. Noter le
mois comme importe dans le suivi du template.
## Points de vigilance (fiabilite du SQL)
Ces deux points cassent silencieusement les inserts ; les verifier avant d'executer.
- **Decimales en virgule.** En locale FR, `"&B5&"` transforme `25,51` en texte `25,51` (virgule),
ce qui n'est pas du SQL valide. Deux facons de securiser :
- s'assurer que la colonne B contient de vrais **nombres** (alignes a droite) et non du texte,
et remplacer `"&B5&"` par une version qui force le point :
`"&SUBSTITUE(B5;",";".")&"` (SUBSTITUE = SUBSTITUTE en anglais). Formule complete :
```
=CONCATENER("insert into BI.dbo.achat_fournisseur_eet (Customers,NetSellPrice,Quantity,party,BillingDocsDate,providers) values ('"&A5&"','"&SUBSTITUE(B5;",";".")&"',1,'"&A5&"','2026-06-01','eet')")
```
- si les valeurs arrivent en **texte** avec des espaces de milliers (`1 250,00`), retirer aussi
les espaces : `"&SUBSTITUE(SUBSTITUE(B5;" ";"");",";".")&"`.
- **Apostrophes dans les noms.** Un nom comme `O'Brien` casse la requete. Doubler l'apostrophe
avec `SUBSTITUE(A5;"'";"''")` a la place de `A5` dans la formule.
## A confirmer avec l'utilisateur en cas de doute
- Plusieurs colonnes mensuelles remplies : confirmer lequel est le mois a importer.
- Valeurs a zero : par defaut on les traite comme les autres ; a exclure seulement si l'utilisateur
le precise.
- `party` = Customer Name : c'est le format historique repris de la formule ; ne le signaler que
si l'utilisateur attend autre chose.