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
|
'Je ne que l'onglet 1 car strictement indentique pour les autres onglets, avec des noms de colonnes différents.
Sub Comp_1(wb, feuille)
For Each c In feuille.range("A1:AN1")
Select Case (c)
'Je vais parcourir chaque colonne pour en tirer les numéros qui m'intéressent
'Puis je ne parcourerai q'une seule fois mes lignes en leur appliquant les modifications dans chaque colonne.
'Cela me semble plus économique que de parcourir les lignes pour chaque colonne.
Case "Colonne_1"
c.ColumnWidth = 10
Case "Colonne_2"
c.ColumnWidth = 12
Case "Colonne_3"
c.ColumnWidth = 12
Case "Colonne_4_1"
num_colonne_4_1 = c.Column
Case "Colonne 5_1"
num_colonne_5_1 = c.Column
Case "Colonne 6_1"
num_colonne_6_1 = c.Column
Case "Colonne 7_1"
num_colonne_7_1 = c.Column
Case "Colonne 4_2"
num_colonne_4_2 = c.Column
Case "Colonne 5_2"
num_colonne_5_2 = c.Column
Case "Colonne 6_2"
num_colonne_6_2 = c.Column
Case "Colonne 7_2"
num_colonne_7_2 = c.Column
'Les colonnes Modif, contenant Oui ou Non, indiquent si il y a une anomalie (i.e. une différence entrei_1 et i_2).
'Leur affichage ne nous intéresse pas. On tire donc l'information et on les cache.
Case "Modif colonne 4"
num_colonne_modif4 = c.Column
c.Entirecolumn.Hidden = True
Case "Modif colonne 5"
num_colonne_modif5 = c.Column
c.Entirecolumn.Hidden = True
Case "Modif colonne 6"
num_colonne_modif6 = c.Column
c.Entirecolumn.Hidden = True
Case "Modif colonne 7"
num_colonne_modif7 = c.Column
c.Entirecolumn.Hidden = True
Case ""
num_colonne_finale = c.Column - 1
c.ColumnWidth = 15
feuille.Cells(c.Row, c.Column) = "Traité par :"
feuille.Cells(c.Row, c.Column + 1) = "Vraie anomalie ?"
feuille.Cells(c.Row, c.Column + 2) = "Remarques"
num_colonne_ano = c.Column + 1
wb.worksheets(feuille.Name).columns(num_colonne_ano).ColumnWidth = 15
wb.worksheets(feuille.Name).columns(c.Column + 2).ColumnWidth = 40
Exit For
End Select
Next c
'Une fois tous nos numéros de colonnes récupérés, on va appliquer les modifications lignes par ligne.
'On modifie la couleur des colonnes selon qu'elles sont des colonnes i_1 ou i_2
'On ajoute également des couleurs lors d'anomalies i.e. lorsque i_1 différent de i_2
'On traite la première ligne de noms de colonnes à part car affectée uniquement par les deux couleurs.
feuille.range(feuille.Cells(1, num_colonne_4_1), feuille.Cells(1, num_colonne_7_1)).Interior.Color = RGB(242, 220, 219)
feuille.range(feuille.Cells(1, num_colonne_4_2), feuille.Cells(1, num_colonne_finale)).Interior.Color = RGB(220, 230, 241)
feuille.range(feuille.Cells(1, 1), feuille.Cells(1, num_colonne_finale + 3)).Font.Bold = True
'On s'attaque aux autres lignes
L = 2
While feuille.Cells(L, 1).Value <> 0
'Modification de couleur de fond
feuille.range(feuille.Cells(L, num_colonne_4_1), feuille.Cells(L, num_colonne_7_1)).Interior.Color = RGB(242, 220, 219)
feuille.range(feuille.Cells(L, num_colonne_4_2), feuille.Cells(L, num_colonne_finale)).Interior.Color = RGB(220, 230, 241)
'Ajout de la case OUI/NON pour la colonne de "Vraie anomalie ?", où on ne peut répondre
'LIEU DU PROBLEME
With feuille.Cells(L, num_colonne_ano).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="Oui,Non"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
'Modification de colonne 4
If feuille.Cells(L, num_colonne_modif4).Value = "Oui" Then
feuille.Cells(L, num_colonne_4_1).Interior.Color = RGB(230, 184, 183)
feuille.Cells(L, num_colonne_4_2).Interior.Color = RGB(184, 204, 228)
End If
'Modification de colonne 5
If feuille.Cells(L, num_colonne_modif5).Value = "Oui" Then
feuille.Cells(L, num_colonne_5_1).Interior.Color = RGB(230, 184, 183)
feuille.Cells(L, num_colonne_5_2).Interior.Color = RGB(184, 204, 228)
End If
'Modification de colonne 6
If feuille.Cells(L, num_colonne_modif6).Value = "Oui" Then
feuille.Cells(L, num_colonne_6_1).Interior.Color = RGB(230, 184, 183)
feuille.Cells(L, num_colonne_6_2).Interior.Color = RGB(184, 204, 228)
End If
'Modification de colonne 7
If feuille.Cells(L, num_colonne_modif7).Value = "Oui" Then
feuille.Cells(L, num_colonne_7_1).Interior.Color = RGB(230, 184, 183)
feuille.Cells(L, num_colonne_7_2).Interior.Color = RGB(184, 204, 228)
End If
L = L + 1
Wend
'On remonte vers la case A1 pour un plus bel affichage
wb.worksheets(feuille.Name).Activate
wb.worksheets(feuille.Name).range("A1").Select
End Sub |