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

declaration correcte

3 réponses
Avatar
J.O.
Salut,
Pour acces,
Je veux declarer des valeurs (figées) d'un tableau dans un module qui ne
contient que des declarations.
Dans d'autres modules, les fonctions feront appel à une ou plusieurs infos
de ce tableau.
Lorsque je compile, j'ai un message d'erreur :
ERREUR DE COMPILATION: INSTRUCTION INCORRECTE EN DEHORS DE LA PROCEDURE
Ci-joint la copie de mes premieres lignes de code
Dim table(6 ,3 ) As String
table(0, 0) = "T_Data"
table(0, 1) = "Data_01"
Merci d'avance pour vos lanternes,
J.O.

3 réponses

Avatar
Jean-marc
J.O. wrote:
Salut,
Pour acces,
Je veux declarer des valeurs (figées) d'un tableau dans un module qui
ne contient que des declarations.
Dans d'autres modules, les fonctions feront appel à une ou plusieurs
infos de ce tableau.
Lorsque je compile, j'ai un message d'erreur :
ERREUR DE COMPILATION: INSTRUCTION INCORRECTE EN DEHORS DE LA
PROCEDURE Ci-joint la copie de mes premieres lignes de code
Dim table(6 ,3 ) As String
table(0, 0) = "T_Data"
table(0, 1) = "Data_01"
Merci d'avance pour vos lanternes,
J.O.



Hello,

Il est interdit de faire des affectations en dehors d'une procédure ou
fonction.

Ce qu'il faut faire:

Placer tes initialisations dans une procédure du genre "Init" et faire en
sorte que ta procédure init
soit appelée avant toute autre opération.

Sub Initialisation_variables()
table(0,0) = "T_Data"
table(0,1) = "Data_01"
End Sub

Si c'est difficile de faire un appel à la sub Initialisation_varaibles() une
seule fois,
tu peux l'appeler de façon systématique mais en mettant en place une
protection
pour t'assurer que les init elles même ne se feront qu'une seule fois, en
plaçant
judicieusement un petit watch_dog dans ta Sub, comme ceci:

Sub Initialisation_variables()

Static is_init_done As Boolean

If Not (is_init_done) Then
is_init_done = True
Table(0, 0) = "T_Data"
Table(0, 1) = "Data_01"
End If
End Sub


Tu peux maintenant l'appeler aussi souvent que tu veux, l'init des
variables ne sera faite qu'une seule fois, grace à la variable
statique is_init_done.


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
J.O.
Oui, j'avais penser à faire le call de initialisation variable,
mais ce qui m'embete c'est de devoir le faire, parfois pour une seule
valeur, qui me sert de verification.
Par contre, pour la deuxieme soluce, quel avantage y a t-il de le verouiller?
Du moment que les valeurs sont ecritent en dur, elles ne changerons pas.
Ou bien mes connaissances sont-elles trops courte!?

Une remarque, mon premier essai etait avec la fonction CONST, mais là aussi,
il y a plantage.

En tout cas, merci de l'info, à+
J.O.

"Jean-marc" a écrit :

J.O. wrote:
> Salut,
> Pour acces,
> Je veux declarer des valeurs (figées) d'un tableau dans un module qui
> ne contient que des declarations.
> Dans d'autres modules, les fonctions feront appel à une ou plusieurs
> infos de ce tableau.
> Lorsque je compile, j'ai un message d'erreur :
> ERREUR DE COMPILATION: INSTRUCTION INCORRECTE EN DEHORS DE LA
> PROCEDURE Ci-joint la copie de mes premieres lignes de code
> Dim table(6 ,3 ) As String
> table(0, 0) = "T_Data"
> table(0, 1) = "Data_01"
> Merci d'avance pour vos lanternes,
> J.O.

Hello,

Il est interdit de faire des affectations en dehors d'une procédure ou
fonction.

Ce qu'il faut faire:

Placer tes initialisations dans une procédure du genre "Init" et faire en
sorte que ta procédure init
soit appelée avant toute autre opération.

Sub Initialisation_variables()
table(0,0) = "T_Data"
table(0,1) = "Data_01"
End Sub

Si c'est difficile de faire un appel à la sub Initialisation_varaibles() une
seule fois,
tu peux l'appeler de façon systématique mais en mettant en place une
protection
pour t'assurer que les init elles même ne se feront qu'une seule fois, en
plaçant
judicieusement un petit watch_dog dans ta Sub, comme ceci:

Sub Initialisation_variables()

Static is_init_done As Boolean

If Not (is_init_done) Then
is_init_done = True
Table(0, 0) = "T_Data"
Table(0, 1) = "Data_01"
End If
End Sub


Tu peux maintenant l'appeler aussi souvent que tu veux, l'init des
variables ne sera faite qu'une seule fois, grace à la variable
statique is_init_done.


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/





Avatar
jean-marc
"J.O." wrote in message
news:

Hello,

Oui, j'avais penser à faire le call de initialisation variable,
mais ce qui m'embete c'est de devoir le faire, parfois pour une seule
valeur, qui me sert de verification.



Oui mais c'est quand même plus propre de faire ainsi.

Par contre, pour la deuxieme soluce, quel avantage y a t-il de le
verouiller?
Du moment que les valeurs sont ecritent en dur, elles ne changerons pas.
Ou bien mes connaissances sont-elles trops courte!?



L'intérêt de ce genre de manip, c'est de s'assurer qu'on ne fait les init
qu'une seule
fois, dans le cas ou les valeurs d'init sont susceptibles de changer.

Dans ton cas comme ce sont des valeurs de controle qui ne changent jamais,
pas d'intérêt particulier.

Une remarque, mon premier essai etait avec la fonction CONST, mais là
aussi,
il y a plantage.



Ca doit être une erreur de syntaxe, car const est la bonne façon de faire
ici:

Public const ABCDEFG as String = "COUCOU"



--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/