1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| Sub ExtraireLignes()
Dim wsSource As Worksheet, wsCible As Worksheet
Dim tblDemande As ListObject, tblCanni As ListObject
Dim rngDemande As Range, rngCanni As Range
Dim rowDemande As ListRow, rowCanni As ListRow
Dim somme As Double
Dim i As Byte, j As Long
Set wsSource = ThisWorkbook.Sheets("Demande")
Set wsCible = ThisWorkbook.Sheets("Dashboard")
Set tblDemande = wsSource.ListObjects("tbldemande")
Set tblCanni = wsCible.ListObjects("tblcanni")
For Each rowDemande In tblDemande.ListRows
' Calcule la somme des colonnes F à O
somme = 0
For i = 3 To 12
somme = somme + rowDemande.Range(1, i).Value
Next i
' Si la somme est supérieure à 4, copie les informations dans le tableau cible
If somme > 4 Then
' Trouve la première ligne vide dans le tableau cible
For j = 1 To tblCanni.ListRows.Count
If Application.WorksheetFunction.CountA(tblCanni.ListRows(j).Range) = 0 Then
Exit For
End If
Next j
' Ajoute une nouvelle ligne au tableau cible si nécessaire
If j > tblCanni.ListRows.Count Then
Set rowCanni = tblCanni.ListRows.Add
Else
Set rowCanni = tblCanni.ListRows(j)
End If
' Copie les valeurs de D, E et P
rowCanni.Range(1, 1).Value = rowDemande.Range(1, 1).Value ' Log ID
rowCanni.Range(1, 2).Value = rowDemande.Range(1, 2).Value ' Modèle
rowCanni.Range(1, 3).Value = rowDemande.Range(1, 13).Value ' Colis
End If
Next rowDemande
End Sub |
Partager