Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1202 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Taille max de tableau en VBA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Taille max de tableau en VBA

n°2036707
gooopil
pfiew
Posté le 17-11-2010 à 17:41:24  profilanswer
 

Hello,
 
J'ai souvent besoin de travailler avec des tableaux de plus de 30k éléments (le plus souvent des noms de fichiers donc le contenu n'est pas si lourd que ça), mais Excel se casse systématiquement la gueule un peu après avoir dépassé les 30k.  
 
Après avoir recherché un peu sur le net, c'est quelque chose d'apparemment connu, la taille d'un tableau max serait limitée par la mémoire disponible. Sauf que si je crée un tableau qui va contenir plein de tableaux de 30k éléments, pas de problème (avec Excel qui commence à dépasser le Go de RAM utilisée).  
 
J'ai donc un moyen de contourner cette limitation en scindant mon tableau en sous-tableau, mais ça me semble un peu être du bricolage. Pas moyen de créer un tableau de 200 000 lignes si j'en ai envie/besoin ?
 
'ci :)

mood
Publicité
Posté le 17-11-2010 à 17:41:24  profilanswer
 

n°2036711
olivthill
Posté le 17-11-2010 à 17:50:48  profilanswer
 

Ca dépend des versions d'Excel. Les limites sont repoussées un peu plus loin de temps à autres. Il me semble que la dernière version permet d'aller au-delà de 30K.
 
En attendant les versions prochaines, le bricolage est une solution qui est préférable à une absence de solution.

n°2036731
kiki29
Posté le 17-11-2010 à 19:43:42  profilanswer
 
n°2036873
gooopil
pfiew
Posté le 18-11-2010 à 13:19:28  profilanswer
 

olivthill a écrit :

Ca dépend des versions d'Excel. Les limites sont repoussées un peu plus loin de temps à autres. Il me semble que la dernière version permet d'aller au-delà de 30K.

 

En attendant les versions prochaines, le bricolage est une solution qui est préférable à une absence de solution.


:jap:

 



Ouais c'est ce que j'avais trouvé :jap:

 

Langage en carton vba quand même :/ , va falloir que je me mette à autre chose un jour pour manipuler des Excel...


Message édité par gooopil le 18-11-2010 à 13:19:57
n°2036915
Xxxaaavvv
Posté le 18-11-2010 à 15:28:29  profilanswer
 

Bof, ça tourne plutot bien pour ce que les gens en font.
 
Si déjà vous arretiez de vous en servir comme base de donnée, alors que ça n'en est pas une; il y aura un progrès :D
(et sans parler de programmer proprement)
 
 
Décris voir le besoin que t'as d'avoir des tableau de 30k éléments en mémoire ?
(30k noms de fichiers ? oO)

Message cité 1 fois
Message édité par Xxxaaavvv le 18-11-2010 à 15:29:17
n°2036928
gooopil
pfiew
Posté le 18-11-2010 à 15:53:03  profilanswer
 

Xxxaaavvv a écrit :

Bof, ça tourne plutot bien pour ce que les gens en font.

 

Si déjà vous arretiez de vous en servir comme base de donnée, alors que ça n'en est pas une; il y aura un progrès :D
(et sans parler de programmer proprement)

 


Décris voir le besoin que t'as d'avoir des tableau de 30k éléments en mémoire ?
(30k noms de fichiers ? oO)


M'en sers pas comme base de données non, mais c'est un peu le seul support qu'on a qu'on puisse facilement utiliser pour ce qu'on en fait :(
Excel est pas loin de proposer exactement ce dont on a besoin et est manipulable sans formation supplémentaire. Après y'a des tâches qui peuvent s'automatiser et c'est là que j'interviens quand j'ai le temps, mais utiliser une vraie base de donnée, j'aurais énormément de boulot à faire pour recréer toutes les fonctions que propose Excel, et j'ai pas forcément le temps/les moyens etc. Donc Excel restera notre support, comme il l'est dans la plupart des boites qui font le même taff que nous :)

 

Sur le volume, 30k, y'a pire, ça peut encore se multiplier par 10 :/

 

Exemple : j'ai d'un côté un fichier Excel de 5 à 10 000 lignes qui contient des noms de fichiers, un répertoire de destination au sein d'une arborescence et une colonne de Feedback. De l'autre, j'ai un dossier avec une arbo inconnue avec deux ensembles de 200 000 fichiers (chaque fichier est présent en deux versions). Pour chaque fichier de l'Excel, il faut que je trouve si les deux versions existent, si c'est le cas, je renseigne un feedback positif et je les copie dans l'arborescence indiquée. Si l'un des deux fichiers n'existe pas (ou les deux), je donne un feedback différent dans l'Excel...

 

C'est juste un exemple (choisi parmi les plus gros pour l'exemple), mais gérer des relations classeur(s) Excel / milliers de fichier c'est très commun dans ce que je fais.

 

Quant à programmer correctement, ça fait déjà 7 ans que j'ai fini mon DUT info (pfiew ça passe vite), j'ai changé de branche immédiatement, donc j'ai des bases mais ça s'oublie. Alors tout n'est pas parfaitement programmé (d'autant plus que j'ai pas mal de trucs qui sont fait à la volée en fonction d'un besoin précis dans l'urgence), mais c'est pas non plus complètement fait n'importe comment :)


Message édité par gooopil le 18-11-2010 à 15:53:28
n°2036943
Xxxaaavvv
Posté le 18-11-2010 à 16:13:20  profilanswer
 

