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
| Sub Macro_Programmation()
Worksheets("Programmation (Ctrl+R)").Activate
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False 'actualiser feuille "Programmation"
Range("A2:A1000").Select 'Sélection de la cellule
Selection.Interior.Color = RGB(235, 255, 228) 'Arrière-plan de couleur vert
Selection.Font.Color = RGB(0, 0, 0) 'Police de couleur noir
Range("B2:O1000").Select 'Sélection de la cellule
Selection.Interior.Color = RGB(230, 255, 255) 'Arrière-plan de couleur bleu
Selection.Font.Color = RGB(0, 0, 0) 'Police de couleur noir
Range("A2:O1000").Font.Bold = False
Range("A2:O1000").RowHeight = 15
Range("A2:O1000").Font.Size = 11
'changement couleur colonne A Semaine
Dim p As Object 'déclare la variable p (onglet Plannings)
Dim dl As Integer 'décalre la variable dl (Dernière Ligne)
Dim pl As Range 'décalre la variable pl (PLage)
Dim cel As Range 'décalre la variable cel (CELlule)
Dim tl() As Integer 'décalre le tableau de variables indexées tl (Tableau de Lignes)
Dim i As Integer 'décalre la variable i (Incrément)
'Set p = Sheets("Programmation (Ctrl+R)") 'définit l'onglet p
'dl = p.Cells(Application.Rows.Count, 1).End(xlUp).Delete 'supprime dernière ligne avec des formules
Set p = Sheets("Programmation (Ctrl+R)") 'définit l'onglet p
dl = p.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl = p.Range("A2:A" & dl) 'définit la colonne qui est testé
For Each cel In pl 'boucle sur toutes les cellule cel de la plage pl
If cel.Offset(1, 0).Value <> cel.Value Then 'condition 1 : si la valeur de la cellule en dessous de cel est différente de la valeur de cel
ReDim Preserve tl(1, i) 'redimensionne le tableau tl
If tl(0, i) = 0 Then 'condition 2 : si la variable indéxée tl(0,i) est nulle (ligne du début de la plage à colorier)
tl(0, i) = cel.Offset(1, 0).Row 'récupère le numéro de ligne du début de la plage à colorier
Else 'sinon
tl(1, i) = cel.Row 'récupère la ligne de la fin de la plage à colorier
i = i + 1 'incrémente i
End If 'fin de la condition 2
End If 'fin de la condition 1
Next cel 'prochaine cellule de la boucle
For i = 0 To UBound(tl, 2) - 1 'boucle sur toutes les variable indexées
p.Range(p.Cells(tl(0, i), 1), p.Cells(tl(1, i), 1)).Interior.Color = RGB(200, 255, 182) 'colore la plge en vert
Next i 'prochaine variable de la boucle
'changement couleur colonne B Dossier
Dim p2 As Object 'déclare la variable p (onglet Plannings)
Dim dl2 As Integer 'décalre la variable dl (Dernière Ligne)
Dim pl2 As Range 'décalre la variable pl (PLage)
Dim cel2 As Range 'décalre la variable cel (CELlule)
Dim tl2() As Integer 'décalre le tableau de variables indexées tl (Tableau de Lignes)
Dim i2 As Integer 'décalre la variable i (Incrément)
Set p2 = Sheets("Programmation (Ctrl+R)") 'définit l'onglet p
dl2 = p2.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl2 = p2.Range("B2:B" & dl2) 'définit la colonne qui est testé
For Each cel2 In pl2 'boucle sur toutes les cellule cel de la plage pl
If cel2.Offset(1, 0).Value <> cel2.Value Then 'condition 1 : si la valeur de la cellule en dessous de cel est différente de la valeur de cel
ReDim Preserve tl2(1, i2) 'redimensionne le tableau tl
If tl2(0, i2) = 0 Then 'condition 2 : si la variable indéxée tl(0,i) est nulle (ligne du début de la plage à colorier)
tl2(0, i2) = cel2.Offset(1, 0).Row 'récupère le numéro de ligne du début de la plage à colorier
Else 'sinon
tl2(1, i2) = cel2.Row 'récupère la ligne de la fin de la plage à colorier
i2 = i2 + 1 'incrémente i
End If 'fin de la condition 2
End If 'fin de la condition 1
Next cel2 'prochaine cellule de la boucle
For i2 = 0 To UBound(tl2, 2) - 1 'boucle sur toutes les variable indexées
p2.Range(p2.Cells(tl2(0, i2), 2), p2.Cells(tl2(1, i2), 15)).Interior.Color = RGB(182, 254, 255) 'colore la plge en bleu
Next i2 'prochaine variable de la boucle
Dim it As Long
Dim Iprec As Long
Dim strNom As String
it = 1
'Boucle sur tant que la colonne A n'est pas vide
Do While Range("A" & it).Value <> ""
'Si nom de la ligne <> du nom precedent
If strNom <> Range("A" & it).Value Then
If strNom <> "" Then
'insere une ligne
Rows(it).Insert
'Colore la ligne en gris clair
Rows(it).Interior.Color = RGB(236, 236, 236)
'insere la somme QTE
'Range("D" & it).FormulaLocal = "=somme(D" & Iprec & ":D" & it - 1 & ")"
'Range("D" & it).Font.Bold = True
'Range("D" & it).Font.Size = 16
'Range("D" & it).VerticalAlignment = xlTop
'insere la somme TPE
Range("O" & it).FormulaLocal = "=somme(O" & Iprec & ":O" & it - 1 & ")"
Range("O" & it).Font.Bold = True
Range("O" & it).Font.Size = 16
Range("O" & it).VerticalAlignment = xlTop
'Ajoute le nom en A
Range("A" & it).Value = "SEM " + strNom
Range("A" & it).Font.Bold = True
Range("A" & it).RowHeight = 40
Range("A" & it).Font.Size = 16
Range("A" & it).VerticalAlignment = xlTop
'mémorise la ligne de début e la prochaine section
Iprec = it + 1
Else
Iprec = it
End If
strNom = Range("A" & it + 1).Value
End If
it = it + 1
Loop
'insere la dernière formule
'Range("D" & it).FormulaLocal = "=somme(D" & Iprec & ":D" & it - 1 & ")"
'Range("D" & it).Font.Size = 16
'Range("D" & it).VerticalAlignment = xlTop
'Range("A" & it).Value = "SEM " + strNom
'Range("A" & it).Font.Bold = True
'Range("A" & it).RowHeight = 40
'Range("A" & it).Font.Size = 16
'Range("A" & it).VerticalAlignment = xlTop
Range("P1:AW65500").Clear
Range("A2").Select 'deselection
End Sub |