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
| Sub Macro1()
Dim C As Object 'déclare la variable C (onglet CUMUL)
Dim PL As Range 'déclare la variable PL (PLage)
'attention il y avait un espace avant le premier A : " A AJOUTER", je l'ai supprimé
Dim A As Object 'déclare la variable A (onglet A AJOUTER)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellule)
Dim I As Integer 'déclare la variable I (Incrément)
Dim PLV As Range 'déclare la variable PLV (PLage Visible)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim NM As Integer 'déclare la variable NM (Numéro Minimum)
Dim LI As Integer 'déclare la variable LI (LIgne)
Set C = Sheets("CUMUL") 'définit l'onglet C
Set PL = C.Range("B3").CurrentRegion 'définit la palge PL
Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, 1) 'redéfinit la palge PL (uniquement la première colonne et sans la première ligne)
Set A = Sheets("A AJOUTER") 'définit l'onglet A (Attention à l'espace !)
DL = A.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernièe ligne éditée DL de la colonne 2 (=B) de l'onglet A
TC = A.Range("B4:C" & DL) 'définit le tableau de cellules TC
For I = 1 To UBound(TC, 1) 'boucles 1 :sur toutes les ligne du tableau TC
NM = 10000 'initialise le numéro minimum NM (une valeur forcément supérieure à n'importe quel numéro de voie)
'condition 1 : si il existe au moins une occurrence de la RUE du tableau TC dans la colonne B de l'onglet C
If Not C.Columns(2).Find(TC(I, 1), , xlValues, xlWhole) Is Nothing Then
C.Range("B3").AutoFilter Field:=1, Criteria1:=TC(I, 1) 'filre en B3 la colonne B de l'onglet C avec TC(I,1) = la RUE comme critère
Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit la plage PLV (cellules visibles, non filtrées, de la palge PL)
For Each CEL In PLV.Offset(0, 1) 'boucle 2 : sur toutes les cellules CEL de la plage PLV
If CEL.Value < NM Then 'condition 2 : si la cellule est inférieure à NM
NM = CEL.Value 'redéfinit MN qui vaut la valeur la cellule CEL
LI = CEL.Row 'définit la ligne LI contenant la valeur mninimale
End If 'fin de la condition 2
Next CEL 'prochaine cellule de la boucle 2
If TC(I, 2) <> 0 Then 'condition 3 : si [Appels] est différent de zéro
C.Cells(LI, 4).Interior.ColorIndex = 3 'colore la cellule modifiée de rouge
C.Cells(LI, 4).Value = C.Cells(LI, 4) + TC(I, 2) 'ajoute l'[Appels] au [CUMUL ACTUEL]
End If 'fin de la condition 3
C.Range("B3").AutoFilter 'supprime le filtre automatique
End If 'fin de la condition 1
Next I 'prochaine ligne de la boucle 1
End Sub |
Partager