Re:Hiérarchie des \"If\" dans code VBA
Salut
Selon moi, t'es pas sorti de l'auberge :
tu mélange les deux formats de IF ce qui te rends ton code illisible. Utilise la forme avec retour à la ligne et End if systèmatiquement : de cette manière, tu verras tes imbrications plus facilement. Quand ça marche, tu peux épurer ton code et le rendre plus compact.
si Cible = '' alors
__ si alerte = 1 alors
__ __ Cible = Mini1
__ Sinon
__ __ Cible = '' 'Sert à quoi ?
__ Fin Si
__ Si Cible inf. mini2 alors
__ __ Si alerte = 1 alors
__ __ __ Cible = mini1
Mais on viens de le faire, ou alors cible est vide et si le test marche, on met Cible = Mini1
Ton code se mord la queue.
Tes hypothéses de départs sont bancales
Cible = ''
si alerte = 0, cible = ''
si alerte = 1, cible = Mini2
Alerte = 0
Si Cible < Mini1, Cible = Mini1
Alerte = 1
Cible = Mini2
C'est pas Cible le déterminant, C'est Alerte
Si Alerte=0 alors
__ Si Cible < Mini1 alors
__ __ Cible=Mini1
__ End If
Endif
Si Alerte=1 alors
__ Cible = Mini2
Endif
Une fois que ta macro tourne, et seulement dans ce cas, tu peux te préoccuper du déclenchemnt.
Mais si tu utilises Worksheet_Change, tu ne peux pas écrire sur la feuille sans déclencher ta macro, puisque la feuille change.Ou il faut que tu bloques tout traitement supplémentaire de cette macro, tant que tu n'as pas fini ton traitement en cours.
Pour ça, j'utilise une variable booléenne globale que je testes en première instruction
Si elle est vrai, je sors. Si elle est faux, je la mets à vrai, je fais mon traitement, et juste avant de sortir, je la remet à faux
A+
Message édité par: gorfael, à: 10/04/2006 00:20