Nombre d'octets mémoire d'une expression

  • Initiateur de la discussion Initiateur de la discussion job75
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

job75

XLDnaute Barbatruc
Bonjour le forum,

Quand dans un problème de formules on a le choix entre plusieurs solutions, il peut être intéressant de connaître le nombre d'octets de mémoire occupés par chacune.

Ci-joint un fichier permettant de faire ce calcul.

On utilise la plage A1:A1024 (avec des formules légèrement différentes les unes des autres) car la taille d'un fichier varie par paliers de 512.

Quelques résultats :

Valeur logique => 1 octet

Nombre entier court => 2 octets

Texte "" => 2 octets

Référence (B1) => 4 octets

Référence (B1:B2) => 8 octets

Référence (Feuil2!A1) => 6 octets

1+1 => 6 octets, donc opérateurs + - * / ^ & => 2 octets

(1) => 3 octets donc () => 1 octet

REPT(; ) => 4 octets

SI(;;"") => 20 octets, etc etc...

A+
 

Pièces jointes

Dernière édition:
Re : Nombre d'octets mémoire d'une expression

Bonjour le forum,

Pour les curieux, voici pourquoi j'utilise une plage de 1024 cellules (A1:A1024) plutôt que 512.

Lors de leur 1ère occurrence, certaines expressions : fonctions volatiles MAINTENANT AUJOURDHUI DECALER INDIRECT, références externes, Noms pas définis, prennent des octets supplémentaires.

Pour cette unique raison, la taille du fichier peut prendre une tranche supplémentaire de 512 octets.

Pour se rendre compte de ce phénomène, il faut utiliser une autre méthode : faire travailler le fichier à la limite d'une tranche de 512 octets.

On peut aussi utiliser un fichier Excel 4.0, mais les résultats sont différents parfois : une référence prend 3 octets au lieu de 4.

A+
 
Re : Nombre d'octets mémoire d'une expression

Bonjour à tous,

Correctif à mon post précédent.

Pour les fonctions volatiles, il s'agit de la 1ère occurrence dans une même cellule.

Dans ce cas là, la taille du fichier ne peut pas augmenter d'une tranche supplémentaire de 512 octets.

Mais c'est quand même intéressant :

MAINTENANT() => 6 octets

AUJOURDHUI() => 6 octets

MAINTENANT()-AUJOURDHUI() => 10 octets donc AUJOURDHUI() => 2 octets

A+
 
Re : Nombre d'octets mémoire d'une expression

Bonjour job75,

J'espère que ton anniversaire récent à été excellent. J'en profite pour te souhaiter un Très bon anniversaire et de très nombreux autres après.

Ton travail est très intérressant et j'avoue que, si dans les années 80 c'était chose courante que la chasse aux octets, aujourd'hui on n'y pense plus guère voire pas du tout.

Tu nous apportes, là, la base d'un nouveau joujou, avec celui de ROGER et pierrejean entre autres sur la rapidité de tel ou tel code.

Je vais m'y coller à chaque fois que possible.

Bonne journée et vacances en Normandie.

Jean-Pierre
 
Re : Nombre d'octets mémoire d'une expression

Bonjour jeanpierre, le forum,

Retour de Normandie, merci jeanpierre.

En effet le comptage des octets ne présente maintenant qu'un seul intérêt (la recherche de la rapidité étant bien sûr le critère n° 1) : choisir la meilleure programmation.

J'utilisais ce critère quand je faisais des macros Excel 4.0 (il y a encore 3 ans), pour les optimiser.

Avec VBA on peut aussi aller dans cette direction, ce qui éviterait souvent des macros bien lourdes...

A+
 
Re : Nombre d'octets mémoire d'une expression

Bonsoir Staple 🙂

Regarde bien mes explications sur le fichier.

Note bien le nombre d'octets (Taille) du fichier tel qu'il est (clic droit sur l'icône du fichier-Propriétés) et entre ce nombre en F15.

Même chose en F17 après entrée de l'expression dans la formule en colonne A et enregistrement .

A+
 
Re : Nombre d'octets mémoire d'une expression

Re Staple,

Non pas dans un livre, comme je le disais je faisais ça sur des fichiers Excel 4.0 (dont la taille ne saute pas par tranche de 512 octets).

A la demande d'hoerwind je viens juste d'imaginer dans ce fil une méthode pour Excel 97/2003 (qui doit marcher aussi je pense pour Excel 2007).

Edit : sur mon fichier un nombre décimal non signé doit prendre en effet 8 octets (je n'ai pas testé) soit 64 bits.

A+
 
Dernière édition:
Re : Nombre d'octets mémoire d'une expression

Re,

Comme dit dans mon 1er post, les formules en colonne A sont toutes différentes :

Code:
=NBVAL([COLOR="Red"]1[/COLOR];)
=NBVAL([COLOR="Red"]2[/COLOR];)
=NBVAL([COLOR="Red"]3[/COLOR];)
etc...

C'est indispensable, autrement Excel (97/2003) considèrerait que c'est une seule et même formule et cette méthode ne fonctionnerait pas 🙂

Pour créer ces formules différentes, entrer en A1 la formule :

Code:
=NBVAL(C1;)

et la recopier jusqu'en A1024 (Ctrl+Entrée par exemple)

Puis par la commande Remplacer, supprimer la lettre C...

A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 VBA sur outlook
Réponses
14
Affichages
1 K
Réponses
12
Affichages
1 K
Retour