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

The question du dimanche .... changement de variables (vba)

3 réponses
Avatar
Alfred WALLACE
bon dimanche ...=E7=E0 caille meme dans le sud de la dr=F4me ...gla gla
gla ...

ben, justement,
je me disais, si, de la m=EAme fa=E7on qu'il y a des =E9vennements
pour les contr=F4les des userforms, est ce qu'il serait possible
de cr=E9er un evennement lorsqu'une variable est modifi=E9e ?

mici

Jos=E9

3 réponses

Avatar
michdenis
Bonjour,

Bien sûr. En utilisant ceci. Habituellement, on utilise
ceci dans des modules de classe mais on peut très bien
s'en servir dans un module standard.

IMPORTANT: Les variables doivent avoir le même type selon
leur contenu...

Copie ce qui suit dans un module standard :

'Déclaration de la variable dans le haut du module
Dim MaVar As Integer

'------------------------------------
Public Property Get Mon_Événement() As Integer
'à chaque fois que tu modifies la variables cette
'"procédure" est appelée, tu peux ajouter le code
'à exécuter que tu désires soit avant de renseigner
'la variable ou après
R = MaVar
End Property
'------------------------------------
Public Property Let Mon_Événement(ByVal vNewValue As Integer)
MaVar = vNewValue
End Property
'------------------------------------

'Exécute en pas à pas comment ceci fonctionne.
'------------------------------------
Sub test()
Dim R As Integer

'Place dans la variable "MaVar" définit au niveau du module
'la valeur que tu lui attribues
Mon_Événement = 25

'Récupère la valeur que tu as mise dans la variable MaVar
R = Mon_Événement

End Sub
'------------------------------------


MichD
--------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :


bon dimanche ...çà caille meme dans le sud de la drôme ...gla gla
gla ...

ben, justement,
je me disais, si, de la même façon qu'il y a des évennements
pour les contrôles des userforms, est ce qu'il serait possible
de créer un evennement lorsqu'une variable est modifiée ?

mici

José
Avatar
michdenis
Une petite explication supplémentaire.

Dans l'exemple que je t'ai donné, la variable s'appelle MaVar
C'est cette variable qui sert de contenant à ta valeur.

Pour attribuer une valeur à la variable MaVar, la ligne de code
à utiliser est : Mon_Événement = 25
Cette ligne de code appelle la procédure
Public Property Let Mon_Événement(ByVal vNewValue As Integer)
qui affecte la valeur 25 à la variable MaVar
Ceci est vrai à chaque fois que tu veux affecter une nouvelle valeur à MaVar

Lorsque tu veux extraire la valeur contenu dans ta variable MaVar, tu le fais
à l'aide de cette ligne de code :
Valeur = Mon_Événement
Cette ligne de code appelle la procédure suivante :
Public Property Get Mon_Événement() As Integer
et retrouve la valeur de la variable MaVar
et cela se passe à chaque fois que tu veux extraire la valeur de ta variable.

En conséquence, si tu veux intercepter le moment où tu attribues une
nouvelle valeur à la variable, tu regardes dans
Public Property Let Mon_Événement(ByVal vNewValue As Integer)
qui a son tour peut appeler une ou des macros avant ou après
avoir attribué une nouvelle valeur à la variable.

C'est le même processus au moment de retrouver la valeur de la variable.


MichD
--------------------------------------------
"michdenis" a écrit dans le message de groupe de discussion : idg5ek$7n1$

Bonjour,

Bien sûr. En utilisant ceci. Habituellement, on utilise
ceci dans des modules de classe mais on peut très bien
s'en servir dans un module standard.

IMPORTANT: Les variables doivent avoir le même type selon
leur contenu...

Copie ce qui suit dans un module standard :

'Déclaration de la variable dans le haut du module
Dim MaVar As Integer

'------------------------------------
Public Property Get Mon_Événement() As Integer
'à chaque fois que tu modifies la variables cette
'"procédure" est appelée, tu peux ajouter le code
'à exécuter que tu désires soit avant de renseigner
'la variable ou après
R = MaVar
End Property
'------------------------------------
Public Property Let Mon_Événement(ByVal vNewValue As Integer)
MaVar = vNewValue
End Property
'------------------------------------

