Enregistrer un tableau 2 d ou sur une feuille ?

vmatthieu

XLDnaute Occasionnel
Bonjour le forum,
peut être une question qui est stupide?

est t'il possible d'enregistrer dans un tableau d(x,y)et de retrouver ces valeurs après réouverture du fichier

si oui quelle est la méthode (je n'ai rien trouvé mais peut être mal cherché)

est ce qu'un tableau de 32000 lignes sur 10 colonnes est moins volumineux (si on peu l'enregistrer) qu'une feuille de 32000 lignes et 10 colonnes (ce serait logique que oui)

est ce qu'il faut moins de temps pour parcourir 32000 cellules dans un tableau que dans une feuille(je dirais oui aussi mais bon)

Merci de vos réponses(m^me si vous confirmez que la question est stupide....:confused:

bonne soirée
 

Dranreb

XLDnaute Barbatruc
Re : Enregistrer un tableau 2 d ou sur une feuille ?

Bonsoir.
peut être une question qui est stupide?
Non. Pas une seule dans le lot.
est t'il possible d'enregistrer dans un tableau d(x,y)et de retrouver ces valeurs après réouverture du fichier
Non. Strictement posé comme ça c'est totalement exclut. Un tableau est un espace de mémoire centrale volatile, il est nécessaire de l'enregistrer ailleurs sur le disque pour pouvoir le retrouver. Si le tableau est utilisé dans une macro Excel, la feuille Excel me parait le support le plus naturel, mais on pourrait aussi l'écrire dans un ficher indépendant.
si oui quelle est la méthode (je n'ai rien trouvé mais peut être mal cherché)
￾Étant posé qu'il faut passer par un fichier, voir les instructions Open, Get, Put, Print, Line Input, Close.
est ce qu'un tableau de 32000 lignes sur 10 colonnes est moins volumineux (si on peu l'enregistrer) qu'une feuille de 32000 lignes et 10 colonnes (ce serait logique que oui)
Oui, je suis convaincu qu'un fichier ne contenant que le tableau aurait une taille moindre que l'accroissement de taille correspondant d'un classeur.
est ce qu'il faut moins de temps pour parcourir 32000 cellules dans un tableau que dans une feuille(je dirais oui aussi mais bon)
Oui, dans des proportions monstrueuses. En fait un appel à Cells ou à Range prends un certain temps … pratiquement indépendant du nombre de valeurs de cellules transférées. Donc toujours transférer tout le tableau d'un seul coup: l'image de la propriété Value d'un Range de plusieurs cellules contigües est directement un tableau de Variant, toujours à 2 dimensions même pour une seul ligne ou une seule colonne.
Cordialement.
 
Dernière édition:

vmatthieu

XLDnaute Occasionnel
Re : Enregistrer un tableau 2 d ou sur une feuille ?

Bonjour le forum, Dranreb

merci de ces réponses claires.

Pense tu qu'il y a un réel intérêt (qui compense le temps nécessaire pour faire que cela fonctionne parce que je ne connais pas du tout les instructions que tu as cité) de faire passer donc mes informations qui sont contenues dans une feuille de mon classeur (qui contient des macros) dans un autre fichier (avec quel extension?)

et si c'est oui les choses compliquées commence .

Merci d'avance
bonne fin de journée
 

Dranreb

XLDnaute Barbatruc
Re : Enregistrer un tableau 2 d ou sur une feuille ?

Eh bien c'est non, surtout si les infos sont déjà rangées dans une feuille.
La seule chose à retenir, c'est que pour effectuer des traitements importants dessus il y grand intérêt à le charger en mémoire dans un tableau dynamique par un seul appel à la méthode Range, faire ce qu'il y a à faire, puis le décharger dans la feuille par un seul autre appel à la méthode Range. Ne surtout pas multiplier les Cells: c'est très pénalisant.
 

vmatthieu

XLDnaute Occasionnel
Re : Enregistrer un tableau 2 d ou sur une feuille ?

Bonsoir le forum,
Dranreb,merci du conseil, je réduis pratiquement le temps de traitement par deux.
bonne soirée
 

vmatthieu

XLDnaute Occasionnel
Re : Enregistrer un tableau 2 d ou sur une feuille ?

bonjour le forum, Dranreb
juste pour compléter le post, cette méthode de chargement bien simple (trouvé sur le net bien sur)

Dim Tblo()


With ActiveSheet.Range("a1").CurrentRegion
ReDim Tblo(.Rows.Count, .Columns.Count)
Tblo = .Value
End With

Pour finir cette discusion sur le coté "rapide", qu'elle est le plus rapide:

parcourir un tableau avec une boucle ou une feuille avec find ?

bonne fin de journée
 

Dranreb

XLDnaute Barbatruc
Re : Enregistrer un tableau 2 d ou sur une feuille ?

Bonjour.
Il y à des chances pour que la solution optimale soit encore ailleurs.
S'il y a à trouver une correspondance de tous les élément d'une table avec tous ceux d'une autre, il peut y avoir intérêt à utiliser un Dictionary. Ou effectuer des classement en mémoire (avec méthode efficace) pour que les éléments se retrouvent ensembles et qu'il y ait moins de boucles imbriquées. J'hésitais à le dire, la division par deux seulement du temps de traitement n'est pas à la hauteur de ce qu'on pouvait espérer.
Redim n'est pas nécessaire devant l'affectation, il est assumé.
 
Dernière édition:

vmatthieu

XLDnaute Occasionnel
Re : Enregistrer un tableau 2 d ou sur une feuille ?

bonsoit Dranreb,
juste pour finir la discussion (si tu as encore un peu de courage)

alors le plus rapide c'est un find ou une boucle (bien sur sur la même plage de recherche) ?

sinon pour le dictionnary ok, je vois par contre je ne vois pas du tout ce que tu as en tête quand tu dis

" effectuer des classement en mémoire (avec méthode efficace) pour que les éléments se retrouvent ensembles et qu'il y ait moins de boucles imbriquées"

Tu peux m"en dire un tout petit peu plus ? (en fin à moi et aux autres qui te liront)

merci d'avance et pour tes réponses précédentes
 

Dranreb

XLDnaute Barbatruc
Re : Enregistrer un tableau 2 d ou sur une feuille ?

Mais je ne sais pas quel est le moins mauvais, ça ne m'intéresse pas du moment que c'est mauvais, et ça dépend de trop de facteurs que je ne connais pas.
Il y a encore la possibilité d'affecter une même formule de type INDEX/EQUIV à toute une colonne d'un seule coup puis d'en figer la valeur en lui affectant sa propre Value. Là, plus de boucle du tout !
J'avais en tête des modules que j'ai écrit qui peuvent par exemple établir quasi instantanément même pour plusieurs milliers de lignes un dictionnaire arborescent, c'est à dire un dictionnaire de dictionnaires de dictionnaires de listes de numéros de lignes attachées à toutes les série d'arguments en cascades existantes dans certaines colonnes d'un tableau source, classées en ordre croissant à tous les niveaux.
À partir du moment où on sait parcourir deux listes dans leurs ordres respectifs d'un certain argument commun, il n'y a plus besoin de rechercher dans l'autre ce qu'on trouve dans la première, puis qu'on y est dans les deux ! on se borne à n'avancer que dans celles des 2 listes où le dernier argument s'y trouvait. On peut gagner un temps considérable du fait qu'on n'a plus de boucles imbriquées, mais une seule qui parcourt les deux listes en même temps.
Il serait temps de joindre un classeur pour que je puisse étudier la meilleure solution.
 

vmatthieu

XLDnaute Occasionnel
Re : Enregistrer un tableau 2 d ou sur une feuille ?

Bonjour Dranreb,
merci de ta réponse. Ma question était simplement d'ordre théorique ou "doctrinale". La solution actuelle me convient pour l'instant(ce qui explique que je n'ai pas joins de fichier malgré ta citation très explicite)

par contre ta solution pique ma curiosité, si tu as un bout de code à jeter sur le forum ,je suis preneur.

bonne fin de journée
 

Dranreb

XLDnaute Barbatruc
Re : Enregistrer un tableau 2 d ou sur une feuille ?

J'en avais jeté les bases ici, mais ce n'est plus à jour depuis longtemps.
Pour trouver des modules plus récents, chercher dans mes discussion, notamment celles où j'apporte des solutions aux problèmes de ComboBox liés ou en cascades.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas