PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → code trop longtn quelqu'un peut me raccourcir
code trop longtn quelqu'un peut me raccourcir
Débuté par Stephane Vital OHOU, 06 juin 2026 22:14 - 5 réponses
Membre enregistré
159 messages
Posté le 06 juin 2026 - 22:14
Bonjour,
pardon, quelqu'un peut me raccourcir ce code :

FichierXLS est une chaîne
IdFichierXLS est un entier
NbLigne est un entier
i est un entier

FichierXLS = fSélecteur("", "", "Sélectionnez un fichier...", "Tous" + TAB + "*.*", "xls", fselMulti)
SI IdFichierXLS <> -1 ALORS
POUR TOUTE CHAÎNE Unfichier DE FichierXLS SÉPARÉE PAR RC
IdFichierXLS = xlsOuvre(Unfichier)
SI IdFichierXLS <> -1 ALORS
NbLigne = xlsNbLigne(IdFichierXLS)
// Parcours des lignes (en ignorant les en-têtes éventuels avec i = 2)
POUR i = 2 À NbLigne
SI xlsDonnée(IdFichierXLS, i, 1) <> "" ALORS
// Récupération des données selon le numéro de colonne
BEPCBACETS.BEPC_DREN = xlsDonnée(IdFichierXLS, i, 2)
BEPCBACETS.BEPC_DDEN = xlsDonnée(IdFichierXLS, i, 3)
BEPCBACETS.BEPC_ANNEE = xlsDonnée(IdFichierXLS, i, 4)
BEPCBACETS.BEPC_ETS = xlsDonnée(IdFichierXLS, i, 5)
BEPCBACETS.BEPC_STAT = xlsDonnée(IdFichierXLS, i, 6)
BEPCBACETS.BEPC1 = xlsDonnée(IdFichierXLS, i, 7)
BEPCBACETS.BEPC2 = xlsDonnée(IdFichierXLS, i, 8)
BEPCBACETS.BEPC3 = xlsDonnée(IdFichierXLS, i, 9)
BEPCBACETS.BEPC4 = xlsDonnée(IdFichierXLS, i, 10)
BEPCBACETS.BEPC5 = xlsDonnée(IdFichierXLS, i, 11)
BEPCBACETS.BEPC6 = xlsDonnée(IdFichierXLS, i, 12)
BEPCBACETS.BEPC7 = xlsDonnée(IdFichierXLS, i, 13)
BEPCBACETS.BEPC8 = xlsDonnée(IdFichierXLS, i, 14)
BEPCBACETS.BAC_A1_1 = xlsDonnée(IdFichierXLS, i, 15)
BEPCBACETS.BAC_A1_2 = xlsDonnée(IdFichierXLS, i, 16)
BEPCBACETS.BAC_A1_3 = xlsDonnée(IdFichierXLS, i, 17)
BEPCBACETS.BAC_A1_4 = xlsDonnée(IdFichierXLS, i, 18)
BEPCBACETS.BAC_A1_5 = xlsDonnée(IdFichierXLS, i, 19)
BEPCBACETS.BAC_A1_6 = xlsDonnée(IdFichierXLS, i, 20)
BEPCBACETS.BAC_A1_7 = xlsDonnée(IdFichierXLS, i, 21)
BEPCBACETS.BAC_A1_8 = xlsDonnée(IdFichierXLS, i, 22)
BEPCBACETS.BAC_A2_1 = xlsDonnée(IdFichierXLS, i, 23)
BEPCBACETS.BAC_A2_2 = xlsDonnée(IdFichierXLS, i, 24)
BEPCBACETS.BAC_A2_3 = xlsDonnée(IdFichierXLS, i, 25)
BEPCBACETS.BAC_A2_4 = xlsDonnée(IdFichierXLS, i, 26)
BEPCBACETS.BAC_A2_5 = xlsDonnée(IdFichierXLS, i, 27)
BEPCBACETS.BAC_A2_6 = xlsDonnée(IdFichierXLS, i, 28)
BEPCBACETS.BAC_A2_7 = xlsDonnée(IdFichierXLS, i, 29)
BEPCBACETS.BAC_A2_8 = xlsDonnée(IdFichierXLS, i, 30)
BEPCBACETS.BAC_C1 = xlsDonnée(IdFichierXLS, i, 31)
BEPCBACETS.BAC_C2 = xlsDonnée(IdFichierXLS, i, 32)
BEPCBACETS.BAC_C3 = xlsDonnée(IdFichierXLS, i, 33)
BEPCBACETS.BAC_C4 = xlsDonnée(IdFichierXLS, i, 34)
BEPCBACETS.BAC_C5 = xlsDonnée(IdFichierXLS, i, 35)
BEPCBACETS.BAC_C6 = xlsDonnée(IdFichierXLS, i, 36)
BEPCBACETS.BAC_C7 = xlsDonnée(IdFichierXLS, i, 37)
BEPCBACETS.BAC_C8 = xlsDonnée(IdFichierXLS, i, 38)
BEPCBACETS.BAC_D1 = xlsDonnée(IdFichierXLS, i, 39)
BEPCBACETS.BAC_D2 = xlsDonnée(IdFichierXLS, i, 40)
BEPCBACETS.BAC_D3 = xlsDonnée(IdFichierXLS, i, 41)
BEPCBACETS.BAC_D4 = xlsDonnée(IdFichierXLS, i, 42)
BEPCBACETS.BAC_D5 = xlsDonnée(IdFichierXLS, i, 43)
BEPCBACETS.BAC_D6 = xlsDonnée(IdFichierXLS, i, 44)
BEPCBACETS.BAC_D7 = xlsDonnée(IdFichierXLS, i, 45)
BEPCBACETS.BAC_D8 = xlsDonnée(IdFichierXLS, i, 46)
BEPCBACETS.BAC_T1 = xlsDonnée(IdFichierXLS, i, 47)
BEPCBACETS.BAC_T2 = xlsDonnée(IdFichierXLS, i, 48)
BEPCBACETS.BAC_T3 = xlsDonnée(IdFichierXLS, i, 49)
BEPCBACETS.BAC_T4 = xlsDonnée(IdFichierXLS, i, 50)
BEPCBACETS.BAC_T5 = xlsDonnée(IdFichierXLS, i, 51)
BEPCBACETS.BAC_T6 = xlsDonnée(IdFichierXLS, i, 52)
BEPCBACETS.BAC_T7 = xlsDonnée(IdFichierXLS, i, 53)
BEPCBACETS.BAC_T8 = xlsDonnée(IdFichierXLS, i, 54)
BEPCBACETS.GG1 = xlsDonnée(IdFichierXLS, i, 55)
BEPCBACETS.GG2 = xlsDonnée(IdFichierXLS, i, 56)
BEPCBACETS.GG3 = xlsDonnée(IdFichierXLS, i, 57)
BEPCBACETS.GG4 = xlsDonnée(IdFichierXLS, i, 58)
BEPCBACETS.GG5 = xlsDonnée(IdFichierXLS, i, 59)
BEPCBACETS.GG6 = xlsDonnée(IdFichierXLS, i, 60)
BEPCBACETS.GG7 = xlsDonnée(IdFichierXLS, i, 61)
BEPCBACETS.GG8 = xlsDonnée(IdFichierXLS, i, 62)
BEPCBACETS.GG9 = xlsDonnée(IdFichierXLS, i, 63)
BEPCBACETS.GG10 = xlsDonnée(IdFichierXLS, i, 64)
BEPCBACETS.GG11 = xlsDonnée(IdFichierXLS, i, 65)
BEPCBACETS.GG12 = xlsDonnée(IdFichierXLS, i, 66)
BEPCBACETS.FF1 = xlsDonnée(IdFichierXLS, i, 67)
BEPCBACETS.FF2 = xlsDonnée(IdFichierXLS, i, 68)
BEPCBACETS.FF3 = xlsDonnée(IdFichierXLS, i, 69)
BEPCBACETS.FF4 = xlsDonnée(IdFichierXLS, i, 70)
BEPCBACETS.FF5 = xlsDonnée(IdFichierXLS, i, 71)
BEPCBACETS.FF6 = xlsDonnée(IdFichierXLS, i, 72)
BEPCBACETS.FF7 = xlsDonnée(IdFichierXLS, i, 73)
BEPCBACETS.FF8 = xlsDonnée(IdFichierXLS, i, 74)
BEPCBACETS.FF9 = xlsDonnée(IdFichierXLS, i, 75)
BEPCBACETS.FF10 = xlsDonnée(IdFichierXLS, i, 76)
BEPCBACETS.FF11 = xlsDonnée(IdFichierXLS, i, 77)
BEPCBACETS.FF12 = xlsDonnée(IdFichierXLS, i, 78)
BEPCBACETS.COMMENTAIRE = xlsDonnée(IdFichierXLS, i, 79)
// Ajout dans le fichier HFSQL
HAjoute(BEPCBACETS)
FIN
FIN
FIN
FIN
FIN

