Bonsoir à toutes et à tous,

Encore merci pour votre accueil sur le forum et l'aide apportée sur mon précédent soucis.

Je reviens vers vous avec un tout nouveau problème.

Pour vous situer dans le contexte : Je travaille en comptabilité et je me suis créé un fichier de saisie semi-automatisé (cf. pièces jointes).
Ce fichier fonctionne très bien, j'y ai inséré des formules à chaque cellule et des macros automatiques en colonne A, B, D, E et F qui me permettent de venir me placer dans la bonne cellule à saisir à chaque tabulation. Mais je pense que nous pouvons encore l'améliorer en y insérant des modèles de saisie, en fonction de la valeur de D.
Par exemple : Lorsque je saisi un montant en cellule E1 ou F1 (en fonction de s'il s'agit d'un avoir ou d'une facture) et que la cellule D1 contient "BLEU" alors "lancement de codes qui renseigne les cellules D2 = TVA, E2 = F1/1,2*0,2, D3 = SANDWICH, E3 = F1-E2.

Mon problème est que lorsque mon code modifie les cellules des colonne D, E et F ma macro automatique (If Not Application.Intersect(Target, Range("E2:F1500")) Is Nothing Then) s'éxecute. J'aimerai la désactiver pendant que mon modèle de saisi s’exécute.

J'ai tenté d'utiliser Application.EnableEvents = False / True mais j'obtiens sans cesse des erreurs. Peut être que je ne le place pas au bon endroit.

Je vous ai joins mon fichier pour que vous puissiez visualiser mon problème, je ne pense pas être assez compréhensible dans ce message.

Je vous remercie d'avance pour votre temps.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Private Sub Worksheet_Change(ByVal Target As Range)
 
 If Not Application.Intersect(Target, Range("E2:F1500")) Is Nothing Then
 
   Dim ligne As Integer
 
  With ActiveCell
    ligne = .Row
  End With
 
 If Cells(ligne, 12) = 0 Then
 
    Cells(ligne + 1, 1).Select
 
 
Else: Cells(ligne + 1, 4).Select
 End If
 End If
 
If Not Application.Intersect(Target, Range("B2:B1500")) Is Nothing Then
 
With ActiveCell
ligne = .Row
End With
 
Cells(ligne, 4).Select
 
End If
 
If Not Application.Intersect(Target, Range("D2:D1500")) Is Nothing Then
With ActiveCell
ligne = .Row
End With
 
On Error Resume Next
If Cells(ligne, 9) = "401100000" And Not UCase(Left(Cells(ligne, 2), 1)) = "A" Then
Cells(ligne, 6).Select
Else: If Cells(ligne, 12) < 0 Then Cells(ligne, 6).Select
End If
End If
 
End Sub