code VBA qui ne "s'arrête pas"

Christophe

XLDnaute Occasionnel
Bonjour,

Je balbutie mes premiers codes sous VBA, avec plus ou moins de réussite. :p

Le code que j'utilise ci-dessous ne s'arrête pas sauf si je le fais planter par 'Echap'.

Qqun pourrait-il me dire / m'expliquer pourquoi et surtout comment corriger.

Merci par avance. Bon dimanche.

Christophe


Private Sub WorkSheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range('K8')) Is Nothing Then
With Range('k8')
If .Value 0 Then Range('H8').Select
If Len(Range('H8')) > 0 Then Range('H10').Select
If Len(Range('H10')) > 0 Then Range('H11').Select
If Len(Range('H11')) > 0 Then Range('H15').Select
If Len(Range('H15')) > 0 Then Range('H17').Select

If Range('H17') > Range('bZ23') Then Range('H17') = Range('BZ23')

With Range('H17')
If Range('H17').Value > 0.1 Then
Range('K10') = '9999'
Range('k11') = '8888'


End If


End With

End Sub
 

Gorfael

XLDnaute Barbatruc
salut
Quand c'est un problème de ce genre, tu mets un point d'arrêt et tu poursuis l'exécution avec F8.

Ton problème est simple :
Si la feuille chanfe,
je chnage la feuille, ce qui déclenche la macro, et ainsi de suite.
Remède :
Soit tu change le système de déclenchement de la macro, bouton par exemple, mais je ne pense pas(ouais, c'est habituel chez moi) que ça te satisfasse.
Soit tu déclares une variable en haut du module :
Public Flag_Test as Boolean
et ta macro devient :

Private Sub WorkSheet_Change(ByVal Target As Range)

if flag_test then exit sub
flag_test = True


If Not Application.Intersect(Target, Range('K8')) Is Nothing Then
.......
Flag_Test = False
End With

End Sub
 

Gorfael

XLDnaute Barbatruc
Re:code VBA qui ne

Gorfael écrit:
salut
Quand c'est un problème de ce genre, tu mets un point d'arrêt et tu poursuis l'exécution avec F8.

Ton problème est simple :
Si la feuille chanfe,
je chnage la feuille, ce qui déclenche la macro, et ainsi de suite.
Remède :
Soit tu change le système de déclenchement de la macro, bouton par exemple, mais je ne pense pas(ouais, c'est habituel chez moi) que ça te satisfasse.
Soit tu déclares une variable en haut du module :
Public Flag_Test as Boolean
et ta macro devient :

Private Sub WorkSheet_Change(ByVal Target As Range)

if flag_test then exit sub
flag_test = True


If Not Application.Intersect(Target, Range('K8')) Is Nothing Then
.......
End With

Flag_Test = False
End Sub
 

Gorfael

XLDnaute Barbatruc
Re:code VBA qui ne

ça a l'air de merder un peu, l'édition alors je fais un autre post
Tant que ta macro n'est pas finie, toutes les macros lancée par la modification de la feuille sont bloquées, par le test du Flag qui est une variable globale pour le module de classe.
A+
 

Christophe

XLDnaute Occasionnel
Re:code VBA qui ne

Gorfael, tatiak,

Merci de votre aide.
Cependant, les termes 'pointus' que vous employez parlent assez peu au novice que je suis.

Serait-ce abuser de vous demander de reprendre le code en le corrigeant, pour que, par différence, je puisse bien comprendre mes erreurs ?

Par avance merci.

Christophe
 

Christophe

XLDnaute Occasionnel
Re:code VBA qui ne

Merci Tatiak,
Désolé nos posts se sont croisés.
Merci.

Je me rends compte cependant trompé dans les ref des cellules de mon code. Et je pense que ça change tout.

Ce n'est pas ...K10 qui peut être égal à 9999 mais K8.

J'ai essayé ton code en changeant juste les refs : ça ne gaze pas.

As-tu une idée de ce que je peux faire ?

Merci.
 

Christophe

XLDnaute Occasionnel
Re:code VBA qui ne

Tatiak,

Ton code modifie le résultat à atteindre et ne met à jour k8 en fonction de H17 que si k8 n'est pas nul.
Or, il faut que dans tous les cas, la valeur de H17 influe sur celle de k8.

Désolé que ec soit aussi tordu ...

Christophe
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 504
Membres
103 565
dernier inscrit
Fabien78