Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
' Variable pour plage à surveiller
Dim Plage As Range, Limite As Long
' Variable pour série de cellule à introduire
Dim Serie As String, Premier As String
' Variable indice de la valeur recherché
Dim ValeurRecherche As Long
' Trouver la dernière cellule vide en partant de A15 et définir C15
Limite = Range("A65536").End(xlDown).Row
' Définir la plage de cellules à surveiller
Set Plage = Range("A15:D" & Limite, "D15:C" & Limite)
' Est-on dans la plage
If Not Intersect(Target, Plage) Is Nothing Then
' Si oui, désactive les évènements pour éviter la récursivité de l'évènement
Application.EnableEvents = False
' En fonction de la colonne sélectionner, on travail sur la cellule [Target]
Select Case Target.Column
' Colonne A de la feuille devis
Case 1:
' Code -> Colonne D Description de la deuille devis
' La fonction F_CODE modifie la valeur de [Premier]
Serie = F_CODE(Target.Value, Premier)
Target.Offset(0, 3).Value = ""
Target.Offset(0, 3).Value = Premier
Target.Offset(0, 3).Validation.Delete
' Affectation de la série à la cellule
Target.Offset(0, 3).Validation.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, _
Formula1:=Serie
' Code -> Colonne C
Target.Offset(0, 2).Value = ""
Target.Offset(0, 2).Value = Recherche(Target.Offset(0, 3).Value, Target.Value, cteCode)
' Unité de mesure -> Colonne I
Target.Offset(0, 8).Value = ""
Target.Offset(0, 8).Value = Recherche(Target.Offset(0, 3).Value, Target.Value, cteUnit)
' Prix Unitaire -> Colonne K
Target.Offset(0, 10).Value = ""
[COLOR="Blue"][B]Target.Offset(0, 10).Value = CDbl(Recherche(Target.Offset(0, 3).Value, Target.Value, ctePrix))[/B][/COLOR]
' Colonne D
Case 4:
' Description
Target.Offset(0, -1).Value = ""
Target.Offset(0, -1).Value = Recherche(Target.Value, Target.Offset(0, -3).Value, cteCode)
' Unité de mesure -> Colonne I
Target.Offset(0, 1).Value = ""
Target.Offset(0, 1).Value = Recherche(Target.Value, Target.Offset(0, -3).Value, cteUnit)
' Prix Unitaire -> Colonne K
Target.Offset(0, 3).Value = ""
[COLOR="Blue"][B]Target.Offset(0, 3).Value = CDbl(Recherche(Target.Value, Target.Offset(0, -3).Value, ctePrix))[/B][/COLOR]
' Colonne Inconnu
Case Else:
'Ne fait rien sauf répondre aux évènements s'il y a.
DoEvents
End Select
Application.EnableEvents = True
End If
End Sub