Création d'ordres de réparation DPAN (AS400)
Ce script Power Automate Desktop automatise la création d'ordres de réparation (OR) dans le logiciel AS400 pour la société DPAN. Il lit les données depuis un fichier Excel structuré et effectue les saisies dans AS400 via simulation de clavier et souris.
Vue d'ensemble
flowchart TD
A[Ouverture du fichier Excel] --> B[Activation de la feuille 'traitement']
B --> C[Saisie de la date du jour]
C --> D[Demande du nom de la feuille de données]
D --> E[Écriture du nom en B1 de 'traitement']
E --> F[Calcul de la première ligne/colonne libre]
F --> G{Boucle sur chaque colonne}
G --> H{Boucle sur chaque répétition}
H --> I[Clic AS400 + navigation clavier]
I --> J[Copie des 6 lignes Excel dans AS400]
J --> K[Validations et confirmations]
K --> H
H --> G
G --> L[Fermeture du fichier Excel]
1. Initialisation
Ouverture du fichier Excel
Le script ouvre un fichier Excel fixe en mode non visible (arrière-plan) :
C:\Users\a-roussel\Work folders\Documents\Pole développement\
Développement\Projet création logiciel ouverture OR par fichier excel\
5 - etude du 19012026\Etude du 19012026xlsx.xlsx
La feuille active est ensuite fixée sur traitement.
Date du jour
La date actuelle (format date seule) est récupérée automatiquement et proposée comme valeur par défaut dans la boîte de dialogue suivante.
Saisie du nom de la feuille de données
Une fenêtre de saisie demande à l'utilisateur le nom de la feuille de données (exemple : 19/01/2026).
Ce nom est écrit en cellule B1 de la feuille traitement, ce qui active les formules dynamiques qui référencent cette feuille.
2. Structure du fichier Excel
Le classeur Excel est composé de deux feuilles :
Feuille de données
Contient les informations brutes des ordres de réparation à créer. Chaque colonne représente un OR.
Les données doivent être disponibles à partir de la ligne 7 (les lignes 1 à 6 étant des en-têtes ou métadonnées).
Les colonnes utilisées par les formules de la feuille traitement sont :
| Colonne | Contenu |
|---|---|
| A | Référence / immatriculation |
| F | Informations complémentaires |
| H | Quantité ou référence pièce |
| K | Code pièce / désignation |
| L | Libellé complémentaire |
La feuille de données doit également contenir deux cellules de référence croisée :
=test!K7 (référence colonne K de la feuille 'test')
=test!L7 (référence colonne L de la feuille 'test')
Remplacer
testpar le nom réel de la feuille de données dans votre fichier.
Feuille traitement
C'est la feuille active utilisée par le script. Elle agrège et formate les données pour la saisie dans AS400.
Cellule B1 : nom de la feuille de données (saisi par l'utilisateur au démarrage).
Cellule B2 : doit également contenir le nom de la feuille de données.
Ligne 9 : contient le nombre de répétitions (nombre d'OR à créer) pour chaque colonne.
Formule principale (à étendre à partir de la ligne 3)
La formule suivante est à saisir en A3 et à étendre sur 5 colonnes et autant de lignes que nécessaire (par blocs de 8 lignes par OR) :
=SI(MOD(LIGNE()-LIGNE($A$3);8)=2;"QTE:1";
SI(MOD(LIGNE()-LIGNE($A$3);8)=6;
INDIRECT($B$1&"!H"&ENT((LIGNE()-LIGNE($A$3))/8)+7+COLONNE()-COLONNE($A$3));
SI(OU(MOD(LIGNE()-LIGNE($A$3);8)=3;
MOD(LIGNE()-LIGNE($A$3);8)=4;
MOD(LIGNE()-LIGNE($A$3);8)=7);"";
SI(MOD(LIGNE()-LIGNE($A$3);8)=5;
SI(OU(
INDIRECT($B$1&"!K"&ENT((LIGNE()-LIGNE($A$3))/8)+7+COLONNE()-COLONNE($A$3))="ORIGINE";
INDIRECT($B$1&"!K"&ENT((LIGNE()-LIGNE($A$3))/8)+7+COLONNE()-COLONNE($A$3))="Brain";
GAUCHE(INDIRECT($B$1&"!K"&ENT((LIGNE()-LIGNE($A$3))/8)+7+COLONNE()-COLONNE($A$3));4)="DEC-";
GAUCHE(INDIRECT($B$1&"!K"&ENT((LIGNE()-LIGNE($A$3))/8)+7+COLONNE()-COLONNE($A$3));4)="dec:");
INDIRECT($B$1&"!K"&ENT((LIGNE()-LIGNE($A$3))/8)+7+COLONNE()-COLONNE($A$3))
&" "&INDIRECT($B$1&"!L"&ENT((LIGNE()-LIGNE($A$3))/8)+7+COLONNE()-COLONNE($A$3));
"DEC-"&INDIRECT($B$1&"!K"&ENT((LIGNE()-LIGNE($A$3))/8)+7+COLONNE()-COLONNE($A$3))
&" "&INDIRECT($B$1&"!L"&ENT((LIGNE()-LIGNE($A$3))/8)+7+COLONNE()-COLONNE($A$3)));
INDIRECT($B$1&"!"
&CHOISIR(MOD(LIGNE()-LIGNE($A$3);8)+1;"A";"F";"K";"L";"K";"L";"K";"L")
&ENT((LIGNE()-LIGNE($A$3))/8)+7+COLONNE()-COLONNE($A$3))))))
Logique de la formule
Chaque OR occupe 8 lignes dans la feuille traitement. Le MOD(LIGNE()-LIGNE($A$3);8) détermine le rôle de chaque ligne dans le bloc :
| Position dans le bloc (MOD) | Valeur générée |
|---|---|
| 0 | Colonne A de la feuille de données (immatriculation/référence) |
| 1 | Colonne F |
| 2 | QTE:1 (fixe) |
| 3 | Vide |
| 4 | Vide |
| 5 | Code pièce : si la colonne K commence par DEC-, dec:, ou vaut ORIGINE/Brain → valeur brute ; sinon, préfixe DEC- est ajouté |
| 6 | Colonne H (référence quantité / pièce) |
| 7 | Vide |
3. Logique du script (boucles)
Boucle externe — colonnes Excel
Le script itère sur chaque colonne de la feuille traitement, jusqu'à la dernière colonne non vide (FirstFreeColumn).
Boucle interne — répétitions par colonne
Pour chaque colonne, le script lit la cellule en ligne 9 (repetitionor) qui indique le nombre d'OR à créer. Il répète alors les actions AS400 ce nombre de fois.
Actions AS400 pour chaque OR
Pour chaque itération, le script effectue dans AS400 :
| Étape | Action |
|---|---|
| 1 | Clic à la position (688, 364) dans AS400 |
| 2 | Frappe clavier [8][4] (navigation AS400) |
| 3 | Copie des 6 lignes de la colonne active (lignes 3 à 8) depuis Excel |
| 4 | Navigation dans AS400 : ↓↓ puis Ctrl+V |
| 5 | Attente 1 s puis validation Entrée × 3 |
| 6 | Attente 2 s puis navigation clavier complexe (déplacement curseur + A + retour) |
| 7 | Attente 1 s |
| 8 | Clic à (9, 56) — deux fois avec attente de 2 s |
| 9 | Frappe F12 F12 1 1 8 9 (séquence de confirmation AS400) |
| 10 | Attente 2 s |
| 11 | Clic à (527, 266) |
| 12 | Frappe 3 8 0 0 8 4 Entrée Entrée F6 ↓↓ |
Les coordonnées de clic (X, Y) sont relatives à l'écran et peuvent nécessiter un recalibrage si la résolution ou la position de la fenêtre AS400 change.
4. Prérequis et points d'attention
| Point | Détail |
|---|---|
| Résolution écran | Les coordonnées de clic sont fixes — AS400 doit être positionné exactement au même endroit sur l'écran |
Feuille traitement | Doit exister dans le classeur et contenir la formule à partir de A3 (étendue sur 5 colonnes) |
| Cellule B1 | Remplie automatiquement via la boîte de dialogue au démarrage |
| Cellule B2 | Doit contenir manuellement le nom de la feuille de données |
| Ligne 9 | Doit contenir le nombre de répétitions par colonne |
| Données source | À partir de la ligne 7 dans la feuille de données |
| Mode non-visible | Le fichier Excel s'ouvre en arrière-plan — ne pas interagir avec Excel pendant l'exécution |
5. Ressources
| Ressource | Description |
|---|---|
| Power Automate Desktop | Moteur d'exécution du script |
| AS400 (IBM iSeries) | Logiciel cible de saisie des ordres de réparation |
| Excel (fichier local) | Source de données et feuille de traitement |