Comment inhiber une macro de type Worksheet_Change

seb26000

XLDnaute Occasionnel
Bonjour à tous,

J'ai une macro de type "Worksheet_Change" qui lorsqu'une cellule des colonnes A à T, change de valeur, le contenu de cette même cellule passe en majuscule.

Je souhaiterais interrompre cette macro pendant une phase où des lignes sont insérées par une autre macro car sinon Excel exécute cette macro à chaque cellule modifiée.

J'ai tenté d'insérer une condition If Range("V1") = 1 Then Exit Sub où la cellule V1 prend la valeur 1 lorsque j'insère la ligne pour inhiber la mise en majuscule. Ca marche mais je m'apercois que Excel excute pour chaque cellule insérer la macro de Worksheet_Change mais si cela finit par un Exit Sub. Vous me direz que c'est normal et c'est sur mais vu qu'il y a beaucoup de cellules insérées résultat l'insertion prend un peu de temps...

Donc ma question est la suivante, est il possible à partir de la qui insère les lignes, d'indiquer d'inhiber ce fameux Worksheet_Change...

Merci d'avance à tous !!!

Seb



Private Sub Worksheet_Change(ByVal Target As Range)

If Range("V1") = 1 Then Exit Sub


Dim Cel As Range

'Validité ===================================================
If Intersect(Target, Range("A:T")) Is Nothing Then GoTo Sort_Worksheet_Change
'Blocage écran et évènements ================================

Application.EnableEvents = False
Application.ScreenUpdating = False


'Traitement ================================================
For Each Cel In Intersect(Target, Range("A:T"))
'pour chaque cellule modifiée appartenant à A
Cel = UCase(Cel)
'cellule =majuscule(cellule)
Next Cel
'cellule suivante
'Sortie obligatoire =========================================

Heure = ThisWorkbook.Sheets(1).Evaluate("ChronoTime")
Application.OnTime Heure, "Interruption2", schedule:=False
Minuterie2

Sort_Worksheet_Change:
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub
 

Discussions similaires