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
| Sub Test()
'Déclaration des variables qui correspondront au nouveau classeur (NvWb) et à la nouvelle feuille (NvSh)
Dim NvWb As Workbook
Dim NvSh As Worksheet
'Création du nouveau workbook et affectation de la nouvelle sheet
Set NvWb = Workbooks.Add
Set NvSh = NvWb.Sheets(1)
'Mise en page de la Nouvelle Sheet (NvSh)
With NvSh
.Name = "Recap" 'je renomme la feuille
.Cells.Interior.Color = RGB(200, 200, 200) 'je passe toutes les cellules de la feuille en gris
.Cells.NumberFormat = "@" 'Pour simplifier la comparaison je passe le format en texte, sinon la copie dans le nouveau fichier crée des virgules au lieu des points...
.Range("A1") = "Récap fait le " & Date & " à " & Time
.Range("B2") = "CODE"
.Range("C2") = "Bloc"
.Range("D2") = "Niveau"
.Range("E2") = "Heures"
.Range("F2") = "Volume coulé"
.Range("B2:F2").Interior.Color = vbYellow 'les entêtes seront en jaune
.Range("B2:F2").Borders.Color = vbBlack 'leurs bordures, en noir
End With
Dim Feuille As Worksheet 'Déclaration d'une variable "Feuille" de type Worksheet
Dim Trouvé As Boolean
For Each Feuille In ThisWorkbook.Sheets 'on analyse toutes les feuilles du classeur
If Feuille.Name Like "J*" Then 'si la feuille analysée est bien un jour (commence par "J") alors :
For ligne = 2 To 26
DerLigRecap = NvSh.Range("B" & Rows.Count).End(xlUp).Row 'on détermine la dernière ligne du récap
Trouvé = False 'on passe cet indicateur à Faux, s'il trouve la ligne déjà renseignée, il deviendra "vrai"
For ligneRecap = 2 To DerLigRecap
If Feuille.Range("B" & ligne).Text = NvSh.Range("B" & ligneRecap).Text _
And Feuille.Range("D" & ligne).Text = NvSh.Range("C" & ligneRecap).Text _
And Feuille.Range("E" & ligne).Text = NvSh.Range("D" & ligneRecap).Text Then
NvSh.Range("E" & ligneRecap) = NvSh.Range("E" & ligneRecap).Value + Feuille.Range("C" & ligne).Value
NvSh.Range("F" & ligneRecap) = NvSh.Range("F" & ligneRecap).Value + Feuille.Range("I" & ligne).Value
Trouvé = True 'comme on a trouvé la ligne, on passe cette variable en "vrai" pour ne pas rajouter les infos en bas du tableau
Exit For 'on sort de la recherche dans le recap
End If
Next ligneRecap 'on passe ici à la prochaine ligne Recap
If Trouvé = False Then 'si on n'a pas trouvé dans le tableau, il faut rajouter ces infos
'si on n'est pas sorti du recap, c'est qu'on n'a pas trouvé de ligne, on en ajoute donc une
NvSh.Range("B" & DerLigRecap + 1) = Feuille.Range("B" & ligne).Text
NvSh.Range("C" & DerLigRecap + 1) = Feuille.Range("D" & ligne).Text
NvSh.Range("D" & DerLigRecap + 1) = Feuille.Range("E" & ligne).Text
NvSh.Range("E" & DerLigRecap + 1) = Feuille.Range("C" & ligne).Text
NvSh.Range("F" & DerLigRecap + 1) = Feuille.Range("I" & ligne).Text
NvSh.Range("B" & DerLigRecap + 1 & ":F" & DerLigRecap + 1).Borders.Color = vbBlack
NvSh.Range("B" & DerLigRecap + 1 & ":F" & DerLigRecap + 1).Interior.Color = vbWhite
End If
Next ligne
End If
Next Feuille
End Sub |
Partager