|
| 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,  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 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.
ChristianMessage 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  CdltMessage modifié, 07 juin 2026 - 02:21 |
| |
| |
| | | |
|
| | |
| |
| Posté le 07 juin 2026 - 09:49 |
| |
| |
| | | |
|
| | |
| |
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 RTFMMessage 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 |
| |
| |
| | | |
|
| | | | |
| | |
|