Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déclaration de variable

15 réponses
Avatar
Jacquouille
Bonjour
Je viens de recevoir un filet de macro qui commence comme ceci :
----------------
Option explicit
Public Sub TrucMachin()
Dim n, c
--------------
Le fait de se servir de Dim ne qualifie pas les variables.
Ma question: A quoi sert cette phrase? Si on ne déclare pas une var, Excel
ne la déclare-t-il pas automatiquement en variant ?
idem pour public. Sans cette mention, n'est-ce pas automatiquement "Public"
?

Merci et bon dimanche
Jacques


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com

5 réponses

1 2
Avatar
Jacquouille
Si, je déclare tout ... mais c'est très variable. -)

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Patrick" a écrit dans le message de groupe de discussion :
mcvhsc$e9h$

de toute manière, "Option explicit" c'est bien de le mettre, ça évite de
mettre 2 x la même variable dans un code, ce qui n'est jamais top :)

et tu ne déclares pas tout toi ?
je m'en vais de ce pas en parler à mon contrôleur...

P.



"Jacquouille" a écrit dans le message de news:
mcvh5l$b1q$
Œuf corse, aurait dit feu notre JPS

Merci Isabelle et bonne fin de WE

Jacques.



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mcvd0j$ord$

oups : "par defaut" of course

Le 2015-03-01 10:58, isabelle a écrit :
c'est le type variant par default, donc pas nécessaire d'écrire Dim c
mais si tu mets Option Explicit t'as pas le choix de mettre Dim c
isabelle

Le 2015-03-01 10:52, Jacquouille a écrit :
Bon, je pose la question autrement.
Si j'écris Dim c
Excel attribue quel type de variable à c ?



Jacquouille







---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com






---
L'absence de virus dans ce courrier electronique a ete verifiee par le
logiciel antivirus Avast.
http://www.avast.com


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
MichD
'----------------------------------------------
Ceci dit, avec les bécanes actuelles et leur puissance de mémoire, est-il
encore si important de déclarer le type de la variable (en variant ou en
entier .....) ?
'----------------------------------------------


Exécute ce code comme il est écrit et par la suite met une apostrophe
devant les lignes déclarant les "Dim" de chacune des lignes et
exécute à nouveau la procédure.

Observe la différence du temps d'exécution!

Cet exercice fut proposé par John Walkerbach.

(en passant, pour les nouvelles versions d'Excel, depuis 2007), on obtient
un
meilleur résultat en remplaçant le type "Interger" par le type "Long".

À la limite, le fait de déclarer une variable comme ceci : Dim Toto As
Variant
est supérieur en terme d'exécution que de ne pas déclarer le type de la
variable,
même si dans ce dernier cas, le type attribuer est "Variant".

Pour moi, la qualité première de l'"option Explicit" dans le haut d'un
module permet
de repérer facilement les erreurs d'orthographe que l'on pourrait faire en
écrivant
le texte d'une variable, car Excel le signale automatiquement. Imagine une
erreur
d'orthographe dans une longue procédure complexe et le temps qu'il faut pour
se rendre
compte que le résultat n'est pas au rendez-vous à cause justement d'une
erreur d'orthographe
à un endroit dans le code d'une variable! Option Explicit le souligne
automatiquement!

'----------------------------------------------
Sub TimeTest()

Dim A As Integer, B As Integer, C As Integer
Dim x As Integer, y As Integer
Dim i As Integer, j As Integer
Dim StartTime As Date, EndTime As Date

StartTime = Timer

x = 0
y = 0
For i = 1 To 5000
For j = 1 To 1000
A = x + y + j
B = y - x - i
C = x - y - i
Next j
Next i

EndTime = Timer

MsgBox EndTime - StartTime

End Sub
'----------------------------------------------
Avatar
GL
Le 01/03/2015 21:03, MichD a écrit :
'----------------------------------------------
Ceci dit, avec les bécanes actuelles et leur puissance de mémoire, est-il
encore si important de déclarer le type de la variable (en variant ou en
entier .....) ?
'----------------------------------------------


Exécute ce code comme il est écrit et par la suite met une apostrophe
devant les lignes déclarant les "Dim" de chacune des lignes et
exécute à nouveau la procédure.

Observe la différence du temps d'exécution!

Cet exercice fut proposé par John Walkerbach.



Pas mal merci ! Où l'on voit que le temps dépend du type
de variable, pas du fait qu'elle soit déclaré ou pas :

Supprimez les mentions "As ..." tout en conservant les
déclarations:

Dim A, B, C, x, y, i, j, StartTime, EndTime

(sous entendu As Variant) et vous aurez le même temps d'exécution.

Le problème vient donc bien des overheads introduits par la gestion
des Variants.

Bonne soirée.


'----------------------------------------------
Sub TimeTest()

Dim A As Integer, B As Integer, C As Integer
Dim x As Integer, y As Integer
Dim i As Integer, j As Integer
Dim StartTime As Date, EndTime As Date

StartTime = Timer

x = 0
y = 0
For i = 1 To 5000
For j = 1 To 1000
A = x + y + j
B = y - x - i
C = x - y - i
Next j
Next i

EndTime = Timer

MsgBox EndTime - StartTime

End Sub
'----------------------------------------------
Avatar
Jacquouille
Voilà qui est au moins très Explicite.
Je ne sais pas pourquoi, mais chaque fois que l'on me cite John Walkenbach,
je pense musique et à Jean Sébastien Bach ....

0,265625 <> 0,875 soit une grosse demi-seconde de différence.
pfffffft, même pas le temps de boire un coup. -))

