Bonjour,
connaissez vous un évènement qui pourrait être déclencher par la lecture du scan ? Sinon il y a l'astuce de faire une somme comportant la cellule du résultat de scan qui va (peut-être) déclencher l'évènement Calculate :
Private Sub Worksheet_Calculate()
' on arrête la mise à jour de l'écran
Application.ScreenUpdating = False
' comme on va modifier les données de la feuille
' on des active les évènements afin de n epas tomber dans une boucle infinie
Application.EnableEvents = False
' on dimensionne une variable Tableau structuré
Dim MonTab As ListObject
' on dimensionne une variable Ligne de tableau structuré
Dim lRow As ListRow
' on attribue à la variable tableau le premier tableau de la feuille Formulaire
Set MonTab = ActiveSheet.ListObjects("Résultat")
' avec ce tableau
With MonTab
' on attribue à la variable ligne, la ligne "nouvelle ligne" que l'on crée
Set lRow = .ListRows.Add()
' avec cette ligne
With lRow
' on met dans chaque cellule de la ligne la formule qui va bien
.Range.Cells(1).Formula = "=VLOOKUP(CodeBarre,Source,1,FALSE)"
.Range.Cells(2).Formula = "=VLOOKUP(CodeBarre,Source,2,FALSE)"
.Range.Cells(3).Formula = "=VLOOKUP(CodeBarre,Source,3,FALSE)"
Calculate
.Range.Cells(1).Value = .Range.Cells(1).Value
.Range.Cells(2).Value = .Range.Cells(2).Value
.Range.Cells(3).Value = .Range.Cells(3).Value
' on a fini de jouer avec la ligne
End With
' on a fini de jouer avec le tableau
End With
' on réactive les évènements
Application.EnableEvents = True
End Sub
Mais de ce fait il faut mettre en place un code pour effacer ce tableau sans que la formule déclenche l'évènement, donc dans un module standard :
Sub Init_Données()
Application.EnableEvents = False
If Not Range("Résultat").ListObject.DataBodyRange Is Nothing Then Range("Résultat").ListObject.DataBodyRange.Delete
Range("CodeBarre") = ""
Application.EnableEvents = True
End Sub
Le fichier :
@ bientôt
LouReeD