tu peux affecter une variable à la cellule qui contient le n° de facture ou à l'objet (zone de texte par exemple).
puis tu scrute dans le fichier d'origine si cette variable existe déjà.
par exemple
nomvariable = activecell (cellule sur laquelle tu travailles)
Workbooks.Open FileName:= "nomfichier.xls"
(avec la ligne précédente, tu ouvres le fichier,y inclure éventuellement le chemin si le fichier ne se trouve pas dans le même dossier. L'idéal c'est peut-être que les deux fichiers soient déjà ouverts.)
(tu sélectionne la colonne où se trouve les n° de factures (exemple pour la colonne A mais il peut aussi s'agir d'une plage nommée.)
Set valeurs = Range("A1", [A1].End(xlDown))
Nbvaleurs = valeurs.Count
Range("A1").Select
For i = 1 To Nbvaleurs
if activecell = nomvariable
msgbox "Cette facture existe déjà")
(après le clic sur le message tu peux soit demander de fermer ce fichier ou de le laisser ouvert, et retourner sur la feuille que tu étais en train de remplir)
sheets(nomfeuilled'origine).select
activecell.clearcontents (efface la cellule où le n° de facture était écrit ou éventuellement une plage ou une ligne selon le cas.
end if
else (tant que tu ne trouve pas le n°de facture il continue jusqu'en bas)
ActiveCell.Offset(1, 0).Select
Next i
(S'il n'ya pas de doublon il retourner sur la feuille d'origine et la cellule d'origine)
sheets (nomfeuilled'origine).select
ce qui est entre parenthèses n'est pas à inclure bien sûr dans la macro sauf remplacer (nomfeuilled'origine) par la vrai feuille.