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

10 réponses

1 2
Avatar
GL
Le 01/03/2015 11:47, Jacquouille a écrit :
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 ?



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).

idem pour public. Sans cette mention, n'est-ce pas automatiquement
"Public" ?



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)


Merci et bon dimanche



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

Avatar
isabelle
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 :
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

Avatar
Jacquouille
OK,mais le fait d'écrire: Dim c ----> c est automatiquement classé comme
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 :
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





---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
isabelle
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 :
OK,mais le fait d'écrire: Dim c ----> c est automatiquement classé comme
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 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 :
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





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

Avatar
Jacquouille
Bon, je pose la question autrement.
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 :
OK,mais le fait d'écrire: Dim c ----> c est automatiquement classé comme
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 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 :
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





---
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 électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
isabelle
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

Avatar
isabelle
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

Avatar
Jacquouille
Œ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
Avatar
Patrick
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
Avatar
GL
Le 01/03/2015 16:25, Jacquouille a écrit :
OK,mais le fait d'écrire: Dim c ----> c est automatiquement classé
comme 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 .....) ?



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.
1 2