VBA - Integer et Long

mécano41

XLDnaute Accro
Bonjour à tous,

Il y a déjà longtemps j'avais lu à plusieurs reprises sur le net que, depuis EXCEL 2002 ou 2003, Excel transformait systématiquement les INTEGER en LONG et qu'il n'était donc plus nécessaire de faire la distinction (l'INTEGER étant conservé pour des raisons de compatibilité).

Donc je ne mettais que des LONG. Or, dans l'aide EXCEL 2010, je trouve toujours des exemples avec des INTEGER dedans.

Quelqu'un a-t-il connaissance de quelque chose sur ce sujet?

Merci d'avance.

Cordialement
 

mécano41

XLDnaute Accro
Re : VBA - Integer et Long

Bonsoir,

Merci pour ce document. J'avais déjà lu des documents relatifs aux variables ; mais il n'est jamais dit si, depuis une certaine version, EXCEL passe les INTEGER en LONG avant de calculer, ce qui est l'objet de ma question et dans celui-ci non plus ... ou alors je n'ai pas bien lu.

Cordialement
 

youky(BJ)

XLDnaute Barbatruc
Re : VBA - Integer et Long

Bonsoir,
Le plus simple est de faire un essai
Le maxi d'integer est 36767
et avec Long c'est 2 147 483 647
Private Sub CommandButton1_Click()
Dim x As Integer 'ou long pour pas planter
x = 32767 'le maxi en integer
MsgBox x
MsgBox x + 1 'ici on plante car dépassement de capacité
End Sub

Bref pour ma part je n'utilise jamais Option Explicit et déclare que les Boolean
Bruno
 

mth

XLDnaute Barbatruc
Re : VBA - Integer et Long

Bonjour le fil :)

Je ne suis certes pas d'une grande compétence en ce domaine, mais j'aurais tendance à être moins catégorique, pour avoir lu sur trois sites et non des moindres (myDearFriend, Developpez.com et le site msdn) des informations proches de celles évoquées par notre ami mécano41.

Extrait du site Ce lien n'existe plus:
Three data types in Microsoft® Visual Basic® for Applications (VBA) can represent integers, or whole numbers: the Integer, Long, and Byte data types. Of these, the Integer and Long types are the ones you are most likely to use regularly.
The Integer and Long data types can both hold positive or negative values. The difference between them is their size: Integer variables can hold values between -32,768 and 32,767, while Long variables can range from -2,147,483,648 to 2,147,483,647. Traditionally, VBA programmers have used integers to hold small numbers, because they required less memory. In recent versions, however, VBA converts all integer values to type Long, even if they are declared as type Integer. Therefore, there is no longer a performance advantage to using Integer variables; in fact, Long variables might be slightly faster because VBA does not have to convert them.
The Byte data type can hold positive values from 0 to 255. A Byte variable requires only a single byte of memory, so it is very efficient. You can use a Byte variable to hold an Integer value if you know that value will never be greater than 255. However, the Byte data type is typically used for working with strings. For some string operations, converting the string to an array of bytes can significantly enhance performance.

Quant à ne jamais déclarer option explicit ... je m'en mords les doigts à chaque fois que je commets cette négligeance. Quel que soit le site consulté les VBaîstes de référence le conseillent vivement cette option.

Voilà, au cas où cela pourrait aider ...

Bonne soirée à tous,

mth
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : VBA - Integer et Long

Bonsoir,
issu de

Type Integer ou type Long ?
Traditionnellement, les développeurs VBA utilisent le type Integer lorsque les valeurs à stocker le permettent, parce que ce type de données requiert moins de ressources mémoire que le type Long (c'est même la règle du jeu expliquée ci-dessus).
Toutefois, une information d'importance semble méconnue : aujourd'hui VBA convertit automatiquement en interne tous les éléments de type Integer en élément de type Long, et ce, même si la déclaration explicite est "As Integer". Il est donc devenu préférable aujourd'hui d'utiliser le type Long en lieu et place du type Integer pour accroître les perfomances du code. En fait, le traitement des variables de type Long est même devenu plus rapide car ce type de données n'a pas besoin d'être converti avant traitement !
A+
 

mth

XLDnaute Barbatruc
Re : VBA - Integer et Long

Re :)

Hello carcha :)

J'avais salué tout le monde dans mon premier post 23h22) , mais je crois que personne ne l'a vu (snifff) donc du coup bien évidemment je réitère un grand bonjour pour toi aussi :) :)

Bonne soirée à tous :) :)

m
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 159
Membres
103 140
dernier inscrit
gwendoline.renou@hotmail.