Problème avec Excel - VB/VBA/VBS - Programmation
Marsh Posté le 23-06-2006 à 15:03:43
les macros en question, elles travaillent de quelle manière sur tes champs ?
n'est-ce pas une histoire de valeur stockée en dur qui fait tout foirer ?
Marsh Posté le 23-06-2006 à 15:15:47
Ben ces valeurs sont récupérées sur un masque de saisie, j'ai 3 champs que l'on rempli (numériquement), après on valide l'enregistrement et les données sont foutues dans la feuille qui fait office de base temp.
Cependant il y a un 4° champ qui lui revient progressivement à zéro en fonction des chiffres tapées dans les 3 autres champs numériques.
edit: J'espère être assez clair
Marsh Posté le 23-06-2006 à 16:41:08
plein de faute de frappe excuse je recommence
as tu fais apres copie de ton fichier edition collagespecial avec liaison
cela evitera peu etre une macro inutile
Marsh Posté le 23-06-2006 à 17:44:41
Ben il se trouve qu'en changeant de PC (et aussi de version d'office) je trouve mes données qui sont ignorées sur le pc qui doit en principe recueillir tout le bordel.
@ vicray
Ta solution semble intéressante mais il faudrait que je crée une autre macro car mon "meta-classeur va chercher 17 fichiers excel qui sont mis à jour hebdomadairement et si sur chaque feuille faut faire la copie avec liaison (je n'y avais pas du tout pensé), ça va être long et super pénible et on veut justement que ça soit rapide et automatique...
Donc je vais laisser tel quel mais sur une autre version office.
Tot cas merci à tou
Marsh Posté le 23-06-2006 à 18:05:19
Pour la lecture des données il existe ExecuteExcel4Macro(argument) qui permet de lire des données dans des classeurs excel fermés
Marsh Posté le 23-06-2006 à 18:16:04
Ouais j'avais essayé pendant un petit moment avec cette fonction, j'avais retrouvé des vieux post sur le forum mais j'y arrivais pas...
Et en fait il y a tellement de données qu'un macro c'est trop long comparé à cette requête qui me ramène tout en 20 secondes.
A terme je vais avoir 17classeurs*20champs*X000données=bcp d'infos trop lourdes pour ce pauvre excel
Marsh Posté le 24-06-2006 à 01:20:32
Benchmark sur la lecture de 6 valeurs dans 200 fichiers
ExecuteExcel4Macro 1.6 s
ADO Requête Sql 11.5 s
VBA "conventionnel " 242.0 s
Marsh Posté le 27-06-2006 à 10:09:26
kiki29 a écrit : Benchmark sur la lecture de 6 valeurs dans 200 fichiers |
arf!!!!
Le problème c'est que j'ai passé un petit moment sur cette fonction et que j'ai rien capté! (mais rien)
et puis bon ma solution n'est que 7 fois plus lente.......
aurais tu des fois un petit bout de code avec quelques commentaires pour réessayer de comprendre cette fonction??
Thx Kiki29 je crois que tu est vraiment le pro de l'import Excel-> access sur HFR
Marsh Posté le 27-06-2006 à 14:24:36
hello
parfois de faire des macro ne fais que alourdi le fichier et la memoire alors (meme si c'est un peu long) je pense que copie avec lien (a condition de ne pas modifier le nom n'y le format des fichiers sources ),fais 1 fois et chose que je pratique au boulot ,tableaux graphique ecttt avec un trenteine voir plus de lien via reseau ne pose pas de soucis de mise a jour...
a+
Marsh Posté le 27-06-2006 à 16:46:49
voir post du 15/05 à 21:13
http://forum.hardware.fr/hardwaref [...] 0232-1.htm
Marsh Posté le 27-06-2006 à 18:16:21
kiki29 a écrit : voir post du 15/05 à 21:13 |
[mode coupe du monde on]
Thx, si la france perd je regarderai ton code et je te tiens au jus pour te dire si je comprends
[mode coupe du monde off]
Marsh Posté le 29-06-2006 à 11:46:51
Bon alors j'ai regardé et j'ai réussi à faire la fonction.
Résultat: c'est trop long, j'ai importé (que) 20 000 il ma fallu 20 minutes, c'est pas possible je dois etre amené à en recevoir quasi hedomadairement 39000 lignes * 65 colonnes et des brouettes
Pour ceux à qui ca plait ils peuvent calculer le temps nécessaire, c'est assez colossal
Marsh Posté le 29-06-2006 à 11:51:40
et si l'importation était automatisée via une commande shell, pendant la nuit ?
Marsh Posté le 29-06-2006 à 12:05:49
Ca va devoir tourner sur un PC portable....alors no serveur, c'est pas moi qui décide. Et puis je suis pas sur que la nuit suffise!!!
Donc les requêtes me semblent très bien
Marsh Posté le 29-06-2006 à 16:23:19
Par curiosité j'ai créé un fichier Excel de 65 colonnes x 39000 lignes
contenant des nombres et qui pèse autour de 16 Mo
J'ai fait un test en utilisant Delphi7 + Composant Lisant/Ecrivant
des fichiers Excel natifs. Delphi permet de créer des exé autonomes.
La lecture des données du fichier Excel vers une grille prend 17 s
par contre la retranscription de la grille vers un fichier Excel est trop lente
mais cette grille peut être sauvée en texte tabulé ( en 8 s )
et le réimport de texte tabulé dans Excel ne pose aucun problème
Marsh Posté le 29-06-2006 à 17:30:19
kiki29 a écrit : Par curiosité j'ai créé un fichier Excel de 65 colonnes x 39000 lignes |
Ben moi au final j'ai 39000 lignes divisées dans 18 fichiers Excel, et la rapatriement prend un temps énorme
Parce que ma macro est une macro sous excel donc là je comprends pas trop le delphi et puis je comprends plus rien jusqu'à la fin (si je comprends que c'est visiblement plus court). Parce que niveau prog je suis pas allé loin, me suis arrété au VB VBA
Marsh Posté le 29-06-2006 à 19:46:51
l'exe lit maintenant n fichiers, si cela t'intéresse je peux te zipper cet exe pour voir et te laisser juge. Prends contact en MP
Marsh Posté le 30-06-2006 à 01:51:26
Suite et Fin ?
Sur un test Delphi+Composant Excel sur 18 fichiers Excel ( environ 20 Mo) de données
avec un paramétrage réglé par défaut à 65 Colonnes x 4000 Lignes pour chaque fichier,
ce qui fait 72000 Lignes à lire, et 45374 rééllement utiles
et enregistrées dans un fichier en texte tabulé
en environ 32 s pour 13 Mo
Marsh Posté le 01-07-2006 à 01:52:51
Mon exe tourne correctement qq soit le nb de colonnes ou lignes des n fichiers Excel ( nb colonnes et lignes peuvent varier d'un fichier à l'autre)
cela dans un temps correct sans charger le systeme.
Ici effectivement la solution VBA ne semble pas la bonne vu le volume de données , le composant que j'ai utilisé n'existe pas pour VB6.
Test sur 18 fichiers (20 mo) au final 45368 lignes (2974965 cellules) traités en 22s
Il n'y plus qu'a importer le fichier texte tabulé résultant dans Excel
Un exé autonome est dispo si tu veux le tester en situation réelle ?
l'installation est minimaliste il suffit de placer l'exé dans un dossier, les qqs parametres nécessaires sont sauvés au même niveau dans un fichier ini ,rien n'est inscrit dans la base de registre.
Marsh Posté le 01-07-2006 à 18:11:09
kiki29 a écrit : l'exe lit maintenant n fichiers, si cela t'intéresse je peux te zipper cet exe pour voir et te laisser juge. Prends contact à phlh29@wanadoo.fr |
Oui ça m'intéresse, je vais prendre contact
kiki29 a écrit : Suite et Fin ? |
La seule vraiable qui change dans l'import c'est le nombre de lignes qui s'incrémentent, le nombre de colonnes reste inchangé
kiki29 a écrit : Mon exe tourne correctement qq soit le nb de colonnes ou lignes des n fichiers Excel ( nb colonnes et lignes peuvent varier d'un fichier à l'autre) |
Pfiouuuuu.....
Oui ok ça me semble jouable, donc je vais prendre contact avec toi pour récupérer l'exé et je testerai ça lundi, je te tiens au jus,
petit hors sujet: tu pourrais presque faire un tuto pour l'export Excel-->Excel
bon week end
Marsh Posté le 19-07-2006 à 07:05:08
l'exé autonome ( Xls2Tab ) est téléchargeable sur http://www.fobec.com/CMS/blog.php?_id=7
Il supprime les caractères indésirables : espaces debut/fin,espaces surnuméraires,caractères non imprimables, chr(160) etc. et génère un fichier texte tabulé final et/ou Excel ( réparti sur plusieurs feuilles si Nb Lignes > 65536 )
Marsh Posté le 20-07-2006 à 11:01:44
Version XL ( sans suppression des caractères indésirables )
Outils | References Cocher Microsoft ActiveX Data Objects 2.x Library
Adapter les 4 variables au contexte d'utilisation
|
|
Marsh Posté le 21-07-2006 à 09:36:09
Thanks mais le petit exé est vraiment super, je lui reste fidèle
Marsh Posté le 23-06-2006 à 15:01:02
Hello à tous!!
Mon problème est le suivant:
J'importe des données excel provenant de plusieurs classeurs sur un "méta-classeur" (on dira ça comme ça), pour cela, j'utilise sous excel la fonction d'import de données. Malheureusement lors de cette même importation j'ai des champs qui ne sont tout bonnements pas importés.
Si je poste dans cette section, c'est que les champs incriminés dans le problème, font l'objet de traitement par des macros. Cependant ils sont présents "physiquement" dans mes petits classeurs, sur une feuille de données.
Quelqu'un voit-il une solution à mon pb???