IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Importation des données Excel vers HF tres long [WD7.5]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Importation des données Excel vers HF tres long
    Bonjour la communauté , voila j'ai une application interrogation de bdd. Dans mon application j'ai créer 2 boutons pour importer les données article.xls et client.xls correspondant aux fichier Articles et Clients. Dans le fichier Articles j'ai 6642 enregistrements et sa prend pres de 10 minutes pour importer les données alors que le fichier cLients qui comporte 550 enregistrements ne prend meme pas 30 secondes... Voiçi le code pour importer données Articles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    HCréationSiInexistant(Article)
     
    IDXls est un entier=xlsOuvre("C:\article1.xls") 
    SI IDXls<>-1 ALORS 
    	iTaille est un entier=xlsNbLigne(IDXls,Faux) 
    	i est un entier=1 
        TANTQUE i <= 6642
     
     
     
    		Article.NumArt=xlsDonnée(IDXls,i,1,Faux) 
    		Article.designation=xlsDonnée(IDXls,i,2,Faux) 
    		Article.modele=xlsDonnée(IDXls,i,3,Faux)
    		Article.CLINIK=xlsDonnée(IDXls,i,4,Faux)
    		Article.CM=xlsDonnée(IDXls,i,5,Faux)
    		Article.DDED=xlsDonnée(IDXls,i,6,Faux)
    		Article.EPROU=xlsDonnée(IDXls,i,7,Faux)
    		Article.FORMAT=xlsDonnée(IDXls,i,8,Faux)
    		Article.LACHAS=xlsDonnée(IDXls,i,9,Faux)
    		Article.LOCHAS=xlsDonnée(IDXls,i,10,Faux)
    		Article.MATHUA=xlsDonnée(IDXls,i,11,Faux)
    		Article.MATCLI=xlsDonnée(IDXls,i,12,Faux)
    		Article.NBNOY=xlsDonnée(IDXls,i,13,Faux)
    		Article.NTYNOY=xlsDonnée(IDXls,i,14,Faux)
    		Article.NBOIT=xlsDonnée(IDXls,i,15,Faux)
    		Article.PDMOUL=xlsDonnée(IDXls,i,16,Faux)
    		Article.PIEFOR=xlsDonnée(IDXls,i,17,Faux)
    		Article.POIPI=xlsDonnée(IDXls,i,18,Faux)
    		Article.SECT=xlsDonnée(IDXls,i,19,Faux)
    		Article.DERPRI=xlsDonnée(IDXls,i,20,Faux)
    		Article.PVUSI=xlsDonnée(IDXls,i,21,Faux)
    		Article.USI1=xlsDonnée(IDXls,i,22,Faux)
    		Article.USI2=xlsDonnée(IDXls,i,23,Faux)
    		Article.USI3=xlsDonnée(IDXls,i,24,Faux)
    		Article.AFFBLO=xlsDonnée(IDXls,i,25,Faux)
    		Article.INIBLO=xlsDonnée(IDXls,i,26,Faux)
    		Article.EFFBLO=xlsDonnée(IDXls,i,27,Faux)
    		Article.POIEXP=xlsDonnée(IDXls,i,28,Faux)
    		Article.DATBLO=xlsDonnée(IDXls,i,29,Faux)
    		Article.PDFORM=xlsDonnée(IDXls,i,30,Faux)
    		HAjoute(Article)
    		i++
    	FIN
     
     
     
     
     
    SINON
    	ErreurInfo()
    FIN
    Pouvez vous m'éclairer s'il vous plait ?

  2. #2
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Excel est long à lire... Tu peux peut etre passer par un csv : ça ira toujours un peu plus vite.
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    humm d'accord alors cette lenteur est due à la lecture du fichier excel. Ok . C'etait juste pour savoir car les articles seront mis a jour 1 fois tous les 2 semaines. Un fichier csv .. en fait mon fichier excel est importé avec Microsoft query qui est connecté à une basse AS/400.

  4. #4
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    Tu peux aussi te connecter à tes bases AS400 par ODBC.
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    oui , c'est ce que j'ai fait. Je viens d'avoir un autre probleme par rapport à l'importation. J'ai rajouter une colonne dans mon fichier excel ( par le biais de microsoft query et oDBC ) maintenant quand j'importe mes données j'ai l'erreur " Pas assez de mémoire " Dans le fichier HYper File , il crée les colonnes pour chaque rubrique mais ils ne remplit pas les données.
    *

    Quelqu'un sait comment résoudre ce probleme. Dans le manuel de programmation il est dit que pour cette erreur il faut , je cite : " FErmer une ou plusieurs applications ou libérez de l'espace disque et répétez l'opération " . Donc c'est ce que j'ai fait et sa ne fonctionne toujours pas . Par contre quand je retire la rubrique que je viens d'ajouter , miracle WD importe bien les données. Bizarre.J'ai déja essayé d'ajouter une autre rubrique , sa ne fonctionne toujours , je vais devenir dingue

  6. #6
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Bonjour,

    J'aurais aussi pencher sur un problème de mémoire. Un fichier Excel de près de 7000 lignes c'est très gros même pour Excel. Évidemment, Windev n'est pas optimisé pour ça et la meilleur solution serait, comme le dit mail.spam, de te connecter directement à ta base AS/400. Tu t'éviterais surement plein de problèmes et des manipulations étranges.
    «Un problème bien défini est un problème à moitié résolu.»

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    oUI mais mon tuteur de stage veux que je bosse sans l'accès natif as/400 car il faudrait en acheter une licence. On en a deja une mais il est installé sur l'ancien as400 et moi je bosse sur le nouveau ( avec les données qui provient de l'ancien ) . L'histoire est un peu bizarre , mais il faut que je me débrouille avec ecxel, j'ai toujours pas résolu le probleme de mémoire. Le fichier ecxel ne fait que 20 MO, dans les aides rien n'indique une limite de logiciel pour une taille aussi faible

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 340
    Points : 3 854
    Points
    3 854
    Par défaut
    Salut,

    Un accès ODBC ne veut pas dire Accès Natif.

    Si tu as un environnement avec AS/400 et PC, il y a de fortes chances que tu possèdes Client Access, qui est fourni avec un pilote ODBC... donc pas d'achat supplémentaire.

  9. #9
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 288
    Points : 9 373
    Points
    9 373
    Par défaut
    Lo² a raison.

    Par contre, tu peux utiliser l'activex excel. Je l'ai fait pour écrire des fichiers excel volumineux et ça marchait bien (en fonction de la puissance de la machine bien sûr).

    Vérif activeX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // Chargement de l'ActiveX
    ActiveX="Shell.Explorer"
     
    // Instanciation OK ?
    objTest est un objet OLE dynamique = ActiveX
    SI objTest=Null ALORS
    	libérer objTest
    	FinProgramme("L'ActiveX Internet Explorer n'a pas pu être chargé")
    FIN
    libérer objTest
     
    // Création d'un  objet automation dynamique
    MonClasseur est un objet automation dynamique
     
    // Instance de Excel existante ?
    SI ObjetActif("Excel.Application") <> Null ALORS
    	// Récupération de l'instance de Excel existante
    	MonClasseur = ObjetActif("Excel.Application")
    SINON
    	// Allocation de l'objet automation "MonClasseur"
    	MonClasseur = allouer un objet automation "Excel.Application"
    FIN
    SI MonClasseur = Null ALORS
    	Erreur("Impossible de lancer Excel.")
    	RETOUR
    FIN
    Ensuite, pour te promener dans ton fichier Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TANTQUE i <= 6642        
    	Article.NumArt=MonClasseur>>Range("A"+i)>>Value
    	Article.designation=MonClasseur>>Range("B"+i)>>Value
    ....
    FIN
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  10. #10
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Je tiens à préciser que pour utiliser la solution de frenchsting, tu dois avoir Excel d'installer. Sinon, tu peux aussi piloter OO Calc.
    «Un problème bien défini est un problème à moitié résolu.»

  11. #11
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    merci beaucoup pour votre aide mais j'ai résolus mon probleme differement , sur AS400 j'ai créer un fichier de donné qui ne regrouper que des article qui dataient de 2004 jusqu'à aujourd'hui , je suis passé de plus de 7000 enregistrement à 600. Quel soulagement maintenant le programme fonctionne nickel. Merci encore pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 25
    Dernier message: 26/04/2011, 13h58
  2. [A-00] Importer des données Excel vers Access
    Par Slici dans le forum VBA Access
    Réponses: 4
    Dernier message: 06/03/2009, 12h56
  3. Importé des donnée Excel vers SAP (MM01)
    Par eddassiabdelhak dans le forum SAP
    Réponses: 3
    Dernier message: 02/02/2009, 12h36
  4. Importer des données Excel vers BD Access
    Par technopole dans le forum Access
    Réponses: 1
    Dernier message: 03/07/2006, 14h37
  5. Importer des données excel vers outlook
    Par faayy dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/10/2005, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo