100 lines
5.1 KiB
Markdown
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.
|