'Exécute en pas à pas comment ceci fonctionne.
'------------------------------------
Sub test()
Dim R As Integer

'Place dans la variable "MaVar" définit au niveau du module
'la valeur que tu lui attribues
Mon_Événement = 25

'Récupère la valeur que tu as mise dans la variable MaVar
R = Mon_Événement

End Sub
'------------------------------------


MichD
--------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :


bon dimanche ...çà caille meme dans le sud de la drôme ...gla gla
gla ...

ben, justement,
je me disais, si, de la même façon qu'il y a des évennements
pour les contrôles des userforms, est ce qu'il serait possible
de créer un evennement lorsqu'une variable est modifiée ?

mici

José
Avatar
Alfred WALLACE
Bonsoir MichDenis,

merci pour tes explications. il me semble que çà peut être
interressant de detecter le changement de valeur de la variable.

heu par contre, est ce normal que tes mots (y compris le code)
soit plein de trous ? j'ai l'impression que les accents ne passent pas
(ou plus)

Merci

José


On 6 déc, 19:55, "michdenis" wrote:
Une petite explication suppl mentaire.

Dans l'exemple que je t'ai donn , la variable s'appelle MaVar
C'est cette variable qui sert de contenant ta valeur.

Pour attribuer une valeur la variable MaVar, la ligne de code
utiliser est :  Mon_ v nement = 25
Cette ligne de code appelle la proc dure
Public Property Let Mon_ v nement(ByVal vNewValue As Integer)
qui affecte la valeur 25 la variable MaVar
Ceci est vrai chaque fois que tu veux affecter une nouvelle valeur MaVar

Lorsque tu veux extraire la valeur contenu dans ta variable MaVar, tu le fais
l'aide de cette ligne de code :
Valeur = Mon_ v nement
Cette ligne de code appelle la proc dure suivante :
Public Property Get Mon_ v nement() As Integer
et retrouve la valeur de la variable MaVar
et cela se passe chaque fois que tu veux extraire la valeur de ta variabl e.

En cons quence, si tu veux intercepter le moment o tu attribues une
nouvelle valeur la variable, tu regardes dans
Public Property Let Mon_ v nement(ByVal vNewValue As Integer)
qui a son tour peut appeler une ou des macros avant ou apr s
avoir attribu une nouvelle valeur la variable.

C'est le m me processus au moment de retrouver la valeur de la variable.

MichD
--------------------------------------------
"michdenis"  a crit dans le message de groupe de discussion : idg5ek$7n

Bonjour,

Bien s r. En utilisant ceci. Habituellement, on utilise
ceci dans des modules de classe mais on peut tr s bien
s'en servir dans un module standard.

IMPORTANT: Les variables doivent avoir le m me type selon
                      leur contenu...

Copie ce qui suit dans un module standard :

'D claration de la variable dans le haut du module
Dim MaVar As Integer

'------------------------------------
Public Property Get Mon_ v nement() As Integer
    ' chaque fois que tu modifies la variables cette
    '"proc dure" est appel e, tu peux ajouter le code
    ' ex cuter que tu d sires soit avant de renseigner
    'la variable ou apr s
R = MaVar
End Property
'------------------------------------
Public Property Let Mon_ v nement(ByVal vNewValue As Integer)
MaVar = vNewValue
End Property
'------------------------------------

'Ex cute en pas pas comment ceci fonctionne.
'------------------------------------
Sub test()
Dim R As Integer

'Place dans la variable "MaVar" d finit au niveau du module
'la valeur que tu lui attribues
Mon_ v nement = 25

'R cup re la valeur que tu as mise dans la variable MaVar
R = Mon_ v nement

End Sub
'------------------------------------

MichD
--------------------------------------------
"Alfred WALLACE"  a crit dans le message de groupe de discussion :


bon dimanche ... caille meme dans le sud de la dr me ...gla gla
gla ...

ben, justement,
je me disais, si, de la m me fa on qu'il y a des vennements
pour les contr les des userforms, est ce qu'il serait possible
de cr er un evennement lorsqu'une variable est modifi e ?

mici

Jos