[VBA] Macro evenementielle lors changement

Résolu
Merenptah44 Messages postés 625 Date d'inscription   Statut Membre Dernière intervention   -  
Merenptah44 Messages postés 625 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

j'ai une petite question excel enffin plus présisément vba,
précisons le contexte
j'ai une feuille j'ai des constantes dite "environnement"
une autre feuille ou je rentre certaines données dite "input data"

une fois que j'ai rentré mes trucs sur Input data je clique sur un bouton pour lancer des calculs.

jusque là tout va bien

le truc c'est que les données "environnement" serve à un pré-calcul qui ne se fait qu'une seule fois, quel que soit ce qu'on fait sous "input data". Il faut juste relancer ce pré-calcul en cas de modif de "environnement"

ce que je voudrais faire:
que excel reconnaisse que j'ai modif qqch dans "environnement"
que qd je clic sur le bouton dans "input data", il me propose de lancer le pré calcul en me disant que j'ai modif "environnement".
j'ai bien essayé :



Private Sub Worksheet_Change(ByVal Target As Excel.Range)modif = True
End Sub 


dans ma feuille environnement avec bien sur une initialisatio ndans workbook avec :



Public modif As Boolean
Private Sub Workbook_Open()
modif = False
End Sub 


puis une petit conditionnelle dans la macro associée au bouton sous "input data" du genre :



If (modif = True) Then MsgBox "modif"End If 


mais nada ça marcha pas

si quelqu'un à une idée ça m'aiderait pas mal

merci d'avance et bonne journée
A voir également:

2 réponses

lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
bonjour,
bien que ta variable modif soit déclarée en public elle est invisible dans une autre feuille. (j'ai testé)
Pour que ta variable modif soit réellement publique il faut la déclarer dans un module.
Sinon je ne vois pas d'autre erreur dans ton exposé.
A+
louis
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
juste un petit truc pour détecter de telle erreurs.
mettre un arrèt dés le premier accès au feuille, dans le cas présent dans activesheet ou sheetchange, le point d'arrèt est disponnible en cliquant sur le côté gauche de la fenêtre ou en tapant F9 ( au cas ou tu ne le saurais pas), la ligne est marquée en brun. ensuite taper F8 pour avancé d'un pas après passage d'une variable amener la souris sur le nom de la variable et la valeur est affichée dans une bulle.
pour terminer le pas a pas taper F5.
louis
0
Merenptah44 Messages postés 625 Date d'inscription   Statut Membre Dernière intervention   28
 
Impeccable, tu avais raison ça marhce
je précise aussi que j'ai fait une petite modif:

Private Sub Worksheet_Change(ByVal target As Excel.Range)
If not(Intersect(target, Range("a1:n37")) Is Nothing) Then
modif = True
End If
End Sub

merci pour ton aide donc je rappelle à celu ique ça pourrait intéresser : penser à mettre modif e nvariable public mais dans un module !!

Merci
0