Variable persistante

D

Delcourt

Guest
Salut à tous,

Comment une variable peut-elle garder sa valeur dans toute l'application (même en changeant de module ou de procédure).

Merci
 
L

LaurentTBT

Guest
Bonsoir à tous

Il faut définir la variable en haut d'un module standart (c'est-à-dire pas dans une feuille de code d'un userform, où de Thisworkbook, où d'une feuille de calcul excel) avant de débuter les procédures:

Dim TaVariable as ... si tu n'utilises cette variable que dans ce module,

Public TaVariable as... si tu l'utilises aussi ailleurs.

Bonne soirée.
Laurent.
 
D

Delcourt

Guest
J'ai essayé mais n'y arrive pas.
Dans l'exemple joint, en cliquant sur OK la valeur de la variable public "impr" est 1 mais il me met 0!!!!

Merci pour ton aide.
 

Pièces jointes

  • Bureau.zip
    7.1 KB · Affichages: 25
  • Bureau.zip
    7.1 KB · Affichages: 31
  • Bureau.zip
    7.1 KB · Affichages: 26
L

LaurentTBT

Guest
Ben oui, tu as laissé ta déclaration dans la feuille de code de ton userform!
Il faut impérativement qu'elle soit dans un module standart
Donc: insère un module (clic droit dans l'explorateur de projet, puis insérer, puis moduleEt dans ce module, tu mets tout simplement l'unique ligne:
Public impr As Integer (que tu supprimes de ton code du userform, bien sûr!)

Voilà, c'est bête, mais c'est comme ça!

Oups, je vais un peu vite: tu l'avais aussi mise dans ThisWorkbook. enlève là de là aussi.
D'ailleurs, mets toute ta procédure "test" dans le module créé, car il n'a rien à voir avec "ThisWorkbook". En général, les procédures indépendantes, on les mets dans des modules standarts.

@ +
Laurent.
 
L

LaurentTBT

Guest
Et oui, Pascal

Comme je viens de dire à Jean-Marie sur le chat, ces histoires de portée et de durée de vie des variables, c'est pas évident au début!

Et pour l'histoire de Static dont Jean-Marie a parlé:
Static ne s'utilise qu'au niveau d'une procédure, et permet de conserver la valeur de la variable définie Static lorsqu'on rappelle une autre fois cette procédure. Mais on ne peut utiliser cette variable static dans d'autres procédures, même du même module.

Voilà, j'espère que c'est plus clair.

Bye
Laurent.
 

Discussions similaires

Statistiques des forums

Discussions
314 164
Messages
2 106 615
Membres
109 642
dernier inscrit
dudu51