Merci Denis pour cette bonne explication.
Et surtout, bonne fin de WE
Jacques.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
mcvrb4$oei$

'----------------------------------------------
Ceci dit, avec les bécanes actuelles et leur puissance de mémoire, est-il
encore si important de déclarer le type de la variable (en variant ou en
entier .....) ?
'----------------------------------------------


Exécute ce code comme il est écrit et par la suite met une apostrophe
devant les lignes déclarant les "Dim" de chacune des lignes et
exécute à nouveau la procédure.

Observe la différence du temps d'exécution!

Cet exercice fut proposé par John Walkerbach.

(en passant, pour les nouvelles versions d'Excel, depuis 2007), on obtient
un
meilleur résultat en remplaçant le type "Interger" par le type "Long".

À la limite, le fait de déclarer une variable comme ceci : Dim Toto As
Variant
est supérieur en terme d'exécution que de ne pas déclarer le type de la
variable,
même si dans ce dernier cas, le type attribuer est "Variant".

Pour moi, la qualité première de l'"option Explicit" dans le haut d'un
module permet
de repérer facilement les erreurs d'orthographe que l'on pourrait faire en
écrivant
le texte d'une variable, car Excel le signale automatiquement. Imagine une
erreur
d'orthographe dans une longue procédure complexe et le temps qu'il faut pour
se rendre
compte que le résultat n'est pas au rendez-vous à cause justement d'une
erreur d'orthographe
à un endroit dans le code d'une variable! Option Explicit le souligne
automatiquement!

'----------------------------------------------
Sub TimeTest()

Dim A As Integer, B As Integer, C As Integer
Dim x As Integer, y As Integer
Dim i As Integer, j As Integer
Dim StartTime As Date, EndTime As Date

StartTime = Timer

x = 0
y = 0
For i = 1 To 5000
For j = 1 To 1000
A = x + y + j
B = y - x - i
C = x - y - i
Next j
Next i

EndTime = Timer

MsgBox EndTime - StartTime

End Sub
'----------------------------------------------


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
Patrick
3 x plus rapide sur mon vieux PC 2Ghz :) avec la déclaration des variables

winXP et XL2007

Patrick


"MichD" a écrit dans le message de news:
mcvrb4$oei$
'----------------------------------------------
Ceci dit, avec les bécanes actuelles et leur puissance de mémoire, est-il
encore si important de déclarer le type de la variable (en variant ou en
entier .....) ?
'----------------------------------------------


Exécute ce code comme il est écrit et par la suite met une apostrophe
devant les lignes déclarant les "Dim" de chacune des lignes et
exécute à nouveau la procédure.

Observe la différence du temps d'exécution!

Cet exercice fut proposé par John Walkerbach.

(en passant, pour les nouvelles versions d'Excel, depuis 2007), on obtient
un
meilleur résultat en remplaçant le type "Interger" par le type "Long".

À la limite, le fait de déclarer une variable comme ceci : Dim Toto As
Variant
est supérieur en terme d'exécution que de ne pas déclarer le type de la
variable,
même si dans ce dernier cas, le type attribuer est "Variant".

Pour moi, la qualité première de l'"option Explicit" dans le haut d'un
module permet
de repérer facilement les erreurs d'orthographe que l'on pourrait faire en
écrivant
le texte d'une variable, car Excel le signale automatiquement. Imagine une
erreur
d'orthographe dans une longue procédure complexe et le temps qu'il faut
pour se rendre
compte que le résultat n'est pas au rendez-vous à cause justement d'une
erreur d'orthographe
à un endroit dans le code d'une variable! Option Explicit le souligne
automatiquement!

'----------------------------------------------
Sub TimeTest()

Dim A As Integer, B As Integer, C As Integer
Dim x As Integer, y As Integer
Dim i As Integer, j As Integer
Dim StartTime As Date, EndTime As Date

StartTime = Timer

x = 0
y = 0
For i = 1 To 5000
For j = 1 To 1000
A = x + y + j
B = y - x - i
C = x - y - i
Next j
Next i

EndTime = Timer

MsgBox EndTime - StartTime

End Sub
'----------------------------------------------






---
L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast.
http://www.avast.com
1 2