--
Très respectueusement
Membre enregistré
913 messages
Posté le 07 juin 2026 - 00:51
Bonjour,


faire des boucles sur chaque bloc identiques ( sauf le chiffre à la fin )

dans chaque boucle faire des indirections : https://doc.pcsoft.fr/fr-FR/?operateurs_indirection


Exemple :


indboucle est un entier = 1
lindice est un entier = 7
boucle (8) // 8 fois
{"BEPCBACETS.BEPC"+ind} ={"xlsDonnée(IdFichierXLS, "+i+","+ lindice}
indboucle++
lindice ++
fin

- Dans les indirections préciser le type
- Lindice commence à 1 dans votre cas

Je vais pas me palucher l'ensemble du code !
Il faut soit chercher, soit apprendre, soit se former, soit se regarder dans la glace et changer de métier.

Christian
Message modifié, 07 juin 2026 - 00:54
Membre enregistré
1 072 messages
Posté le 07 juin 2026 - 02:17
bonjour,
une autre solution consiste à renseigner une liste de correspondance Rubrique/Numéro de colonne puis de travailler avec les indirections.
Dans cette liste, la Rubrique et le Numéro de colonne sont séparés par une virgule ","
puis on sépare les correspondances par des points-virgule ";"
ce qui donne :

ListeCorrespondance est une chaîne = [
BEPC_DREN,2;BEPC_DDEN,3;BEPC_ANNEE,4;BEPC_ETS,5;BEPC_STAT,6;BEPC1,7;BEPC2,8;BEPC3,9;BEPC4,10;BEPC5,11;BEPC6,12;BEPC7,13;BEPC8,14;BAC_A1_1,15;BAC_A1_2,16;BAC_A1_3,17;BAC_A1_4,18;BAC_A1_5,19;BAC_A1_6,20;BAC_A1_7,21;BAC_A1_8,22;BAC_A2_1,23;BAC_A2_2,24;BAC_A2_3,25;BAC_A2_4,26;BAC_A2_5,27;BAC_A2_6,28;BAC_A2_7,29;BAC_A2_8,30;BAC_C1,31;BAC_C2,32;BAC_C3,33;BAC_C4,34;BAC_C5,35;BAC_C6,36;BAC_C7,37;BAC_C8,38;BAC_D1,39;BAC_D2,40;BAC_D3,41;BAC_D4,42;BAC_D5,43;BAC_D6,44;BAC_D7,45;BAC_D8,46;BAC_T1,47;BAC_T2,48;BAC_T3,49;BAC_T4,50;BAC_T5,51;BAC_T6,52;BAC_T7,53;BAC_T8,54;GG1,55;GG2,56;GG3,57;GG4,58;GG5,59;GG6,60;GG7,61;GG8,62;GG9,63;GG10,64;GG11,65;GG12,66;FF1,67;FF2,68;FF3,69;FF4,70;FF5,71;FF6,72;FF7,73;FF8,74;FF9,75;FF10,76;FF11,77;FF12,78;COMMENTAIRE,79
]
POUR TOUTE chaîne UneCorrespondance de ListeCorrespondance SEPAREE PAR ";"
{"BEPCBACETS." + ExtraitChaîne(UneCorrespondance, 1, ","), indRubrique} = xlsDonnée(IdFichierXLS, i, ExtraitChaîne(UneCorrespondance, 2, ","))
FIN
HAjoute(BEPCBACETS)