Ok, effectivement :D
 
je reprend ton besoin si j'ai bien compris :
 
Dans Excel, t'as X nom de fichier
pour chaque nom de fichier tu va vérifier s'il existe dans les deux arborescences
selon les cas, tu remplis ton champs de feedback
 
(j'ai juste ?)
 
Question :
tes deux arborescences, t'y accède comment ?
 
 

n°2036957
gooopil
pfiew
Posté le 18-11-2010 à 16:35:07  profilanswer
 

C'est à peu près ça oui :) Y'a des opérations intermédiaires (copie des fichiers dans un répertoire précis indiqué dans Excel par exemple), et il peut y avoir moultitudes de fichiers Excel (cas extrême récent, plus de 1500 Excel ^^), mais en très résumé c'est ça :jap:
 
Je suis pas sûr de comprendre la question ;) Tentative de réponse donc :d  
Mon point d'entrée c'est un dossier, avec un sous répertoire pour chaque lot de fichiers, et après c'est une grosse arbo avec pleins de sous-dossiers (que je connais pas à l'avance bien sûr, ça serait trop facile ;) )


Message édité par gooopil le 18-11-2010 à 16:35:15
n°2036978
Xxxaaavvv
Posté le 18-11-2010 à 17:29:22  profilanswer
 

en fait dans la logique que je comprend pas ou est ce que tu as besoin de gros tableau de 10k éléments ?
 
d'ou ma question, l'arborescence, tu ne fait que la parcourir sans la stocker ?

n°2036980
gooopil
pfiew
Posté le 18-11-2010 à 17:31:20  profilanswer
 

Question de rapidité en fait. Si pour chaque fichier je dois me retaper toute l'arbo pour trouver s'il existe ou pas, ça prend trois plombes et ça pourris le réseau pour les autres utilisateurs.  
 
Alors qu'une fois stocké, j'ai juste à parcourir le tableau une fois p)ar fichier, et ça va beaucoup plus vite :)

mood
Publicité
Posté le 18-11-2010 à 17:31:20  profilanswer
 

n°2036981
Xxxaaavvv
Posté le 18-11-2010 à 17:34:20  profilanswer
 

HAAAA,
parceque tu ne sais pas ou peut être le fichier dans l'arborescence donc :D

n°2036983
gooopil
pfiew
Posté le 18-11-2010 à 17:43:51  profilanswer
 

Ben non, spa drôle sinon :d


Message édité par gooopil le 18-11-2010 à 17:43:59
n°2036990
Xxxaaavvv
Posté le 18-11-2010 à 18:01:40  profilanswer
 

t'as testé avec FileSystemeObject de faire un "FileExist" dans chaque dossier, et sous dossier ?
 
c'est si long que ça ?
 
 

n°2036993
gooopil
pfiew
Posté le 18-11-2010 à 18:07:28  profilanswer
 

J'utilise ça dans d'autres situations quand je sais où sont les fichiers, et c'est relativement long oui, surtout que les fichiers ne sont pas forcément en local sur mon poste :/

 

J'ai pas quantifié ça, mais je pense que le chargement de tous les noms de fichiers dans un tableau Vs le Fileexist est beaucoup plus long...


Message édité par gooopil le 18-11-2010 à 18:07:48
n°2036994
Xxxaaavvv
Posté le 18-11-2010 à 18:14:17  profilanswer
 

Bah ça dépent du nombre de sous dossiers, pas du nombre de fichiers
et tu t'arrete dès que t'as trouvé
Il n'y a que dans les cas ou c'est absent que tu te tape autant de fileexist que de sous dossiers...
 
a toi de voir :o


Message édité par Xxxaaavvv le 18-11-2010 à 18:14:49
n°2036995
gooopil
pfiew
Posté le 18-11-2010 à 18:20:51  profilanswer
 

Ouep, vais faire un test quand même histoire de comparer la rapidité d'exécution (mais demain, hein faut pas pousser, vais rentrer chez moi :d)

 

Merci pour la piste ;)

 

Et je me demande si la rapidité d'un FileExist est pas lié au nombre de fichiers dans un dossier tiens


Message édité par gooopil le 18-11-2010 à 18:22:11
n°2037089
Xxxaaavvv
Posté le 19-11-2010 à 09:30:09  profilanswer
 

Me rapelle plus les cours de système de fichier....
mais normalement, si c'est indexé correctement, ça ne devrait pas
c'est comme chercher un mot qui n'existe pas dans le dictionnaire :D
ça ne dépend pas du nombre de mot de ce dictionnaire.
 
 

n°2037099
gooopil
pfiew
Posté le 19-11-2010 à 10:27:39  profilanswer
 

Ça semblerait logique oui :)
 
Vais test tout ça si j'ai un peu de temps :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Taille max de tableau en VBA

 

Sujets relatifs
Regex tableau et array[VBA/ACCESS07] BDD vérouillée
Tableau de caractère et $...[VBA]Supprimer les lignes identiques rapidement...
Incompatibilité de type Erreur 13 VBA[VBA] Adopté le fonctionnement d'un fichier a un autre.
Catcher les erreurs VBA en PHPMacro pour compiler des fichiers en tableaux et generer les graphes
[VBA] Déclaration automatique de tableaux[VBA] Collage Variable après copie de tableau de taille variable
Plus de sujets relatifs à : Taille max de tableau en VBA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR