bonjour,
commentaire dans le code
Sub aargh()
'algorithme
'----------
'prendre ref et pid sur fichier à renseigner
'chercher ref dans bdd
' si ref trouvée
' ajouter une nouvelle ligne dans feuil1
' copier ref, nip de fichier à renseigner
' copier désignation et poids de bdd
' déterminer le classement et le nombre de lignes à créer en fonction du type
' mettre pid+classement dans feuil1
' copier la ligne qui vient d'être créée en feuil1 autant de fois que nécessaire en fonction du type
' pour chaque ligne créée ajouter la numérotation de sous-produit
' si ref non trouvée
' afficher message ref non trouvée
Set ws1 = Sheets("bdd")
Set ws2 = Sheets("feuil1")
Set ws3 = Sheets("fichier à renseigner")
ref = ws3.Range("B5") ' reference
nip = ws3.Range("C5") ' n° identification produit
k = ws2.Cells(Rows.Count, 2).End(xlUp).Row 'n° dernière ligne non vide dans ws2
dl = ws1.Cells(Rows.Count, 1).End(xlUp).Row 'n° dernière ligne non vide dans ws1
Set re = ws1.Range("B3:B" & dl).Find(ref, lookat:=xlWhole) 'on cherche ref dans ws1
If Not re Is Nothing Then 'si ref trouvée
i = re.Row ' i n° de ligne de ws1 contenant ref
k = k + 1 ' k n° de ligne sur feui1, on incrémente k =nouvelle ligne
ws2.Cells(k, 1) = ref ' on copie ref
ws2.Cells(k, 2) = nip ' on copie nip
ws2.Cells(k, 6) = ws1.Cells(i, 3) 'on copie désignation
ws2.Cells(k, 7) = ws1.Cells(i, 4) 'on copie poids
Select Case ws1.Cells(i, 1) 'en fonction du type
Case 1 'type 1
nl = 10 'nombre de lignes
ind = "A" 'classement
Case 2 'type 2
nl = 12
ind = "B"
Case Else 'autre type
nl = 1
ind = ""
End Select
ws2.Cells(k, 3) = ws2.Cells(k, 2) & ind 'on génère le classement
ws2.Cells(k, 1).Resize(, 7).Copy ws2.Cells(k, 1).Resize(nl, 7) 'on copie la ligne nl fois
For j = 1 To nl 'on numérote les sous-produits
ws2.Cells(k - 1 + j, 4) = ws2.Cells(k, 3) & "/" & j
Next j
Else
MsgBox "référence " & ref & "non trouvée dans BDD"
End If
End Sub