@Kheroubi
* c'est le fichier "
CAS v2.xlsm" :
ok
* c'est la sub
Worksheet_Change() de la feuille "
Saisie" :
ok
* cette sub Worksheet_Change() est pour vérifier si, sur la feuille "Saisie", le N° BL que tu entres en A6 existe en colonne n° 1 (A) d'un Bon de Commande ; OU si le N° Facture que tu entres en C6 existe en colonne 2 (B) d'un Bon de Commande ; la ligne de code VBA initiale, qui marchait très bien, était celle-ci :
Set cel = Worksheets([B2]).Columns(k).Find(ref, , -4163, 1, 1)
tu as modifié cette ligne de code VBA en :
Set cel = Worksheets([B2]).ListObjects(1)
pourquoi ?
à cette étape du code VBA,
B2 ne peut
pas être
vide, car y'a juste au-dessus :
... : If [B2] = "" Or ref = "" Then Exit Sub
si
B2 est
vide, on
quitte la sub ! alors qu'est-ce qu'il y a en
B2 ? rappel :
y'a une validation de données de type Liste ; Source :
=ListeBC
nom défini ListeBC :
=Tableau3[N° BC]
c'est le tableau structuré de la feuille "
Saisie", plage
K2:K4
quand tu ajoutes un
N° BC dans
Tableau3, ça doit être
le même que celui de l'onglet de la
nouvelle feuille que tu as ajoutée pour un nouveau Bon de Commande !
peut-être que tu as oublié de taper l'apostrophe lors de la saisie ? comme quoi ce serait mieux que tu mettes le format
Texte pour toutes les cellules de la colonne
N° BC de
Tableau3 ! si tu fais ça, ça ne sera plus la peine de taper l'apostrophe devant chaque N° BC que tu saisis.
si tu veux absolument utiliser
Worksheets([B2]).ListObjects(1)
:
en plus de ce que j'ai déjà écrit au-dessus du long trait de ce post : la nouvelle feuille ajoutée doit obligatoirement comporter un tableau structuré, comme pour les feuilles "0325658" et "0325700".
remarque : ma sub Worksheet_Change() initiale n'utilise pas ListObjects(1) ; elle fait une recherche en colonne A ou B de la feuille dont le nom est en B2.
soan