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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
GL
Le #26341444
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

isabelle
Le #26341474
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

Jacquouille
Le #26341479
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
isabelle
Le #26341484
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

Jacquouille
Le #26341483
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
isabelle
Le #26341482
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

isabelle
Le #26341481
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

Jacquouille
Le #26341501
Œ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
Patrick
Le #26341505
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" 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
GL
Le #26341514
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.
Publicité
Poster une réponse
Anonyme