|
Extraction de données de plusieurs fichiers Excel |
Débuté par MMEITE, 18 jan. 2023 14:31 - 9 réponses |
| |
| | | |
|
| |
Posté le 18 janvier 2023 - 14:31 |
Salut Chers tous, j'ai besoin d'un coup pouce;
je travaille sur un projet ou je fais une extraction de données à partir de fichiers Excel. ma fenêtre d'extraction marche bien (Voir Code). Mon souci est que les données viennent en plusieurs dizaines de fichiers Excel et il faut reprendre l'opération autant de fois qu'il y a de fichier. Je voudrais pouvoir mettre tous les fichiers dans un répertoire et lancer une seule fois pour extraire les données de tous les fichiers
Merci d'avance pour toute aideSI SAI_chemin="" ALORS Info("Veuillez d'abord sélectionner le fichier contenant les données à extraire.") DonneFocus(BTN_FICHIER) RETOUR FIN //***********************************************************************// //***************Importation des données du fichiers Excel***************// //***********************************************************************//
//Déclaration des variables IdFichierXLS est un entier FichierExcel est une chaîne CheminDeFichier est une chaîne i,NbLigne est un entier
CheminDeFichier = FEN_EXTRACTION_ENTREPRISE.SAI_chemin FichierExcel = CheminDeFichier
JAUGE_Jauge1..Visible = Vrai
//Début procedure d'extraction SI fFichierExiste(FichierExcel) ALORS HCréation(ENTREPRISE_TRANSFERT) IdFichierXLS = xlsOuvre(CheminDeFichier) NbLigne = xlsNbLigne(IdFichierXLS) HOuvre(ENTREPRISE_TRANSFERT) POUR i=2 À NbLigne SI IdFichierXLS <> -1 ALORS ENTREPRISE_TRANSFERT.GREF_REGCOM= xlsDonnée (IdFichierXLS,i,1,Vrai) ENTREPRISE_TRANSFERT.RC= xlsDonnée (IdFichierXLS,i,2,Vrai) ENTREPRISE_TRANSFERT.COD_SECT_ACTI= xlsDonnée (IdFichierXLS,i,3,Vrai) ENTREPRISE_TRANSFERT.COD_CLS_ACTI= xlsDonnée (IdFichierXLS,i,4,Vrai) ENTREPRISE_TRANSFERT.COD_PAYS= xlsDonnée (IdFichierXLS,i,5,Vrai) ENTREPRISE_TRANSFERT.COD_REGIM_FISC= xlsDonnée (IdFichierXLS,i,6,Vrai) ENTREPRISE_TRANSFERT.COD_FRM_JUR= xlsDonnée (IdFichierXLS,i,7,Vrai) ENTREPRISE_TRANSFERT.NO_CPTE_CTRIB= xlsDonnée (IdFichierXLS,i,8,Vrai) ENTREPRISE_TRANSFERT.NOM_ENT= xlsDonnée (IdFichierXLS,i,9,Vrai) ENTREPRISE_TRANSFERT.SIGLE_ENT= xlsDonnée (IdFichierXLS,i,10,Vrai) ENTREPRISE_TRANSFERT.NO_REP_ENT= xlsDonnée (IdFichierXLS,i,11,Vrai) ENTREPRISE_TRANSFERT.NO_CAIS_SOCIAL= xlsDonnée (IdFichierXLS,i,12,Vrai) ENTREPRISE_TRANSFERT.NO_COD_IMPORT= xlsDonnée (IdFichierXLS,i,13,Vrai) ENTREPRISE_TRANSFERT.TEL= xlsDonnée (IdFichierXLS,i,14,Vrai) ENTREPRISE_TRANSFERT.TELCOP= xlsDonnée (IdFichierXLS,i,15,Vrai) ENTREPRISE_TRANSFERT.CP_ENT= xlsDonnée (IdFichierXLS,i,16,Vrai) ENTREPRISE_TRANSFERT.BP_ENT= xlsDonnée (IdFichierXLS,i,17,Vrai) ENTREPRISE_TRANSFERT.VILLE_ENT= xlsDonnée (IdFichierXLS,i,18,Vrai) ENTREPRISE_TRANSFERT.ADR_GEO_ENT= xlsDonnée (IdFichierXLS,i,19,Vrai) ENTREPRISE_TRANSFERT.ETAT_FNCE_CERT= xlsDonnée (IdFichierXLS,i,20,Vrai) ENTREPRISE_TRANSFERT.ETAT_FNCE_APP= xlsDonnée (IdFichierXLS,i,21,Vrai) ENTREPRISE_TRANSFERT.NOM_SIGNA= xlsDonnée (IdFichierXLS,i,22,Vrai) ENTREPRISE_TRANSFERT.QLTE_SIGNA= xlsDonnée (IdFichierXLS,i,23,Vrai) ENTREPRISE_TRANSFERT.CTACT_INFO= xlsDonnée (IdFichierXLS,i,24,Vrai) ENTREPRISE_TRANSFERT.CTACT_CPTA= xlsDonnée (IdFichierXLS,i,25,Vrai) ENTREPRISE_TRANSFERT.COMMIS_CPTE= xlsDonnée (IdFichierXLS,i,26,Vrai) ENTREPRISE_TRANSFERT.PRE_AN_EXO= xlsDonnée (IdFichierXLS,i,27,Vrai) ENTREPRISE_TRANSFERT.CTROL_ENT= xlsDonnée (IdFichierXLS,i,28,Vrai) ENTREPRISE_TRANSFERT.CAPA_PROD_UTIL= xlsDonnée (IdFichierXLS,i,29,Vrai) ENTREPRISE_TRANSFERT.NBR_ETS_PAYS= xlsDonnée (IdFichierXLS,i,30,Vrai) ENTREPRISE_TRANSFERT.NBR_ETS_HPAYS= xlsDonnée (IdFichierXLS,i,31,Vrai) ENTREPRISE_TRANSFERT.SYS_PRAT= xlsDonnée (IdFichierXLS,i,32,Vrai) ENTREPRISE_TRANSFERT.DAT_SIGNA= xlsDonnée (IdFichierXLS,i,33,Vrai) ENTREPRISE_TRANSFERT.DEB_EXO= xlsDonnée (IdFichierXLS,i,34,Vrai) ENTREPRISE_TRANSFERT.FIN_EXO= xlsDonnée (IdFichierXLS,i,35,Vrai) ENTREPRISE_TRANSFERT.DAT_CLOS_EFFECT= xlsDonnée (IdFichierXLS,i,36,Vrai) ENTREPRISE_TRANSFERT.DUR_EXO= xlsDonnée (IdFichierXLS,i,37,Vrai) ENTREPRISE_TRANSFERT.DAT_CLOS_EXO_PRE= xlsDonnée (IdFichierXLS,i,38,Vrai) ENTREPRISE_TRANSFERT.DUR_EXO_PRE= xlsDonnée (IdFichierXLS,i,39,Vrai) ENTREPRISE_TRANSFERT.AN_EXO= xlsDonnée (IdFichierXLS,i,40,Vrai) ENTREPRISE_TRANSFERT.COD_ACTI_NAT= xlsDonnée (IdFichierXLS,i,41,Vrai) ENTREPRISE_TRANSFERT.LIB_ACTI= xlsDonnée (IdFichierXLS,i,42,Vrai) ENTREPRISE_TRANSFERT.NUM_CAS= xlsDonnée (IdFichierXLS,i,43,Vrai) ENTREPRISE_TRANSFERT.IDENTIFIANT= xlsDonnée (IdFichierXLS,i,44,Vrai) ENTREPRISE_TRANSFERT.DAT_SAISIE= xlsDonnée (IdFichierXLS,i,45,Vrai) ENTREPRISE_TRANSFERT.HEURE_SAISIE= xlsDonnée (IdFichierXLS,i,46,Vrai) ENTREPRISE_TRANSFERT.COD_AGT_SAISIE= xlsDonnée (IdFichierXLS,i,47,Vrai) ENTREPRISE_TRANSFERT.DAT_MODIF= xlsDonnée (IdFichierXLS,i,48,Vrai) ENTREPRISE_TRANSFERT.HEURE_MODIF= xlsDonnée (IdFichierXLS,i,49,Vrai) ENTREPRISE_TRANSFERT.COD_AGT_MODIF= xlsDonnée (IdFichierXLS,i,50,Vrai) ENTREPRISE_TRANSFERT.DAT_EXPL= xlsDonnée (IdFichierXLS,i,51,Vrai) ENTREPRISE_TRANSFERT.HEURE_EXPL= xlsDonnée (IdFichierXLS,i,52,Vrai) ENTREPRISE_TRANSFERT.COD_AGT_EXPL= xlsDonnée (IdFichierXLS,i,53,Vrai) ENTREPRISE_TRANSFERT.CODE_ETAT= xlsDonnée (IdFichierXLS,i,54,Vrai) ENTREPRISE_TRANSFERT.STATUT= xlsDonnée (IdFichierXLS,i,55,Vrai) ENTREPRISE_TRANSFERT.FEUILLE= xlsDonnée (IdFichierXLS,i,56,Vrai) ENTREPRISE_TRANSFERT.DAT_FEUILLE= xlsDonnée (IdFichierXLS,i,57,Vrai) ENTREPRISE_TRANSFERT.AGT_MODIF_SAISIE= xlsDonnée (IdFichierXLS,i,58,Vrai) ENTREPRISE_TRANSFERT.STATUT_SAISIE= xlsDonnée (IdFichierXLS,i,59,Vrai) ENTREPRISE_TRANSFERT.CODE_ETAT_SAISIE= xlsDonnée (IdFichierXLS,i,60,Vrai) ENTREPRISE_TRANSFERT.DAT_MODIF_SAISIE= xlsDonnée (IdFichierXLS,i,61,Vrai) ENTREPRISE_TRANSFERT.HEURE_MODIF_SAISIE= xlsDonnée (IdFichierXLS,i,62,Vrai) ENTREPRISE_TRANSFERT.DAT_MACHINE= xlsDonnée (IdFichierXLS,i,63,Vrai) ENTREPRISE_TRANSFERT.NTD= xlsDonnée (IdFichierXLS,i,64,Vrai) ENTREPRISE_TRANSFERT.EMAIL= xlsDonnée (IdFichierXLS,i,65,Vrai) ENTREPRISE_TRANSFERT.ETAT= xlsDonnée (IdFichierXLS,i,66,Vrai) ENTREPRISE_TRANSFERT.COD_AGT_CODIF= xlsDonnée (IdFichierXLS,i,67,Vrai) ENTREPRISE_TRANSFERT.DAT_CODIF= xlsDonnée (IdFichierXLS,i,68,Vrai) ENTREPRISE_TRANSFERT.HEURE_CODIF= xlsDonnée (IdFichierXLS,i,69,Vrai) ENTREPRISE_TRANSFERT.VALID= xlsDonnée (IdFichierXLS,i,70,Vrai) ENTREPRISE_TRANSFERT.COMMUNE= xlsDonnée (IdFichierXLS,i,71,Vrai) ENTREPRISE_TRANSFERT.CENTRE_IMPOT= xlsDonnée (IdFichierXLS,i,72,Vrai) ENTREPRISE_TRANSFERT.TEL2= xlsDonnée (IdFichierXLS,i,73,Vrai) ENTREPRISE_TRANSFERT.NBR_PG_EXPL= xlsDonnée (IdFichierXLS,i,74,Vrai) ENTREPRISE_TRANSFERT.NBR_EXPL_DEP= xlsDonnée (IdFichierXLS,i,75,Vrai) ENTREPRISE_TRANSFERT.CTACT_CPTA_VISA= xlsDonnée (IdFichierXLS,i,76,Vrai) // Champ jauge FEN_EXTRACTION_ENTREPRISE..JaugeSystème = JAUGE_Jauge1..Nom JAUGE_Jauge1..Libellé = "Extraction..." JAUGE_Jauge1..BorneMin = 0 JAUGE_Jauge1..BorneMax = NbLigne JAUGE_Jauge1..Valeur = i Multitâche() HAjoute(ENTREPRISE_TRANSFERT) TableAffiche(TABLE_ENTREPRISE) FIN FIN //<> JAUGE_Jauge1..Visible=Faux SI i = 1 ALORS Info(" L’entreprise a été ajoutée avec succès") FIN SI i > 1 ALORS Info(i+" entreprises ont été ajoutées avec succès") FIN //ExécuteTraitement(BTN_TRANSFERT1,trtClic) SINON JAUGE_Jauge1..Visible=Faux Erreur("Le fichier n'existe pas") FIN |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 889 messages Popularité : +227 (347 votes) |
|
Posté le 18 janvier 2023 - 15:00 |
Bonjour, Dans un premier temps, ne serait-il pas plus simple d'utiliser HImporteXLS. Concernant ton problème proprement dit, regarde du côté de fListeFichier
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 149 messages |
|
Posté le 18 janvier 2023 - 22:12 |
Bonjour,
xFichier est une chaîne xListeFichier est une chaîne xRep_Recherche est une chaîne = "C:\MonDossier\" xType_Fic est une chaîne = "*.xls"
ResListeFichier = fListeFichier(xRep_Recherche+xType_Fic, frNonRécursif+frInterruptible)
POUR TOUTE chaîne xFichier de xListeFichier SEPAREE PAR RC
FIN
|
| |
| |
| | | |
|
| | |
| |
Posté le 19 janvier 2023 - 13:59 |
Merci beaucoup à tous les deux. je teste tout ca et je fais un retour.
J'ai une autre préoccupation, je ne sais pas si cela va nécessiter un autre post.
Il y a-t-il une technique, une méthode, un procédé pour extraire les données d'un Excel qui a plus de 100 000 lignes (vu les limites de WinDev autour de 64 000 lignes) |
| |
| |
| | | |
|
| | |
| |
Posté le 19 janvier 2023 - 14:37 |
Merci beaucoup à tous les deux. je teste tout ca et je fais un retour.
J'ai une autre préoccupation, je ne sais pas si cela va nécessiter un autre post.
Il y a-t-il une technique, une méthode, un procédé pour extraire les données d'un Excel qui a plus de 100 000 lignes (vu les limites de WinDev autour de 64 000 lignes) |
| |
| |
| | | |
|
| | |
| |
Posté le 19 janvier 2023 - 15:11 |
Une technique, je ne sais pas. Une méthode, peut-être. Un procédé, pourquoi pas. Mais une astuce oui : Scinder le fichier excel en deux.
Bien à toi, jeune programmeur. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 889 messages Popularité : +227 (347 votes) |
|
Posté le 19 janvier 2023 - 17:49 |
MMEITE a écrit :
Il y a-t-il une technique, une méthode, un procédé pour extraire les données d'un Excel qui a plus de 100 000 lignes (vu les limites de WinDev autour de 64 000 lignes)
La barre des 65 536 ligne ne vient pas de windev mais de XL si l'on utilise un fichier XLS. HImporteXLS peut traiter indiféremment les XLS et les XLSX
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Posté le 20 février 2023 - 14:00 |
Merci à tous pour les différentes réponses avec une mention spéciale à Voroltinquo et Denis.
Suite à vos réponses, j'ai fait un mélange des deux réponses pour obtenir les code suivant (Voir code joint)Ca marche mais j'ai toujours un souci. Les Données Excel à extraire ont 3 sources je vous montre l'exemple de la table "ACTIF" Sources 1 = REF_LIG AN_EXO GREF_REGCOM MNT_BRUT_EXO MNT_AMORT_DEPR_EXO MNT_NET_EXO MNT_NET_EXO_PRE CODE_NOTE COD_SYST Source 2 = REF_LIG AN_EXO GREF_REGCOM MNT_NET_EXO MNT_NET_EXO_PRE CODE_NOTE COD_SYST NO_CPTE_CTRIB NOM_ENT Source 3 =REF_LIG AN_EXO GREF_REGCOM MNT_BRUT_EXO MNT_AMORT_DEPR_EXO MNT_NET_EXO MNT_NET_EXO_PRE CODE_NOTE COD_SYST NO_CPTE_CTRIB NOM_ENT
Cette différence au niveau des colonnes en FONCTION des sources fait qu'après l'extraction (qui se passe bien) les Données ne sont pas ordonnées.
En utilisant la FONCTION HImporteXLS, Comment puis-je donner l'ordre des colonnes que je veux en FONCTION de ma Source??
UnFichier, ResListeFichier sont des chaînes chemin_fichier est un chaîne = "D:\LOGICIEL CRYSTAL\BASE EN EXCEL\DGI_NORMAL\" ResListeFichier = fListeFichier(chemin_fichier+"*.xlsx", frRécursif + frInterruptible)
sTable_xls est chaîne POUR TOUTE chaîne UnFichier de ResListeFichier SEPAREE PAR RC tableauDeChemin est un tableau de chaîne
tableauDeChemin = ChaîneDécoupe(UnFichier, ".")
sTable_xls = Remplace(tableauDeChemin[1], chemin_fichier , "")
Trace("Table :"+sTable_xls +"- Fichier :" + UnFichier ) HImporteXLS(sTable_xls, UnFichier, 1, "", hImpCreation, JAUGE_Jauge1) FIN Info("Importation terminée") |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 149 messages |
|
Posté le 21 février 2023 - 07:38 |
Bonjour, MMEITE Je ne sais pas si j'ai bien compris votre explication. Perso, je n'utilise presque jamais HimporteXLS et préfère passer par un CSV ou du TXT, mais bon...
Perso, je ferais comme çà, avec mes vieilles habitudes (probablement pas très orthodoxe) Comme il y a 3 sources possibles, je chercherai leur différenc. Ici, le nombre de colonnes dans chaque XLS source (Source1=8 colonnes/Source2=7/Source3=10)
Ensuite, je traiterai dans une boucle chaque fichier EXCEL:
1) Recup du chemin du fichier XLS
// Récup du nombre de colonnes et du nombre de ligne dans le fichier XL IDFichierXLS = xlsOuvre("C:\MonRépertoire\Fichier.XLS") SI IDFichierXLS <> -1 ALORS ResNbColonne = xlsNbColonne(IDFichierXLS) ResNbLignes = xlsNbLigne(IDFichierXLS) FIN // Selon le nombre de colonnes trouvées : 3 cas SELON ResNbcolonnes CAS 8 CAS 7 CAS 10 FIN Il suffit alors de Récup les données Excel (ligne par ligne / Colonne par colonne) dans des variables VAR 1 = xlsDonnée(IDFichierXLS, ligne, colonne)
et Affectation des variables dans les bonnes colonnes de la table Windev |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 149 messages |
|
Posté le 21 février 2023 - 08:39 |
Message précédent un poil confus... DSL Cà pourrait donner çà
xChemin_fichier est une chaîne ResListeFichier est une chaîne xFICHIER est une chaîne xNBLIG est un entier xNBCOL est un entier IDFichierXLS est un entier I est un entier xVar1 est une chaîne xVar2 est une chaîne xVar3 est une chaîne xVar4 est une chaîne xVar5 est une chaîne xVar6 est une chaîne xVar7 est une chaîne xVar8 est une chaîne xVar9 est une chaîne xVar10 est une chaîne xLigne_Import est une chaîne
xChemin_fichier = "D:\LOGICIEL CRYSTAL\BASE EN EXCEL\DGI_NORMAL\"
ResListeFichier = fListeFichier(xChemin_fichier+"*.xlsx", frRécursif + frInterruptible)
POUR TOUTE chaîne xFICHIER de ResListeFichier SEPAREE PAR RC IDFichierXLS = xlsOuvre(xFICHIER) SI IDFichierXLS <> -1 ALORS xNBCOL = xlsNbColonne(IDFichierXLS) xNBLIG = xlsNbLigne(IDFichierXLS) FIN POUR I=1 À xNBLIG xVar1 = xlsDonnée(IDFichierXLS, I,1) xVar2 = xlsDonnée(IDFichierXLS, I,2) xVar3 = xlsDonnée(IDFichierXLS, I,3) xVar4 = xlsDonnée(IDFichierXLS, I,4) xVar5 = xlsDonnée(IDFichierXLS, I,5) xVar6 = xlsDonnée(IDFichierXLS, I,6) xVar7 = xlsDonnée(IDFichierXLS, I,7) SI xNBCOL > 7 ALORS xVar8 = xlsDonnée(IDFichierXLS, I,8) FIN SI xNBCOL > 8 ALORS xVar9 = xlsDonnée(IDFichierXLS, I,9) xVar10 = xlsDonnée(IDFichierXLS, I,10) FIN SELON xNBLIG CAS 7 : xLigne_Import = xVar1+TAB+xVar2+... CAS 8 : xLigne_Import = xVar1+TAB+xVar2+... CAS 10 : xLigne_Import = xVar1+TAB+xVar2+... FIN TableAjoute("Table_XLS",xLigne_Import) FIN FIN
|
| |
| |
| | | |
|
| | | | |
| | |
|