Bonjour le fil, bonjour le forum,
Une proposition VBA full comment (ajoute un onglet à ton fichier) :
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Date 'déclare la variable D (Date)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Set OS = Worksheets("Feuil1") 'définit l'onglet source OS
Set OD = Worksheets("Feuil2") 'définit l'onglet destination OD
OD.Range("A1").CurrentRegion.ClearContents 'vide le conenu de l'onglet OD
TV = OS.Range("A1").CurrentRegion 'défint le tableau des valeurs TV
K = 1 'initialise la variable K
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
D = DateSerial(TV(I, 25), 12, 31) 'définit la date D (dernier jour de l'année en colonne 25 de TV (=> colonne Y)
If Date < D Then 'condition : si la date d'aujourd'hui est inférieure à la date D
ReDim Preserve TL(1 To 3, 1 To K) 'redimensionne le tableau des lignes TL (3 lignes, K colonnes)
TL(1, K) = TV(I, 2) 'récupere le Numéro de marché dans la ligne 1 de TL
TL(2, K) = TV(I, 3) 'récupère le N° SAP dans la ligne 2 de TL
TL(3, K) = TV(I, 18) 'récupère le titulaire du marché dans la ligne 3 de TL
K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL)
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
If K > 1 Then 'condition : si K est supérieure à 1
OD.Range("A1") = "Numéro de marché" 'écrit dans A1
OD.Range("B1") = "N° SAP" 'écrit dans B1
OD.Range("C1") = "titulaire du marché" 'écrit dans C1
OD.Range("A2").Resize(K - 1, 3).Value = Application.Transpose(TL) 'renvoie dans A2 redimensionnée le tableau TL transposé
OD.Columns("A:D").AutoFit 'ajuste la valeur des colonne A à C
End If 'fin de la condition
End Sub