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
Partager