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
| Sub Macro1()
Dim O As Worksheet 'déclare la varaible O (Onglets)
Dim F1 As Worksheet 'déclare la variable F1 (onglet Feuil1)
Dim F2 As Worksheet 'déclare la variable F2 (onglet Feuil2)
Dim R As Range 'déclare la variable R (Recherche)
Dim COL As Byte 'déclare la variable COL (COLonne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
'si 12 onglets dans le classeur
'For Each O In Worksheets 'boucle sur tous les onglets O du classeur
'si A1 de l'onglet de la boucle est égale à l'année de la date en cours et si A2 est égale au mois de la date en cours, définit l'onget F1, sort de la boucle
'If O.Range("A1") = Year(Date) And O.Range("A2") = Month(Date) Then Set F1 = O: Exit For
'Next O 'prochaine onglet de la boucle
'sinon
Set F1 = Worksheets("Feuil1") 'définit l'onglet F1
Set F2 = Worksheets("Feuil2") 'définit l'onglet F2
F2.Range("A1").CurrentRegion.Offset(1, 0).ClearContents 'efface d'éventuelles anciennes données
TV = F1.Range("A8:AK" & F1.Cells(Application.Rows.Count, "A").End(xlUp).Row) 'définit le tableau des valeurs TV
Set R = F1.Rows(5).Find(Day(Date), , xlValues, xlWhole) 'définit la recherche R
COL = R.Column 'définit la colonne COL
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
If TV(I, COL) = "P" And TV(I, 35) = "A" Then 'condition : si "P" est présent dans la colonne COL de TV et si N10 vaut "A"
Set DEST = F2.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
DEST.Value = TV(I, 1) 'renvoie le nom dans la celluel DEST
End If 'fin de la condition
If TV(I, COL) = "P" And TV(I, 36) = "A" Then 'condition : si "P" est présent dans la colonne COL de TV et si N20 vaut "A"
Set DEST = F2.Cells(Application.Rows.Count, "B").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
DEST.Value = TV(I, 1) 'renvoie le nom dans la celluel DEST
End If 'fin de la condition
If TV(I, COL) = "P" And TV(I, 37) = "A" Then 'condition : si "P" est présent dans la colonne COL de TV et si N30 vaut "A"
Set DEST = F2.Cells(Application.Rows.Count, "C").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
DEST.Value = TV(I, 1) 'renvoie le nom dans la celluel DEST
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub |
Partager