Conserver en mémoire une variable dans une macro

Magic_Doctor

XLDnaute Barbatruc
Re bonjour,

Je suis curieux de voir comment l'on peut résoudre ce problème en apparence fort simple.

Sur ma feuille se trouve une cellule qui, quand on modifie son contenu, déclenche une macro événementielle se trouvant dans le module de la feuille. Lorsque son contenu est différent de "cellule vide", dans une cellule de la feuille apparaît la valeur "0" ; quand le contenu est vide, la valeur "1".
Les valeurs "1" ou "0" sont par la suite récupérées ailleurs dans la même macro (qui gère toutes les cellules de la feuille qui déclenchent un événement quand on modifie leur contenu) et qui évidemment réagira différemment suivant la valeur.
Plutôt que de devoir passer par une cellule sur la feuille, ne pourrait-on pas faire en sorte que la variable "1" ou "0" soit gardée en mémoire dans la macro et ainsi être récupérée ?

Voici, très schématiquement, comment se présente la macro :

If Not Application.Intersect(Target, [UXvsUY2]) Is Nothing Then
.
.
.
If [UXvsUY2].Value = "" Then
[OnlyUX2].Value = 1
Else
[OnlyUX2].Value = 0
End If
.
.
.
End If

"UXvsUY2" étant la cellule qui quand elle est vide --> "1" et non vide --> "0"
"OnlyUX2" étant le nom de la cellule dans la feuille qui récupère les valeurs "1" ou "0".

Une autre cellule (en fait il y en a plusieurs) déclenchant une macro événementielle qui réagira différemment suivant la valeur de la cellule "OnlyUX2" :

If Not Application.Intersect(Target, [NbUXWanted2]) Is Nothing Then
.
.
.
If [OnlyUX2].Value = 0 Then
.
.
.
Else
.
.
.
End If
.
.
.
End If

Fatalement, il faut, je pense, se débrouiller pour que la valeur "1" ou "0" se trouve en début de procédure afin qu'elle soit récupérée lors d'un nouvel événement.
 

CBernardT

XLDnaute Barbatruc
Re : Conserver en mémoire une variable dans une macro

Bonjour Magic_Doctor,

Il est possible de garder une valeur en mémoire en passant par une variable dite Public : Instruction utilisée au niveau module pour déclarer des variables publiques et attribuer de l'espace de stockage.

Exemple à placer dans un module normal :

Public Number As Integer

Sub DonnerValeur ()
Range("A1") = 100
Number = Range("A1")
End Sub

Sub RetouverValeur ()
Range("B1") = Number
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 839
Messages
2 092 700
Membres
105 511
dernier inscrit
karimdauphins