VBA taille en octet d'un range

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

Je cherche à savoir la taille d'enregistrement d'une variable déclaré range.

pour un byte = 1 octet
un integer = 2 octets
une date = 8 octets
....etc
un range = ?? octets

d'avance merci pour vos réponses j'ai rien trouvé dans l'aide ou pas su chercher.

salut
 

mutzik

XLDnaute Barbatruc
Salut André,

Je ne sais plus ou j'ai lu cela, mais par défaut à l'ouverture, chaque cellule a une taille nulle

Ce n'est que quand tu y mets une info qu'excel évalue cette info et lui assigne une taille suivant le type d'info. La taille en octet de ton range devient alors très aléatoire suivant qu'il y a beaucoup de texte ...
 

Bricofire

XLDnaute Impliqué
Bonjour Hervé, Mutzik, José, :)

D'après 'VBA Excel 2000 - éditions ENI (nantais) )Une Variant requière 16 octets pour les nombres et 22 octets plus la longueur de chaîne pour les caractères...
Sinon pour moi, une range, c'est une variable objet, à ce niveau voilà ce qu'en dit l'aide VBA :

Les variables de type Object sont stockées sous la forme d'adresses 32 bits (4 octets) qui font référence à des objets. L'instruction Set permet d'affecter une référence d'objet à une variable déclarée comme Object.

Note Une variable déclarée comme Object est suffisamment flexible pour contenir une référence à n'importe quel type d'objet, mais la liaison à l'objet désigné par la variable est toujours tardif (liaison au moment de l'exécution). Pour obtenir une liaison précoce (liaison au moment de la compilation), attribuez la référence d'objet à une variable déclarée avec un nom de classe spécifique.


Donc, au risque du ZOP :whistle: ,mais logiquement... peut-on en conclure qu'une variable Range ne contient en fait jamais la valeur de la cellule (logique) mais toujours la référence de celle-ci et va chercher la valeur quand on invoque la propriété voulue, donc une range ferait 4 octets... :unsure:

Bonne journée à tous,

Brico
édition = orthographe + majuscule aux prénoms..:whistle:

11:52

Message édité par: bricofire, à: 27/03/2006 11:54
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir le fil, le Forum,

Les questions de mon ami Hervé sont à la hauteur de ses réponses, c'est à dire toujours très instructives ! :)

Pour ma part, je serais plutôt sur la même voie que l'ami Bricofire.

Je viens de faire une recherche sur le net et j'ai trouvé ce document très intéressant qui tourne un peu autour de ce sujet (fichier pdf, voir les pages 1 à 3) : Ce lien n'existe plus. Ce qui semble démontrer que déterminer le 'poids' d'un objet Range est loin d'être une démarche aisée...

Cordialement,
 

Bricofire

XLDnaute Impliqué
Bonsoir à tous, :)

Merci Didier mDF, je vais encore avoir mal à la tête vu la langue employée :) , mais bon vu que c'est de l'informatique, c'est compréhensible :silly: , comme quoi quand on veut se faire chauffer les cellules (grises), pour ceux que celles d'Excel ne laissent pas froids, y'a de quoi faire :)

Bonne nuit,

Brico
 

Ti_

Nous a quitté
Repose en paix
Salut
Et pour ajouter un peu à la confusion, je préciserai qu'un Range représente une collection et non pas un simple objet (on peut s'en persuader en se rappelant qu'on parcourt cette collection en écrivant 'For Each Cel in Plage' par exemple)

José, fais attention, tu confonds le type de paramètres passés à certaines méthodes (qui peuvent être des Variant etc...) et la définition d'un objet lui-même.
 

Bricofire

XLDnaute Impliqué
re tout le monde, :)

Vi, super intéressant le lien de Didier mDF, digne d’un barbatruc, :) comme le souligne Ti, rien n’est simple, du coup ça nous amène précisément à faire le distinguo entre une variable Range (variable objet source du fil) et l’objet lui même :) .. logique.
N’empêche que je vais bien m’amuser avec « =INFO('memused') », c’est encore mieux que le timer pour le fun :silly:

Be aware restera dans les mémoires.... ;)

Bonne journée à tous,

Brico
 

Discussions similaires

Réponses
28
Affichages
983

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87