Bonjour le forum,
Je fais suite à la conversation "VBA problème avec le Worksheet change" sur un projet d'outil pour faire des devis et gérer des prix.
Donc sur la base du prix existant en colonne F je veux :
-Soit calculer mon taux de discount en L si un nouveau prix est saisi en K
-Soit calculer mon nouveau prix en K si un discount est saisi en L
Exemple de mon tableau avec des data bidonnées :
Avec ce code (ne riez pas je suis débutant en VBA) j'y arrive :
Mais le problème c'est que si l'utilisateur sélectionne plusieurs cellules, par exemple pour effacer des saisies précédente, ça ne marche plus. Pareil si l'utilisateur copie/colle une liste de prix existant en ligne K.
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 Private Sub Worksheet_Change(ByVal Target As Range) Dim AD As String AD = Target.Address TG = Target.Column Select Case TG 'L'utilsateur saisi un discount Case Is = 12 Application.EnableEvents = False If IsEmpty(Range(AD).Value) = True Then 'Si il efface la valeur Range(AD).Offset(0, -1).FormulaR1C1 = "" Else Range(AD).Offset(0, -1).FormulaR1C1 = "=RC[-5]*(1-RC[1])" End If Application.EnableEvents = True 'L'utilsateur saisi un nouveau prix Case Is = 11 Application.EnableEvents = False If IsEmpty(Range(AD).Value) = True Then 'Si il efface la valeur Range(AD).Offset(0, 1).FormulaR1C1 = "" Else Range(AD).Offset(0, 1).FormulaR1C1 = "=(RC[-6]-RC[-1])/RC[-6]" End If Application.EnableEvents = True End Select End Sub
J'ai compris que ça ne marche pas à cause du fait que ce soit des plages de cellules qui sont modifiées au lieu de cellule. j'ai bricolé des trucs pour test mais rien ne marche.
Auriez vous une piste ou une idée ?
Merci d'avance
Partager