Déclaration de variable
Le
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
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
Vous voulez dire : si on ne déclare pas le TYPE d'une variable alors
par défaut c'est Variant (un bidule qui peut stocker n'importe quel
type).
Si on ne déclare pas la variable, Excel la déclare automatiquement en
variant seulement si Option Explicit n'est pas donné au niveau du
module).
Non c'est le contraire: Dim Variable est équivalent à Private Variable
(quel que soit l'Option Private Module éventuellement donnée : cette
option se réfère au projet, et non au module)
Bon dimanche.
c'est le contraire, voici l'extrait de l'aide
Si l'instruction Option Explicit apparaît dans un module, vous devez déclarer
explicitement toutes
les variables à l'aide des instructions Dim, Private, Public, ReDim ou Static.
Si vous tentez d'utiliser un nom de variable non déclarée, une erreur se produit
à la compilation.
Si vous n'utilisez pas l'instruction Option Explicit,
toutes les variables non déclarées sont de type Variant
à moins qu'un type par défaut soit précisé à un autre endroit à l'aide d'une
instruction Deftype.
pour Public Sub
Public: Facultatif. Indique que la procédure Sub est accessible à toutes les
autres procédures dans l'ensemble des modules.
isabelle
Le 2015-03-01 05:47, Jacquouille a écrit :
variant, non?
Il faut préciser : Dim c as .... non ?
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 .....) ?
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mcv8c0$6f9$
Salut Jacques,
c'est le contraire, voici l'extrait de l'aide
Si l'instruction Option Explicit apparaît dans un module, vous devez
déclarer
explicitement toutes
les variables à l'aide des instructions Dim, Private, Public, ReDim ou
Static.
Si vous tentez d'utiliser un nom de variable non déclarée, une erreur se
produit
à la compilation.
Si vous n'utilisez pas l'instruction Option Explicit,
toutes les variables non déclarées sont de type Variant
à moins qu'un type par défaut soit précisé à un autre endroit à l'aide d'une
instruction Deftype.
pour Public Sub
Public: Facultatif. Indique que la procédure Sub est accessible à toutes les
autres procédures dans l'ensemble des modules.
isabelle
Le 2015-03-01 05:47, Jacquouille a écrit :
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Option Explicit
et
Dim n, c
ou laisser les 2
isabelle
Le 2015-03-01 10:25, Jacquouille a écrit :
Si j'écris Dim c
Excel attribue quel type de variable à c ?
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mcvcb5$mgf$
il faut enlever les 2
Option Explicit
et
Dim n, c
ou laisser les 2
isabelle
Le 2015-03-01 10:25, Jacquouille a écrit :
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
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 :
Le 2015-03-01 10:58, isabelle a écrit :
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 :
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
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" mcvh5l$b1q$
---
L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast.
http://www.avast.com
Le problème n'est pas tellement la mémoire, vu qu'Excel est toute façon
fait pour tourner sur des gros micropocesseurs.
Le problème, ce sont les /overheads/ : à chaque fois que vous accédez à
la valeur d'un type variant, il faut décortiquer le Variant pour accéder
aux données (qui sont elles, toujours typées).
En plus de cela il faut tenir compte du ByRef ou du ByVal (une ineptie
de microsoft, ByRef n'existant pas en informatique).
Donc si vous avez un Variant qui contient un tableau de Variants, le
problème n'est pas la mémoire, mais la vitesse de calcul. Une des
raisons pour lesquelles VBA est si lent.
Cordialement.