Bonjour alain29100, Ergotamine, le forum,
Je ne suis pas un expert en vba, et apparemment pas très doué pour les explications, , néanmoins, voici un essai par macro....de ce que j'ai compris:
Sur la feuille "Planif_Fevrier_Applicatif", le premier jour du mois commence en colonne 4.
Il faut récupérer toutes les lignes où la colonne 4 contient un 1 et les écrire sur la feuille "Liste à produire".
On répète l'opération avec les colonnes suivantes jusqu'au dernier jour (donc dernière colonne).
Si c'est bien ça, cette macro devrait faire le job:
Option Explicit
Dim tablo, tabloR()
Dim i&, k&, dercol%, col%, j%
Sub MettreAjour()
tablo = Sheets("Planif_fevrier_Applicatif").Range("A2").CurrentRegion
dercol = Cells(2, Cells.Columns.Count).End(xlToLeft).Column
Sheets("Liste à produire").Range("A1").CurrentRegion.Offset(1, 0).ClearContents
Application.ScreenUpdating = False
j = 1
For col = 4 To dercol
k = 0
For i = 2 To UBound(tablo, 1)
If tablo(i, col) = 1 Then
ReDim Preserve tabloR(1 To 4, 1 To k + 1)
tabloR(1, 1 + k) = j
tabloR(2, 1 + k) = tablo(i, 1)
tabloR(3, 1 + k) = tablo(i, 2)
tabloR(4, 1 + k) = tablo(i, 3)
k = 1 + k
End If
Next i
On Error Resume Next
With Sheets("Liste à produire")
.Range("A" & .Range("A" & Rows.Count).End(xlUp).Row + 1).Resize(UBound(tabloR, 2), 4) = Application.Transpose(tabloR)
.Columns.AutoFit
.Activate
End With
Erase tabloR: j = j + 1
Next col
Erase tablo
End Sub
A partir de la feuille "Planif_Fevrier_Applicatif", CTRL + e pour lancer la macro.
Cordialement,