Je suis nouveau en programmation et j'essaie de comprendre les concepts. Ce que j'essaie d'accomplir :
- Boucler à travers la première table pour obtenir une chaîne de caractères à rechercher
- Ensuite trouver la première occurrence de cette chaîne dans une deuxième table (si elle existe)
- Insérer/copier ensuite une ligne (de la première table) dans la deuxième table AU-DESSUS de la ligne où l'occurrence a été trouvée (dans la deuxième table)...ou si aucune occurrence n'existe : ajouter une nouvelle ligne en bas de la deuxième table et insérer/copier la ligne là-bas.
Je pense que j'ai la deuxième partie qui fonctionne correctement
Je bloque sur la manière d'utiliser l'approche ListObject pour faire cela correctement. J'ai essayé d'utiliser une approche avec 'activecell' mais cela ne me donne pas la bonne position dans la table. J'ai beaucoup cherché et trouvé très peu d'informations sur l'insertion ou même le collage à des emplacements dynamiques dans une table en utilisant l'approche ListObject.
Dim lastRow, eachRow1, unitRow, qtyRow As Long
Dim ws1, ws2, ws3 As Worksheet
Dim tbl1, tbl2, tbl3 As ListObject
Dim chkFrst As Boolean
Dim qtyValue, yumItem As String
Dim qty, stockQty, calcQty As Integer
Dim lastDate, reDate As Date
Dim findRng As Range
Dim NewRow, addRow As ListRow
Set ws1 = Sheets("UPDATE")
Set ws2 = Sheets("DATA")
Set ws3 = Sheets("LOG")
Set tbl1 = ws1.ListObjects("Update_Table")
Set tbl2 = ws2.ListObjects("Data_Table")
Set tbl3 = ws3.ListObjects("Log_Table")
For unitRow = 1 To tbl1.ListRows.Count
yumItem = tbl1.ListColumns("ITEM").DataBodyRange.Cells(unitRow, 1).Value
Set findRng = tbl3.Range.Find(What:=yumItem)
If findRng Is Nothing Then
Set NewRow = tbl3.ListRows.Add(AlwaysInsert:=True)
NewRow.Range.RowHeight = 25
NewRow.Range = tbl1.DataBodyRange.Cells.Range("A" & unitRow & ":O" &
unitRow).Value
Else
Application.Goto findRng, True
ActiveCell.EntireRow.Insert Shift = xlDown
Dim crntRow As Long
crntRow = ActiveCell.Row
Set NewRow = tbl3.InsertRowRange.Cells.Range(crntRow)
NewRow.Range = tbl1.DataBodyRange.Cells.Range("A" & unitRow & ":O" &
unitRow).Value
End If
Next unitRow
Toute aide est grandement appréciée!