Sub Récap()
'Récap : nom de ta macro
Dim DerL%, Total%
'Définir les variables. Dire à excel les données que contiendrons ces variables
Application.ScreenUpdating = False
'Dire à excel de figer l'écran. Les informations données par la macro seront misent sur le fichier excel qu'une fois la macro terminé
'Cela permet à la macro de tourner plus vite
'Cela évite de voir ta feuille excel bouger toute seul et clignoter : ça fait mal aux yeux :D
Application.Calculation = xlCalculationManual
'Enlever le "calcul automatique
'Permet ainsi à la macro de tourner encore plus vite. D'autant plus intéressant que ta macro va mettre des tonnes de formules.
With Worksheets("Feuil2")
' Chaque fois qu'il y aura un point devant un code, cela voudra dire qu'on travail sur l'onglet "Feuil2"
' Ainsi ton code est plus court, plus lisible, plus facile à comprendre
DerL = .Range("A65536").End(xlUp).Row - 1
'Dans la variable "DerL" mettre le numéro de la dernière ligne de ton tableau en s'aidant de la colonne A pour la trouver
'(on part donc du principe que pour chaque ligne de ton tableau possède TOUT le temps quelque chose dans la colonne A)
'Ainsi si tu agrandis/diminue le nombre de ligne de ton tableau, la macro s'adaptera toute seul à la taille du tableau
'T'évitant ainsi de modifier à chaque fois ta macro
Total = DerL + 1
'Mettre dans la variable Total le chiffre contenu dans la variable "DerL", à laquelle on ajoute 1
.Range("B3:I" & Total).ClearContents
'Cellule B3 à I (numéro de ligne = dernière ligne de ton tableau + 1) de la "Feuil2" => effacer le contenu
.Range("C3:C" & DerL).Formula = "=SUMPRODUCT((Feuil1!R2C6:R10000C6=RC1)*(Feuil1!R2C5:R10000C5=1))"
'Dans les cellules C3 à C (numéro de ligne = dernière ligne de ton tableau) mettre la formule SOMMEPROD...
'Attention cette formule ne s'adapte pas automatiquement à la taille de ton tableau
.Range("D3:D" & DerL).Formula = "=SUMPRODUCT((Feuil1!R2C6:R10000C6=RC1)*(Feuil1!R2C5:R10000C5=2))"
'Idem mais pour la colonne D
.Range("E3:E" & DerL).Formula = "=SUMPRODUCT((Feuil1!R2C6:R10000C6=RC1)*(Feuil1!R2C5:R10000C5=3))"
'Idem mais pour la colonne E
.Range("G3:G" & DerL).Formula = "=SUMPRODUCT((Feuil1!R2C6:R10000C6=RC1)*(Feuil1!R2C5:R10000C5=1)*(Feuil1!R2C3:R10000C3=""F""))"
.Range("H3:H" & DerL).Formula = "=SUMPRODUCT((Feuil1!R2C6:R10000C6=RC1)*(Feuil1!R2C5:R10000C5=2)*(Feuil1!R2C3:R10000C3=""F""))"
.Range("I3:I" & DerL).Formula = "=SUMPRODUCT((Feuil1!R2C6:R10000C6=RC1)*(Feuil1!R2C5:R10000C5=3)*(Feuil1!R2C3:R10000C3=""F""))"
.Range("B3:B" & DerL).Formula = "=SUM(RC[1]:RC[3])"
.Range("B" & Total & ":I" & Total).Formula = "=SUM(R[-32]C:R[-1]C)"
.Range("F3:F" & DerL).Formula = "=SUM(RC[1]:RC[3])"
.Range("B3:I" & Total).Value = .Range("B3:I" & Total).Value
End With
Application.Calculation = xlCalculationAutomatic
'Réactiver le "calcul automatique" de ton fichier. Permettant ainsi de calculer en UNE fois, l'ensemble de toutes les formules misent grâce à la macro.
Application.ScreenUpdating = True
'Afficher d'un coup toutes les informations sur ton fichier
End Sub