1 pièce(s) jointe(s)
VBA Gestion d'une sélection multiple
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 :
Pièce jointe 483529
Avec ce code (ne riez pas je suis débutant en VBA) j'y arrive :
Code:
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 |
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.
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