J'ai ce code en place pour évaluer fondamentalement l'entrée dans une plage de cellules, et pour vérifier si elle est conforme à un modèle de [1-9], et si oui faire un vlookup d'une petite table qui a 2 colonnes (1-9 comme index, puis dans la colonne 2 la description de ce que signifient ces valeurs). Mon code est:Code de changement de feuille de calcul VBA s'exécutant plusieurs fois
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng1 As Range
Dim tgt As Range
Dim ws As Worksheet
Dim cell As Object
'Dim yn As Boolean
Set ws = ActiveWorkbook.ActiveSheet
Set rng1 = ws.Range("K13:K" & ws.UsedRange.Rows.Count)
If Not Intersect(Target, rng1) Is Nothing Then
If Target.Value Like "[1-9]*" Then
'MsgBox "OK" & Target.Address & " " & Target.Text & " " & rng1.Address & " " & rng1.Count & " " & ActiveCell.Address
Target.Value = WorksheetFunction.VLookup(Left(Target.Value, 1), ws.Range("J2:K10"), 2, 0)
ElseIf Not Target Like "[1-9*]" Then
Target = Empty
End If
End If
End Sub
Le problème que je reçois est que le code fonctionne très bien, mais il est évalué à plusieurs reprises (comme 40-50 fois), après chaque événement de changement de cellule. Je mets un msgbox là pour peut-être comprendre ce qui se passe mais je suis bloqué et je ne sais pas comment réparer le code. Je pense que cela a à voir avec la fonction VLOOKUP.
Merci
Merci cela a fonctionné! Bon à savoir à l'avenir –