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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
| Sub etat_formation() 'Etat d'une population par formation
Dim i, j, k, l, p, t, v As Double
Dim intitule As String
Dim manager As String
Dim numero_ligne As Double
Dim numero_ligne2 As Double
Dim valeur As String
Dim num_ligne As Double
Dim num_ligne1 As Double
Dim num_ligne2 As Double
Dim num_ligne3 As Double
Dim num_ligne4 As Double
Dim num_ligne5 As Double
Dim num_ligne6 As Double
Dim num_ligne7 As Double
Dim code_stage As String
Dim code_stage2 As String
Dim validite As String
Dim val As Double
Dim test_date As Double
Dim test_date2 As Double
Dim test_date3 As Double
Dim butee_depassee As Double
Dim butee_limite As Double
Dim butee_finannee As Double
Dim butee_finannee_suiv As Double
butee_depassee = 0
butee_limite = 0
butee_finannee = 0
butee_finannee_suiv = 0
i = 2 ' première ligne du tableau effectifs colonne manager
j = 2 ' premier code stage possible dans l'onglet Codes SAP
k = 10 ' première ligne vide du tableau etat par formation
l = 20 ' nombre de lignes disponibles pour lister les agents dans l'onglet état par formation
v = 10 ' première ligne vide du tableau etat par formation
ActiveWorkbook.Save' Lancement macro affichage
intitule = Sheets("Etat par formation").Cells(6, 2)
Set formation = Sheets("Formations").Columns("B").Find(what:=intitule)
num_ligne = formation.Row
validite = Sheets("Formations").Cells(num_ligne, 4)
If validite = "P" Then
aff_formation = "Permanente"
Else
aff_formation = validite
End If
Set formation2 = Sheets("Codes SAP").Columns("A").Find(what:=intitule)
num_ligne1 = formation2.Row
If Sheets("Etat par formation").Cells(6, 11) = "" Then 'liste des agents redevables au global
Do While Sheets("Effectifs").Cells(i, 2) <> ""
Select Case Sheets("Effectifs").Cells(i, 6).Value
Case "CME"
t = 5
Case "EIR"
t = 6
Case "MAN"
t = 7
Case "CAB"
t = 8
End Select
If Sheets("Formations").Cells(num_ligne, t) = "x" Then
Sheets("Etat par formation").Cells(k, 1) = Sheets("Effectifs").Cells(i, 4)
Sheets("Etat par formation").Cells(k, 3) = Sheets("Effectifs").Cells(i, 5)
Sheets("Etat par formation").Cells(k, 5) = Sheets("Effectifs").Cells(i, 3)
Sheets("Etat par formation").Cells(k, 6) = Sheets("Effectifs").Cells(i, 7)
Sheets("Etat par formation").Cells(k, 7) = Sheets("Effectifs").Cells(i, 6)
Sheets("Etat par formation").Cells(k, 10) = aff_formation
matricule = Sheets("Effectifs").Cells(i, 3)
k = k + 1
If k > 38 Then 'insertion de lignes si nb agents > nb lignes dispos
p = k + 1
Range(Cells(p, 1), Cells(p, 12)).Select
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
Range(Cells(p, 1), Cells(p, 2)).Select
With Selection
.HorizontalAlignment = xlLeft
.MergeCells = True
End With
Range(Cells(p, 3), Cells(p, 4)).Select
With Selection
.HorizontalAlignment = xlLeft
.MergeCells = True
End With
Range(Cells(p, 8), Cells(p, 9)).Select
With Selection
.HorizontalAlignment = xlCenter
.MergeCells = True
End With
Range(Cells(p, 11), Cells(p, 12)).Select
With Selection
.HorizontalAlignment = xlCenter
.MergeCells = True
End With
End If
' (cette partie qui ne m'affiche pas la date de formation)
Do While Sheets("Codes SAP").Cells(num_ligne1, j) <> ""
code_stage = Sheets("Codes SAP").Cells(num_ligne1, j)
Set Stage = Sheets("Histo").Columns("C").Find(what:=matricule)
num_ligne2 = Stage.Row
If Sheets("Histo").Cells(num_ligne2, 4) = code_stage Then
date_session = Sheets("Histo").Cells(num_ligne2, 8)
End If
Do While num_ligne3 <> num_ligne2
Set Stage = Sheets("Histo").Columns("C").FindNext(Stage)
num_ligne3 = Stage.Row
If Sheets("Histo").Cells(num_ligne3, 4) = code_stage Then
date_session2 = Sheets("Histo").Cells(num_ligne3, 8)
End If
If date_session2 > date_session Then
If date_session2 > date_session_finale Then
date_session_finale = date_session2
End If
Else
If date_session > date_session_finale Then
date_session_finale = date_session
End If
End If
Loop
If date_session_finale <> "" Then
If Sheets("Etat par formation").Cells(k - 1, 8) < date_session_finale Then
Sheets("Etat par formation").Cells(k - 1, 8) = date_session_finale
End If
End If
date_session_finale = 0
date_session = 0
date_session2 = 0
num_ligne2 = 0
num_ligne3 = 0
j = j + 1
Loop
j = 2
End If
i = i + 1
Loop |
Partager