Ceci dit, votre structure est toujours aussi déroutante ;(
Cdlt
Message modifié, 07 juin 2026 - 02:21
Posté le 07 juin 2026 - 09:49
Stephane Vital OHOU a écrit :
Bonjour,
pardon, quelqu'un peut me raccourcir ce code :
Très respectueusement


https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/264054-simplifier-code-264114/read.awp…

Tu n'as pas retenue la leçon !
Membre enregistré
4 403 messages
Posté le 07 juin 2026 - 21:54
Bonjour,
Cédric_34 a écrit :
Ceci dit, votre structure est toujours aussi déroutante

Une fois de plus, l'analyse de l'xistant à été traité par dessous la jambe, sans tenir compte des remarques précédentes :
-Si une table à plus de 10-15 colonnes il y a certainement un problème.
-SI on doit indicer des colonnes, c'est la même colonne (conceptuellement parlant)

Nous sommes ici clairement devant une liaison de type Facture-Ligne de facture (éventuellement triangulaire,) la récupération sert à mettre à jour la table de liaison.
Cela peut se faire par une fonction (e.g MajValeur(PK_Examen,PK_TypeExamen,ColonneDébut,NbValeur),) plutôt que d'utiliser cette satanée programmation impérative.

--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué, utilise l'option RTFM
Message modifié, 07 juin 2026 - 22:27
Membre enregistré
159 messages
Posté le 09 juin 2026 - 15:08
Merci à vous tous.
J'ai essayé les différents codes envoyés et vraiment ça marche comme je l'ai souhaité.
Merci infiniment.

--
Très respectueusement